From a6aa37c5024e8fc2a2517c984a2d628c91de1bb9 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 12 Oct 2021 14:31:04 -0500 Subject: [PATCH 001/505] Summit fixes (#1108) * Replace assert with throw exceptions * fix conditional branch instruction conversion to Rose instruction for ppc64le --- dataflowAPI/rose/semantics/SymEvalSemantics.C | 25 +++++++++++-------- dataflowAPI/src/RoseInsnFactory.C | 2 +- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/dataflowAPI/rose/semantics/SymEvalSemantics.C b/dataflowAPI/rose/semantics/SymEvalSemantics.C index 0467fff718..7c3044de9f 100644 --- a/dataflowAPI/rose/semantics/SymEvalSemantics.C +++ b/dataflowAPI/rose/semantics/SymEvalSemantics.C @@ -4,8 +4,10 @@ #include #include "SymEvalSemantics.h" +#include "BaseSemantics2.h" using namespace rose::BinaryAnalysis::InstructionSemantics2; +using RoseException = BaseSemantics::Exception; /////////////////////////////////////////////////////// // StateAST @@ -194,7 +196,8 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTARM64::convert(const RegisterD break; case 128: base = Dyninst::aarch64::q0; break; - default:assert(!"invalid size of RegisterDescriptor!"); + default: + throw RoseException("invalid size of RegisterDescriptor!", nullptr); break; } mreg = Dyninst::MachRegister(base.val() + (minor - armv8_simdfpr_v0)); @@ -267,13 +270,13 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTPPC32::convert(const RegisterD Dyninst::MachRegister base = Dyninst::ppc32::cr0l; mreg = Dyninst::MachRegister(base.val() + offset); } else { - assert(!"bad cr register size"); + throw RoseException("bad cr register size", nullptr); } } break; case powerpc_regclass_fpscr: - assert(!"not implemented register class fpscr"); + throw RoseException("not implemented register class fpscr", nullptr); break; case powerpc_regclass_spr: { @@ -298,12 +301,12 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTPPC32::convert(const RegisterD mreg = Dyninst::ppc32::dec; break; default: - assert(!"not implemented special register"); + throw RoseException("not implemented special register", nullptr); } } break; case powerpc_regclass_tbr: - assert(!"not implemented regclass tbr"); + throw RoseException("not implemented regclass tbr", nullptr); break; case powerpc_regclass_msr: @@ -311,7 +314,7 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTPPC32::convert(const RegisterD break; case powerpc_regclass_sr: - assert(!"not implemented regclass sr"); + throw RoseException("not implemented regclass sr", nullptr); break; case powerpc_regclass_iar: @@ -361,13 +364,13 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTPPC64::convert(const RegisterD Dyninst::MachRegister base = Dyninst::ppc64::cr0l; mreg = Dyninst::MachRegister(base.val() + offset); } else { - assert(!"bad cr register size"); + throw RoseException("bad cr register size", nullptr); } } break; case powerpc_regclass_fpscr: - assert(!"not implemented register class fpscr"); + throw RoseException("not implemented register class fpscr", nullptr); break; case powerpc_regclass_spr: { @@ -392,12 +395,12 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTPPC64::convert(const RegisterD mreg = Dyninst::ppc64::dec; break; default: - assert(!"not implemented special register"); + throw RoseException("not implemented special register", nullptr); } } break; case powerpc_regclass_tbr: - assert(!"not implemented regclass tbr"); + throw RoseException("not implemented regclass tbr", nullptr); break; case powerpc_regclass_msr: @@ -405,7 +408,7 @@ Dyninst::Absloc SymEvalSemantics::RegisterStateASTPPC64::convert(const RegisterD break; case powerpc_regclass_sr: - assert(!"not implemented regclass sr"); + throw RoseException("not implemented regclass sr", nullptr); break; case powerpc_regclass_iar: diff --git a/dataflowAPI/src/RoseInsnFactory.C b/dataflowAPI/src/RoseInsnFactory.C index b0120f5e90..dca41564ab 100644 --- a/dataflowAPI/src/RoseInsnFactory.C +++ b/dataflowAPI/src/RoseInsnFactory.C @@ -316,7 +316,7 @@ bool RoseInsnPPCFactory::handleSpecialCases(entryID iapi_opcode, // It looks like the ROSE semantics code will infer the target from // the bo field. So, what is passed in as the third operands does not matter - if(branch_target) { + if(power_op_b == iapi_opcode || power_op_bc == iapi_opcode) { rose_operands->append_operand(new SgAsmDoubleWordValueExpression(branch_target)); } else if(power_op_bcctr == iapi_opcode) { rose_operands->append_operand(new SgAsmPowerpcRegisterReferenceExpression(powerpc_regclass_spr, powerpc_spr_ctr)); From 6f9683ec1a6b289271b0d1e73a024b65644d5494 Mon Sep 17 00:00:00 2001 From: Zixian Liu Date: Wed, 20 Oct 2021 01:06:28 +0800 Subject: [PATCH 002/505] Remove boost_system linking (#1112) boost_system is header-only in 1.69.0 which is the min version required by dyninst. Signed-off-by: sdlzx --- cmake/Boost.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Boost.cmake b/cmake/Boost.cmake index 231f3313dd..727d04a24c 100644 --- a/cmake/Boost.cmake +++ b/cmake/Boost.cmake @@ -132,7 +132,7 @@ set(Boost_NO_BOOST_CMAKE ON) # The required Boost library components # NB: These are just the ones that require compilation/linking # This should _not_ be a cache variable -set(_boost_components atomic chrono date_time filesystem system thread timer) +set(_boost_components atomic chrono date_time filesystem thread timer) find_package(Boost ${Boost_MIN_VERSION} COMPONENTS ${_boost_components}) From 66ee56976c6a416a3c60313c4bd6f84bcd22ed4d Mon Sep 17 00:00:00 2001 From: kupsch Date: Fri, 22 Oct 2021 15:10:26 -0500 Subject: [PATCH 003/505] update minimum boost version to 1.70.0 (#1117) --- cmake/Boost.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Boost.cmake b/cmake/Boost.cmake index 727d04a24c..53fe321ef4 100644 --- a/cmake/Boost.cmake +++ b/cmake/Boost.cmake @@ -51,7 +51,7 @@ if(Boost_FOUND) endif() # Need at least Boost-1.67 because of deprecated headers -set(_boost_min_version 1.67.0) +set(_boost_min_version 1.70.0) # Provide a default, if the user didn't specify set(Boost_MIN_VERSION ${_boost_min_version} CACHE STRING "Minimum Boost version") From 5e142effcd91f552aad8f98c075d40c7ae017f98 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 19 Oct 2021 13:46:44 -0500 Subject: [PATCH 004/505] Remove stabs from SymtabAPI --- symtabAPI/CMakeLists.txt | 1 - symtabAPI/h/Collections.h | 2 +- symtabAPI/h/Symbol.h | 3 - symtabAPI/h/Symtab.h | 4 - symtabAPI/h/Type.h | 2 - symtabAPI/src/Object-elf.C | 946 +------------- symtabAPI/src/Object-elf.h | 200 +-- symtabAPI/src/Symtab.C | 13 +- symtabAPI/src/parseStab.C | 2423 ------------------------------------ 9 files changed, 5 insertions(+), 3589 deletions(-) delete mode 100644 symtabAPI/src/parseStab.C diff --git a/symtabAPI/CMakeLists.txt b/symtabAPI/CMakeLists.txt index 1f1f2027f7..f0d9e11c10 100644 --- a/symtabAPI/CMakeLists.txt +++ b/symtabAPI/CMakeLists.txt @@ -42,7 +42,6 @@ set (SRC_LIST ${SRC_LIST} src/Archive.C src/Archive-elf.C src/parseDwarf.C - src/parseStab.C src/LinkMap.C src/emitElf.C src/emitElfStatic.C diff --git a/symtabAPI/h/Collections.h b/symtabAPI/h/Collections.h index 55257a6854..0e46630729 100644 --- a/symtabAPI/h/Collections.h +++ b/symtabAPI/h/Collections.h @@ -131,7 +131,7 @@ class SYMTAB_EXPORT typeCollection /* Some debug formats allow forward references. Rather than fill in forward in a second pass, generate placeholder types, and fill them in as we go. Because we require - One True Pointer for each type (in parseStab.C), when + One True Pointer for each type, when updating a type, return that One True Pointer. */ boost::shared_ptr findOrCreateType( const int ID, Type::do_share_t ); Type* findOrCreateType(const int i) { return findOrCreateType(i, Type::share).get(); } diff --git a/symtabAPI/h/Symbol.h b/symtabAPI/h/Symbol.h index f9318e8b4a..e4e8b29830 100644 --- a/symtabAPI/h/Symbol.h +++ b/symtabAPI/h/Symbol.h @@ -77,9 +77,6 @@ class SYMTAB_EXPORT Symbol : public AnnotatableSparse friend class Aggregate; friend class relocationEntry; - friend std::string parseStabString(Module *, int linenum, char *, int, - typeCommon *); - public: struct Ptr { diff --git a/symtabAPI/h/Symtab.h b/symtabAPI/h/Symtab.h index 8a7730ef06..1c1815fc7f 100644 --- a/symtabAPI/h/Symtab.h +++ b/symtabAPI/h/Symtab.h @@ -625,10 +625,6 @@ class SYMTAB_EXPORT Symtab : public LookupInterface, int nlines_; unsigned long fdptr_; char *lines_; - char *stabstr_; - int nstabs_; - void *stabs_; - char *stringpool_; //Relocation sections bool hasRel_; diff --git a/symtabAPI/h/Type.h b/symtabAPI/h/Type.h index b827802e66..3349c91134 100644 --- a/symtabAPI/h/Type.h +++ b/symtabAPI/h/Type.h @@ -111,8 +111,6 @@ SYMTAB_EXPORT const char *visibility2Str(visibility_t v); class SYMTAB_EXPORT Type : public TYPE_ANNOTATABLE_CLASS { friend class typeCollection; - friend std::string parseStabString(Module *, int linenum, char *, int, - typeCommon*); static Type* upgradePlaceholder(Type *placeholder, Type *new_type); boost::weak_ptr self_; // For carrying the reference count across diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 822eb588d1..7a52479f7e 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -86,7 +86,6 @@ bool Object::truncateLineFilenames = false; string symt_current_func_name; string symt_current_mangled_func_name; -Symbol *symt_current_func = NULL; std::vector opdsymbols_; @@ -297,10 +296,6 @@ const char *BSS_NAME = ".bss"; const char *SYMTAB_NAME = ".symtab"; const char *STRTAB_NAME = ".strtab"; const char *SYMTAB_SHNDX_NAME = ".symtab_shndx"; -const char *STAB_NAME = ".stab"; -const char *STABSTR_NAME = ".stabstr"; -const char *STAB_INDX_NAME = ".stab.index"; -const char *STABSTR_INDX_NAME = ".stab.indexstr"; const char *COMMENT_NAME = ".comment"; const char *OPD_NAME = ".opd"; // PPC64 Official Procedure Descriptors // sections from dynamic executables and shared objects @@ -336,8 +331,6 @@ set debugInfoSections = list_of(string(SYMTAB_NAME)) bool Object::loaded_elf(Offset &txtaddr, Offset &dataddr, Elf_X_Shdr *&bssscnp, Elf_X_Shdr *&symscnp, Elf_X_Shdr *&strscnp, - Elf_X_Shdr *&stabscnp, Elf_X_Shdr *&stabstrscnp, - Elf_X_Shdr *&stabs_indxcnp, Elf_X_Shdr *&stabstrs_indxcnp, Elf_X_Shdr *&rel_plt_scnp, Elf_X_Shdr *&plt_scnp, Elf_X_Shdr *&got_scnp, Elf_X_Shdr *&dynsym_scnp, Elf_X_Shdr *&dynstr_scnp, Elf_X_Shdr *&dynamic_scnp, @@ -405,12 +398,6 @@ bool Object::loaded_elf(Offset &txtaddr, Offset &dataddr, rel_addr_ = 0; rel_size_ = 0; rel_entry_size_ = 0; - stab_off_ = 0; - stab_size_ = 0; - stabstr_off_ = 0; - stab_indx_off_ = 0; - stab_indx_size_ = 0; - stabstr_indx_off_ = 0; dwarvenDebugInfo = false; txtaddr = 0; @@ -750,22 +737,7 @@ bool Object::loaded_elf(Offset &txtaddr, Offset &dataddr, strscnp = scnp; strtab_addr_ = scn.sh_addr(); } - } else if (strcmp(name, STAB_INDX_NAME) == 0) { - stabs_indxcnp = scnp; - stab_indx_off_ = scn.sh_offset(); - stab_indx_size_ = scn.sh_size(); - } else if (strcmp(name, STABSTR_INDX_NAME) == 0) { - stabstrs_indxcnp = scnp; - stabstr_indx_off_ = scn.sh_offset(); - } else if (strcmp(name, STAB_NAME) == 0) { - stabscnp = scnp; - stab_off_ = scn.sh_offset(); - stab_size_ = scn.sh_size(); - } else if (strcmp(name, STABSTR_NAME) == 0) { - stabstrscnp = scnp; - stabstr_off_ = scn.sh_offset(); - } - else if ((secAddrTagMapping.find(scn.sh_addr()) != secAddrTagMapping.end()) && + } else if ((secAddrTagMapping.find(scn.sh_addr()) != secAddrTagMapping.end()) && secAddrTagMapping[scn.sh_addr()] == DT_JMPREL) { rel_plt_scnp = scnp; rel_plt_addr_ = scn.sh_addr(); @@ -1483,10 +1455,6 @@ void Object::load_object(bool alloc_syms) { Elf_X_Shdr *bssscnp = 0; Elf_X_Shdr *symscnp = 0; Elf_X_Shdr *strscnp = 0; - Elf_X_Shdr *stabscnp = 0; - Elf_X_Shdr *stabstrscnp = 0; - Elf_X_Shdr *stabs_indxcnp = 0; - Elf_X_Shdr *stabstrs_indxcnp = 0; Offset txtaddr = 0; Offset dataddr = 0; Elf_X_Shdr *rel_plt_scnp = 0; @@ -1513,7 +1481,6 @@ void Object::load_object(bool alloc_syms) { // EEL, added one more parameter if (!loaded_elf(txtaddr, dataddr, bssscnp, symscnp, strscnp, - stabscnp, stabstrscnp, stabs_indxcnp, stabstrs_indxcnp, rel_plt_scnp, plt_scnp, got_scnp, dynsym_scnp, dynstr_scnp, dynamic_scnp, eh_frame_scnp, gcc_except, interp_scnp, opd_scnp, symtab_shndx_scnp, true)) { @@ -1547,8 +1514,7 @@ void Object::load_object(bool alloc_syms) { interpreter_name_ = (char *) interp_scnp->get_data().d_buf(); } - // global symbols are put in global_symbols. Later we read the - // stab section to find the module to where they belong. + // global symbols are put in global_symbols. // Experiment : lets try to be a bit more intelligent about // how we initially size the global_symbols table. // dictionary_lite takes an initial # of bins (2nd param), @@ -1575,12 +1541,6 @@ void Object::load_object(bool alloc_syms) { no_of_symbols_ = nsymbols(); // try to resolve the module names of global symbols - // Sun compiler stab.index section - fix_global_symbol_modules_static_stab(stabs_indxcnp, stabstrs_indxcnp); - - // STABS format (.stab section) - fix_global_symbol_modules_static_stab(stabscnp, stabstrscnp); - // DWARF format (.debug_info section) fix_global_symbol_modules_static_dwarf(); @@ -2424,224 +2384,6 @@ bool Object::fix_global_symbol_modules_static_dwarf() #endif // cap_dwarf -/******************************************************** - * - * For object files only.... - * read the .stab section to find the module of global symbols - * - ********************************************************/ - -bool Object::fix_global_symbol_modules_static_stab(Elf_X_Shdr *stabscnp, Elf_X_Shdr *stabstrscnp) { - // Read the stab section to find the module of global symbols. - // The symbols appear in the stab section by module. A module begins - // with a symbol of type N_UNDF and ends with a symbol of type N_ENDM. - // All the symbols in between those two symbols belong to the module. - - if (!stabscnp || !stabstrscnp) return false; - - Elf_X_Data stabdata = stabscnp->get_data(); - Elf_X_Data stabstrdata = stabstrscnp->get_data(); - stab_entry *stabptr = NULL; - - if (!stabdata.isValid() || !stabstrdata.isValid()) return false; - - switch (addressWidth_nbytes) { - case 4: - stabptr = new stab_entry_32(stabdata.d_buf(), - stabstrdata.get_string(), - stabscnp->sh_size() / sizeof(stab32)); - break; - - case 8: - stabptr = new stab_entry_64(stabdata.d_buf(), - stabstrdata.get_string(), - stabscnp->sh_size() / sizeof(stab64)); - break; - }; - - const char *next_stabstr = stabptr->getStringBase(); - string module = "DEFAULT_MODULE"; - - // the stabstr contains one string table for each module. - // stabstr_offset gives the offset from the begining of stabstr of the - // string table for the current module. - - bool is_fortran = false; // is the current module fortran code? - - for (unsigned i = 0; i < stabptr->count(); i++) { - switch (stabptr->type(i)) { - case N_UNDF: /* start of object file */ - stabptr->setStringBase(next_stabstr); - next_stabstr = stabptr->getStringBase() + stabptr->val(i); - break; - - case N_ENDM: /* end of object file */ - is_fortran = false; - module = "DEFAULT_MODULE"; - break; - - case N_SO: /* compilation source or file name */ - if ((stabptr->desc(i) == N_SO_FORTRAN) || (stabptr->desc(i) == N_SO_F90)) - is_fortran = true; - - module = string(stabptr->name(i)); - break; - - case N_ENTRY: /* fortran alternate subroutine entry point */ - case N_GSYM: /* global symbol */ - // the name string of a function or object appears in the stab - // string table as : - // where is a one char code. - // we must extract the name and descriptor from the string - { - const char *p = stabptr->name(i); - // bperr("got %d type, str = %s\n", stabptr->type(i), p); - // if (stabptr->type(i) == N_FUN && strlen(p) == 0) { - - if (strlen(p) == 0) { - // GNU CC 2.8 and higher associate a null-named function - // entry with the end of a function. Just skip it. - break; - } - - const char *q = strchr(p, ':'); - unsigned len; - - if (q) { - len = q - p; - } else { - len = strlen(p); - } - - if (len == 0) { - // symbol name is empty.Skip it.- 02/12/07 -Giri - break; - } - - char *sname = new char[len + 1]; - strncpy(sname, p, len); - sname[len] = 0; - - string SymName = string(sname); - - // q points to the ':' in the name string, so - // q[1] is the symbol descriptor. We must check the symbol descriptor - // here to skip things we are not interested in, such as prototypes. - - bool res = symbols_.contains(SymName); - - if (!res && is_fortran) { - // Fortran symbols usually appear with an '_' appended in .symtab, - // but not on .stab - SymName += "_"; - res = symbols_.contains(SymName); - } - - if (res && (q == 0 || q[1] != SD_PROTOTYPE)) { - unsigned int count = 0; - dyn_c_hash_map>::const_accessor ca; - if (!symbols_.find(ca, SymName)) { - assert(!"symbols_.find(ca, SymName)"); - } - const std::vector &syms = ca->second; - - /* If there's only one, apply regardless. */ - if (syms.size() == 1) { - // TODO: set module - // symbols_[SymName][0]->setModuleName(module); - } else { - for (unsigned int j = 0; j < syms.size(); j++) { - if (syms[j]->getLinkage() == Symbol::SL_GLOBAL) { - // TODO: set module - // symbols_[SymName][j]->setModuleName(module); - count++; - } - } - } - } - break; - } - case N_FUN: - /* function */ - { - const char *p = stabptr->name(i); - - if (strlen(p) == 0) { - // Rumours are that GNU CC 2.8 and higher associate a - // null-named function entry with the end of a - // function. Just skip it. - break; - } - - const char *q = strchr(p, ':'); - - if (q == 0) { - // bperr( "Unrecognized stab format: %s\n", p); - // Happens with the Solaris native compiler (.xstabs entries?) - break; - } - - if (q[1] == SD_PROTOTYPE) { - // We see a prototype, skip it - break; - } - - unsigned long entryAddr = stabptr->val(i); - - if (entryAddr == 0) { - // The function stab doesn't contain a function address - // (happens with the Solaris native compiler). We have to - // look up the symbol by its name. That's unfortunate, since - // names may not be unique and we may end up assigning a wrong - // module name to the symbol. - unsigned len = q - p; - if (len == 0) { - // symbol name is empty.Skip it.- 02/12/07 -Giri - break; - } - - char *sname = new char[len + 1]; - strncpy(sname, p, len); - sname[len] = 0; - string nameFromStab = string(sname); - delete[] sname; - - dyn_c_hash_map>::const_accessor ca; - if (!symbols_.find(ca, nameFromStab)) { - assert(!"symbols_.find(ca, nameFromStab)"); - } - for (unsigned j = 0; j < ca->second.size(); j++) { - symsToModules_.insert({ca->second[j], module}); - } - } else { - if (!symsByOffset_.contains(entryAddr)) { - //bperr( "fix_global_symbol_modules_static_stab " - // "can't find address 0x%lx of STABS entry %s\n", entryAddr, p); - break; - } - dyn_c_hash_map>::const_accessor ca; - if (!symsByOffset_.find(ca, entryAddr)) { - assert(!"symsByOffset_.find(ca, entryAddr)"); - } - for (unsigned j = 0; j < ca->second.size(); j++) { - symsToModules_.insert({ca->second[j], module}); - } - } - break; - } - - default: - /* ignore other entries */ - break; - } - } - - delete stabptr; - - return true; -} - - // find_code_and_data(): populates the following members: // code_ptr_, code_off_, code_len_ // data_ptr_, data_off_, data_len_ @@ -2709,28 +2451,6 @@ const char *Object::elf_vaddr_to_ptr(Offset vaddr) const { return ret; } -stab_entry *Object::get_stab_info() const { - char *file_ptr = (char *) mf->base_addr(); - - // check that file has .stab info - if (stab_off_ && stab_size_ && stabstr_off_) { - switch (addressWidth_nbytes) { - case 4: // 32-bit object - return new stab_entry_32(file_ptr + stab_off_, - file_ptr + stabstr_off_, - stab_size_ / sizeof(stab32)); - break; - case 8: // 64-bit object - return new stab_entry_64(file_ptr + stab_off_, - file_ptr + stabstr_off_, - stab_size_ / sizeof(stab64)); - break; - }; - } - - return new stab_entry_64(); -} - Object::Object(MappedFile *mf_, bool, void (*err_func)(const char *), bool alloc_syms, Symtab *st) : AObject(mf_, err_func, st), @@ -2752,8 +2472,6 @@ Object::Object(MappedFile *mf_, bool, void (*err_func)(const char *), rel_plt_addr_(0), rel_plt_size_(0), rel_plt_entry_size_(0), rel_addr_(0), rel_size_(0), rel_entry_size_(0), opd_addr_(0), opd_size_(0), - stab_off_(0), stab_size_(0), stabstr_off_(0), - stab_indx_off_(0), stab_indx_size_(0), stabstr_indx_off_(0), dwarvenDebugInfo(false), loadAddress_(0), entryAddress_(0), interpreter_name_(NULL), @@ -2891,9 +2609,6 @@ const ostream &Object::dump_state_info(ostream &s) s << " rel_plt_entry_size_ = " << rel_plt_entry_size_ << endl; s << " rel_size_ = " << rel_size_ << endl; s << " rel_entry_size_ = " << rel_entry_size_ << endl; - s << " stab_off_ = " << stab_off_ << endl; - s << " stab_size_ = " << stab_size_ << endl; - s << " stabstr_off_ = " << stabstr_off_ << endl; s << " dwarvenDebugInfo = " << dwarvenDebugInfo << endl; // and dump the relocation table.... @@ -3487,166 +3202,8 @@ ObjectType Object::objType() const { void Object::getModuleLanguageInfo(dyn_hash_map *mod_langs) { string working_module; const char *ptr; - // check .stabs section to get language info for modules: - // int stab_nsyms; - // char *stabstr_nextoffset; - // const char *stabstrs = 0; - string mod_string; - // This ugly flag is set when certain (sun) fortran compilers are detected. - // If it is set at any point during the following iteration, this routine - // ends with "backtrack mode" and reiterates through all chosen languages, changing - // lang_Fortran to lang_Fortran_with_pretty_debug. - // - // This may be ugly, but it is set up this way since the information that is used - // to determine whether this flag is set comes from the N_OPT field, which - // seems to come only once per image. The kludge is that we assume that all - // fortran sources in the module have this property (they probably do, but - // could conceivably be mixed (???)). - int fortran_kludge_flag = 0; - - // "state variables" we use to accumulate potentially useful information - // A final module<->language decision is not made until we have arrived at the - // next module entry, at which point we use any and all info we have to - // make the most sensible guess - supportedLanguages working_lang = lang_Unknown; - char *working_options = NULL; - const char *working_name = NULL; - - stab_entry *stabptr = NULL; - const char *next_stabstr = NULL; -#if defined(TIMED_PARSE) - struct timeval starttime; - gettimeofday(&starttime, NULL); -#endif - - //Using the Object to get the pointers to the .stab and .stabstr - // XXX - Elf32 specific needs to be in seperate file -- jkh 3/18/99 - stabptr = get_stab_info(); - next_stabstr = stabptr->getStringBase(); - - for (unsigned int i = 0; i < stabptr->count(); i++) { - if (stabptr->type(i) == N_UNDF) {/* start of object file */ - /* value contains offset of the next string table for next module */ - // assert(stabptr->nameIdx(i) == 1); - stabptr->setStringBase(next_stabstr); - next_stabstr = stabptr->getStringBase() + stabptr->val(i); - } else if (stabptr->type(i) == N_OPT) { - // We can use the compiler option string (in a pinch) to guess at the source file language - // There is possibly more useful information encoded somewhere around here, but I lack - // an immediate reference.... - if (working_name) - working_options = const_cast(stabptr->name(i)); - } else if ((stabptr->type(i) == N_SO) || (stabptr->type(i) == N_ENDM)) { /* compilation source or file name */ - // We have arrived at the next source file, finish up with the last one and reset state - // before starting next - - - // XXXXXXXXXXX This block is mirrored near the end of routine, if you edit it, - // XXXXXXXXXXX change it there too. - if (working_name) { - working_lang = pickLanguage(working_module, working_options, working_lang); - if (working_lang == lang_Fortran_with_pretty_debug) - fortran_kludge_flag = 1; - (*mod_langs)[working_module] = working_lang; - - } - // XXXXXXXXXXX - - // reset "state" here - working_lang = lang_Unknown; - working_options = NULL; - - // Now: out with the old, in with the new - - if (stabptr->type(i) == N_ENDM) { - // special case: - // which is most likely both broken (and ignorable ???) - working_name = "DEFAULT_MODULE"; - } else { - working_name = stabptr->name(i); - ptr = strrchr(working_name, '/'); - if (ptr) { - ptr++; - working_name = ptr; - } - } - working_module = string(working_name); - - if ((mod_langs->find(working_module) != mod_langs->end()) && (*mod_langs)[working_module] != lang_Unknown) { - // we already have a module with this name in the map. If it has been given - // a language assignment (not lang_Unknown), we can just skip ahead - working_name = NULL; - working_options = NULL; - continue; - } else { - //cerr << __FILE__ << __LINE__ << ": Module: " <desc(i) << endl; - switch (stabptr->desc(i)) { - case N_SO_FORTRAN: - working_lang = lang_Fortran; - break; - case N_SO_F90: - working_lang = lang_Fortran; // not sure if this should be different from N_SO_FORTRAN - break; - case N_SO_AS: - working_lang = lang_Assembly; - break; - case N_SO_ANSI_C: - case N_SO_C: - working_lang = lang_C; - break; - case N_SO_CC: - working_lang = lang_CPlusPlus; - break; - default: - // currently uncovered options are lang_CMFortran, and lang_GnuCPlusPlus - // do we need to make this kind of distinction here? - working_lang = lang_Unknown; - break; - } - - } - } // end N_SO section - } // for loop - - // Need to make sure we finish up with the module we were last collecting information - // about - - // XXXXXXXXXXX see note above (find the X's) - if (working_name) { - working_lang = pickLanguage(working_module, working_options, working_lang); - if (working_lang == lang_Fortran_with_pretty_debug) - fortran_kludge_flag = 1; - (*mod_langs)[working_module] = working_lang; - } - // XXXXXXXXXXX - - if (fortran_kludge_flag) { - // XXX This code does not appear to be used anymore?? - // go through map and change all lang_Fortran to lang_Fortran_with_pretty_symtab - dyn_hash_map::iterator iter = (*mod_langs).begin(); - string aname; - supportedLanguages alang; - for (; iter != (*mod_langs).end(); iter++) { - aname = iter->first; - alang = iter->second; - if (lang_Fortran == alang) { - (*mod_langs)[aname] = lang_Fortran_with_pretty_debug; - } - } - } -#if defined(TIMED_PARSE) - struct timeval endtime; - gettimeofday(&endtime, NULL); - unsigned long lstarttime = starttime.tv_sec * 1000 * 1000 + starttime.tv_usec; - unsigned long lendtime = endtime.tv_sec * 1000 * 1000 + endtime.tv_usec; - unsigned long difftime = lendtime - lstarttime; - double dursecs = difftime/(1000 ); - cout << __FILE__ << ":" << __LINE__ <<": getModuleLanguageInfo took "<type_dbg(); @@ -3792,191 +3349,6 @@ const char *Object::interpreter_name() const { return interpreter_name_; } -/* Parse everything in the file on disk, and cache that we've done so, - because our modules may not bear any relation to the name source files. */ -void Object::parseStabFileLineInfo() { - static dyn_hash_map haveParsedFileMap; - - /* We haven't parsed this file already, so iterate over its stab entries. */ - - stab_entry *stabEntry = get_stab_info(); - if (stabEntry == NULL) return; - const char *nextStabString = stabEntry->getStringBase(); - - const char *currentSourceFile = NULL; - const char *moduleName = NULL; - Function *currentFunction = NULL; - Offset currentAddress = 0; - unsigned currentLineBase = 0; - unsigned functionLineToPossiblyAdd = 0; - - //Offset baseAddress = getBaseAddress(); - LineInformation *li_for_module = NULL; - - for (unsigned int i = 0; i < stabEntry->count(); i++) { - switch (stabEntry->type(i)) { - case N_UNDF: /* start of an object file */ - { - stabEntry->setStringBase(nextStabString); - nextStabString = stabEntry->getStringBase() + stabEntry->val(i); - - currentSourceFile = NULL; - } - break; - - case N_SO: /* compilation source or file name */ - { - const char *sourceFile = stabEntry->name(i); - currentSourceFile = strrchr(sourceFile, '/'); - - if (currentSourceFile == NULL) { - currentSourceFile = sourceFile; - } else { - ++currentSourceFile; - } - Module *mod; - - moduleName = currentSourceFile; - if (!associated_symtab->findModuleByName(mod, moduleName)) { - mod = associated_symtab->getDefaultModule(); - } - li_for_module = mod->getLineInformation(); - if (!li_for_module) { - li_for_module = new LineInformation; - mod->setLineInfo(li_for_module); - } - - } - break; - - case N_SOL: /* file name (possibly an include file) */ - { - const char *sourceFile = stabEntry->name(i); - currentSourceFile = strrchr(sourceFile, '/'); - if (currentSourceFile == NULL) { - currentSourceFile = sourceFile; - } else { - ++currentSourceFile; - } - - } - break; - - case N_FUN: /* a function */ - { - if (*stabEntry->name(i) == 0) { - currentFunction = NULL; - currentLineBase = 0; - break; - } /* end if the N_FUN is an end-of-function-marker. */ - - std::vector funcs; - char stringbuf[2048]; - const char *stabstr = stabEntry->name(i); - unsigned iter = 0; - - while (iter < 2048) { - char c = stabstr[iter]; - - if ((c == ':') || (c == '\0')) { - //stabstrs use ':' as delimiter - stringbuf[iter] = '\0'; - break; - } - - stringbuf[iter] = c; - - iter++; - } - - if (iter >= 2047) { - create_printf("%s[%d]: something went horribly awry\n", FILE__, __LINE__); - continue; - } else { - switch (stabstr[iter + 1]) { - case 'F': - case 'f': - // A "good" function - break; - case 'P': - case 'p': - // A prototype function? need to discard - continue; - break; - default: - continue; - break; - }; - } - - if (!associated_symtab->findFunctionsByName(funcs, std::string(stringbuf)) - || !funcs.size()) { - continue; - } - - currentFunction = funcs[0]; - currentLineBase = stabEntry->desc(i); - functionLineToPossiblyAdd = currentLineBase; - - if (!currentFunction) continue; - currentAddress = currentFunction->getOffset(); - - } - break; - - case N_SLINE: { - unsigned current_col = 0; - - if (!currentLineBase) { - continue; - } - - unsigned newLineSpec = stabEntry->desc(i); - - // Addresses specified in SLINEs are relative to the beginning of the fn - Offset newLineAddress = stabEntry->val(i) + currentFunction->getOffset(); - - if (newLineAddress <= currentAddress) { - continue; - } - - // If we just got our first N_SLINE after a function definition - // its possible that the line number specified in the function - // definition was less than the line number that we are currently on - // If so, add an additional line number entry that encompasses - // the line number of the original function definition in addition - // to this SLINE ( use the same address range) - - if (functionLineToPossiblyAdd) { - if (functionLineToPossiblyAdd < newLineSpec) { - if (li_for_module) - li_for_module->addLine(currentSourceFile, - functionLineToPossiblyAdd, - current_col, currentAddress, - newLineAddress); - } - - functionLineToPossiblyAdd = 0; - } - - if (li_for_module) - li_for_module->addLine(currentSourceFile, newLineSpec, - current_col, currentAddress, - newLineAddress); - - currentAddress = newLineAddress; - currentLineBase = newLineSpec + 1; - - } - break; - - } /* end switch on the ith stab entry's type */ - - } /* end iteration over stab entries. */ - - // haveParsedFileMap[ key ] = true; -} /* end parseStabFileLineInfo() */ - class open_statement { public: open_statement() { reset(); } @@ -4391,7 +3763,6 @@ void Object::parseDwarfFileLineInfo() void Object::parseFileLineInfo() { if (parsedAllLineInfo) return; - parseStabFileLineInfo(); parseDwarfFileLineInfo(); parsedAllLineInfo = true; @@ -4403,7 +3774,6 @@ void Object::parseTypeInfo() { gettimeofday(&starttime, NULL); #endif - parseStabTypes(); Dwarf **typeInfo = dwarf->type_dbg(); if (!typeInfo) return; DwarfWalker walker(associated_symtab, *typeInfo); @@ -4420,318 +3790,6 @@ void Object::parseTypeInfo() { #endif } -void Object::parseStabTypes() { - types_printf("Entry to parseStabTypes for %s\n", associated_symtab->name().c_str()); - stab_entry *stabptr = NULL; - const char *next_stabstr = NULL; - - unsigned i; - char *modName = NULL; - string temp; - char *ptr = NULL, *ptr2 = NULL, *ptr3 = NULL; - bool parseActive = false; - - std::string *currentFunctionName = NULL; - Symbol *commonBlockVar = NULL; - string *commonBlockName = NULL; - boost::shared_ptr commonBlock = NULL; - - Module *mod; - typeCollection *tc = NULL; - -#if defined(TIMED_PARSE) - struct timeval starttime; - gettimeofday(&starttime, NULL); - unsigned int pss_count = 0; - double pss_dur = 0; - unsigned int src_count = 0; - double src_dur = 0; - unsigned int fun_count = 0; - double fun_dur = 0; - struct timeval t1, t2; -#endif - - - stabptr = get_stab_info(); - if (!stabptr) { - types_printf("\tWarning: no stab ptr, returning immediately\n"); - return; - } - - //Using the Object to get the pointers to the .stab and .stabstr - // XXX - Elf32 specific needs to be in seperate file -- jkh 3/18/99 - next_stabstr = stabptr->getStringBase(); - types_printf("\t Parsing %lu stab entries\n", stabptr->count()); - for (i = 0; i < stabptr->count(); i++) { - switch (stabptr->type(i)) { - case N_UNDF: /* start of object file */ - /* value contains offset of the next string table for next module */ - // assert(stabptr->nameIdx(i) == 1); - stabptr->setStringBase(next_stabstr); - next_stabstr = stabptr->getStringBase() + stabptr->val(i); - - //N_UNDF is the start of object file. It is time to - //clean source file name at this moment. - /* - if(currentSourceFile){ - delete currentSourceFile; - currentSourceFile = NULL; - delete absoluteDirectory; - absoluteDirectory = NULL; - delete currentFunctionName; - currentFunctionName = NULL; - currentFileInfo = NULL; - currentFuncInfo = NULL; - } - */ - break; - - case N_ENDM: /* end of object file */ - break; - - case N_SO: /* compilation source or file name */ - /* bperr("Resetting CURRENT FUNCTION NAME FOR NEXT OBJECT FILE\n");*/ -#ifdef TIMED_PARSE - src_count++; - gettimeofday(&t1, NULL); -#endif - symt_current_func_name = ""; // reset for next object file - symt_current_mangled_func_name = ""; // reset for next object file - symt_current_func = NULL; - - modName = const_cast(stabptr->name(i)); - // cerr << "checkpoint B" << endl; - ptr = strrchr(modName, '/'); - // cerr << "checkpoint C" << endl; - if (ptr) { - ptr++; - modName = ptr; - } - if (associated_symtab->findModuleByName(mod, modName)) { - tc = typeCollection::getModTypeCollection(mod); - parseActive = true; - if (!mod) { - create_printf("%s[%d]: FIXME\n", FILE__, __LINE__); - } else if (!tc) { - create_printf("%s[%d]: FIXME\n", FILE__, __LINE__); - } else - tc->clearNumberedTypes(); - } else { - //parseActive = false; - mod = associated_symtab->getDefaultModule(); - tc = typeCollection::getModTypeCollection(mod); - types_printf("\t Warning: failed to find module name matching %s, using %s\n", modName, - mod->fileName().c_str()); - } - -#ifdef TIMED_PARSE - gettimeofday(&t2, NULL); - src_dur += (t2.tv_sec - t1.tv_sec)*1000.0 + (t2.tv_usec - t1.tv_usec)/1000.0; - //src_dur += (t2.tv_sec/1000 + t2.tv_usec*1000) - (t1.tv_sec/1000 + t1.tv_usec*1000) ; -#endif - break; - case N_SLINE: - break; - default: - break; - } - if (parseActive || !is_aout()) { - std::vector bpfv; - switch (stabptr->type(i)) { - case N_FUN: -#ifdef TIMED_PARSE - fun_count++; - gettimeofday(&t1, NULL); -#endif - //all we have to do with function stabs at this point is to assure that we have - //properly set the var currentFunctionName for the later case of (parseActive) - symt_current_func = NULL; - int currentEntry = i; - int funlen = strlen(stabptr->name(currentEntry)); - ptr = new char[funlen + 1]; - strcpy(ptr, stabptr->name(currentEntry)); - while (strlen(ptr) != 0 && ptr[strlen(ptr) - 1] == '\\') { - ptr[strlen(ptr) - 1] = '\0'; - currentEntry++; - strcat(ptr, stabptr->name(currentEntry)); - } - char *colonPtr = NULL; - if (currentFunctionName) delete currentFunctionName; - if (!ptr || !(colonPtr = strchr(ptr, ':'))) - currentFunctionName = NULL; - else { - char *tmp = new char[colonPtr - ptr + 1]; - strncpy(tmp, ptr, colonPtr - ptr); - tmp[colonPtr - ptr] = '\0'; - currentFunctionName = new string(tmp); - // Shouldn't this be a function name lookup? - std::vector syms; - if (!associated_symtab->findSymbol(syms, - *currentFunctionName, - Symbol::ST_FUNCTION, - mangledName)) { - if (!associated_symtab->findSymbol(syms, - "_" + *currentFunctionName, - Symbol::ST_FUNCTION, - mangledName)) { - string fortranName = *currentFunctionName + string("_"); - if (associated_symtab->findSymbol(syms, - fortranName, - Symbol::ST_FUNCTION, - mangledName)) { - delete currentFunctionName; - currentFunctionName = new string(fortranName); - } - } - } - syms.clear(); - delete[] tmp; - } - delete[] ptr; -#ifdef TIMED_PARSE - gettimeofday(&t2, NULL); - fun_dur += (t2.tv_sec - t1.tv_sec)*1000.0 + (t2.tv_usec - t1.tv_usec)/1000.0; - //fun_dur += (t2.tv_sec/1000 + t2.tv_usec*1000) - (t1.tv_sec/1000 + t1.tv_usec*1000); -#endif - break; - } - if (!parseActive) continue; - switch (stabptr->type(i)) { - case N_BCOMM: { - // begin Fortran named common block - string tmp = string(stabptr->name(i)); - commonBlockName = &tmp; - // find the variable for the common block - - //TODO? change this. findLocalVar will cause an infinite loop - std::vector vars; - if (!associated_symtab->findSymbol(vars, - *commonBlockName, - Symbol::ST_OBJECT, - mangledName)) { - if (!associated_symtab->findSymbol(vars, - *commonBlockName, - Symbol::ST_OBJECT, - mangledName, - true)) - commonBlockVar = NULL; - else - commonBlockVar = vars[0]; - } else - commonBlockVar = vars[0]; - if (!commonBlockVar) { - // //bperr("unable to find variable %s\n", commonBlockName); - } else { - commonBlock = tc->findVariableType(*commonBlockName, Type::share); - if (!commonBlock->isCommonType()) { - // its still the null type, create a new one for it - commonBlock = Type::make_shared(*commonBlockName); - tc->addGlobalVariable(commonBlock); - } - // reset field list - commonBlock->asCommonType().beginCommonBlock(); - } - break; - } - case N_ECOMM: { - //copy this set of fields - if (!currentFunctionName) break; - if (!associated_symtab->findSymbol(bpfv, - *currentFunctionName, - Symbol::ST_FUNCTION, - mangledName)) { - if (!associated_symtab->findSymbol(bpfv, - *currentFunctionName, - Symbol::ST_FUNCTION, - mangledName, - true)) { - // //bperr("unable to locate current function %s\n", currentFunctionName->c_str()); - } else { - Symbol *func = bpfv[0]; - commonBlock->asCommonType().endCommonBlock(func, (void *) commonBlockVar->getOffset()); - } - } else { - if (bpfv.size() > 1) { - // warn if we find more than one function with this name - // //bperr("%s[%d]: WARNING: found %d funcs matching name %s, using the first\n", - // __FILE__, __LINE__, bpfv.size(), currentFunctionName->c_str()); - } - Symbol *func = bpfv[0]; - commonBlock->asCommonType().endCommonBlock(func, (void *) commonBlockVar->getOffset()); - } - //TODO?? size for local variables?? - // // update size if needed - // if (commonBlockVar) - // commonBlockVar->setSize(commonBlock->getSize()); - commonBlockVar = NULL; - commonBlock.reset(); - break; - } - // case C_BINCL: -- what is the elf version of this jkh 8/21/01 - // case C_EINCL: -- what is the elf version of this jkh 8/21/01 - case 32: // Global symbols -- N_GYSM - case 38: // Global Static -- N_STSYM - case N_FUN: - case 128: // typedefs and variables -- N_LSYM - case 160: // parameter variable -- N_PSYM - case 0xc6: // position-independant local typedefs -- N_ISYM - case 0xc8: // position-independant external typedefs -- N_ESYM -#ifdef TIMED_PARSE - pss_count++; - gettimeofday(&t1, NULL); -#endif - if (stabptr->type(i) == N_FUN) symt_current_func = NULL; - ptr = const_cast(stabptr->name(i)); - while (ptr[strlen(ptr) - 1] == '\\') { - //ptr[strlen(ptr)-1] = '\0'; - ptr2 = const_cast(stabptr->name(i + 1)); - ptr3 = (char *) malloc(strlen(ptr) + strlen(ptr2) + 1); - strcpy(ptr3, ptr); - ptr3[strlen(ptr) - 1] = '\0'; - strcat(ptr3, ptr2); - ptr = ptr3; - i++; - // XXX - memory leak on multiple cont. lines - } - // bperr("stab #%d = %s\n", i, ptr); - // may be nothing to parse - XXX jdd 5/13/99 - - temp = parseStabString(mod, stabptr->desc(i), (char *) ptr, stabptr->val(i), &commonBlock->asCommonType()); - if (temp.length()) { - //Error parsing the stabstr, return should be \0 - // //bperr( "Stab string parsing ERROR!! More to parse: %s\n", - // temp.c_str()); - // //bperr( " symbol: %s\n", ptr); - } -#ifdef TIMED_PARSE - gettimeofday(&t2, NULL); - pss_dur += (t2.tv_sec - t1.tv_sec)*1000.0 + (t2.tv_usec - t1.tv_usec)/1000.0; - // pss_dur += (t2.tv_sec/1000 + t2.tv_usec*1000) - (t1.tv_sec/1000 + t1.tv_usec*1000); -#endif - break; - default: - break; - } - } - } -#if defined(TIMED_PARSE) - struct timeval endtime; - gettimeofday(&endtime, NULL); - unsigned long lstarttime = starttime.tv_sec * 1000 * 1000 + starttime.tv_usec; - unsigned long lendtime = endtime.tv_sec * 1000 * 1000 + endtime.tv_usec; - unsigned long difftime = lendtime - lstarttime; - double dursecs = difftime/(1000 ); - cout << __FILE__ << ":" << __LINE__ <<": parseTypes("<< mod->fileName() - <<") took "<(ptr); } - const char *getStringBase() { return stabstr; } - - protected: - void *stabptr; - const char *stabstr; - long nsyms; -}; - -class stab_entry_32 : public stab_entry { - public: - stab_entry_32(void *_stabptr = 0, const char *_stabstr = 0, long _nsyms = 0) - : stab_entry(_stabptr, _stabstr, _nsyms) { } - virtual ~stab_entry_32() {} - - const char *name(int i = 0) { - if (!stabptr) { - return "bad_name"; - } - return stabstr + ((stab32 *)stabptr)[i].name; - } - unsigned long nameIdx(int i = 0) { - if (!stabptr) { - return 0L; - } - return ((stab32 *)stabptr)[i].name; - } - unsigned char type(int i = 0) { - if (!stabptr) { - return 0; - } - return ((stab32 *)stabptr)[i].type; - } - unsigned char other(int i = 0) { - if (!stabptr) { - return 0; - } - return ((stab32 *)stabptr)[i].other; - } - unsigned short desc(int i = 0) { - if (!stabptr) { - return 0; - } - return ((stab32 *)stabptr)[i].desc; - } - unsigned long val(int i = 0) { - if (!stabptr) { - return 0L; - } - return ((stab32 *)stabptr)[i].val; - } -}; - -class stab_entry_64 : public stab_entry { - public: - stab_entry_64(void *_stabptr = 0, const char *_stabstr = 0, long _nsyms = 0) - : stab_entry(_stabptr, _stabstr, _nsyms) { } - virtual ~stab_entry_64() {} - - const char *name(int i = 0) { - if (!stabptr) { - return "bad_name"; - } - return stabstr + ((stab64 *)stabptr)[i].name; - } - unsigned long nameIdx(int i = 0) { - if (!stabptr) { - return 0L; - } - return ((stab64 *)stabptr)[i].name; - } - unsigned char type(int i = 0) { - if (!stabptr) { - return 0; - } - return ((stab64 *)stabptr)[i].type; - } - unsigned char other(int i = 0) { - if (!stabptr) { - return 0; - } - return ((stab64 *)stabptr)[i].other; - } - unsigned short desc(int i = 0) { - if (!stabptr) { - return 0; - } - return ((stab64 *)stabptr)[i].desc; - } - unsigned long val(int i = 0) { - if (!stabptr) { - return 0L; - } - return ((stab64 *)stabptr)[i].val; - } -}; - -// Types -#define N_UNDF 0x00 /* start of object file */ -#define N_GSYM 0x20 /* global symbol */ -#define N_FUN 0x24 /* function or procedure */ -#define N_STSYM 0x26 /* initialized static symbol */ -#define N_LCSYM 0x28 /* unitialized static symbol */ -#define N_ROSYM 0x2c /* read-only static symbol */ -#define N_OPT 0x3c /* compiler options */ -#define N_ENDM 0x62 /* end module */ -#define N_SO 0x64 /* source directory and file */ -#define N_ENTRY 0xa4 /* fortran alternate subroutine entry point */ -#define N_BCOMM 0xe2 /* start fortran named common block */ -#define N_ECOMM 0xe4 /* start fortran named common block */ - -// Language code -- the desc field in a N_SO entry is a language code -#define N_SO_AS 1 /* assembler source */ -#define N_SO_C 2 /* K & R C source */ -#define N_SO_ANSI_C 3 /* ANSI C source */ -#define N_SO_CC 4 /* C++ source */ -#define N_SO_FORTRAN 5 /* fortran source */ -#define N_SO_PASCAL 6 /* Pascal source */ -#define N_SO_F90 7 /* Fortran90 source */ - -//line information data -#define N_SLINE 0x44 /* line number in text segment */ -#define N_SOL 0x84 /* name of the include file*/ - -// Symbol descriptors -// The format of a name is ": -// The following are the descriptors of interest -#define SD_GLOBAL_FUN 'F' /* global function or procedure */ -#define SD_PROTOTYPE 'P' /* function prototypes */ -#define SD_GLOBAL_VAR 'G' /* global variable */ - -// end of stab declarations class pdElfShdr; class Symtab; @@ -277,9 +94,7 @@ class Object : public AObject bool emitDriver(std::string fName, std::set &allSymbols, unsigned flag); const char *elf_vaddr_to_ptr(Offset vaddr) const; - bool hasStabInfo() const { return ! ( !stab_off_ || !stab_size_ || !stabstr_off_ ); } bool hasDwarfInfo() const { return dwarvenDebugInfo; } - stab_entry * get_stab_info() const; std::string getFileName() const; void getModuleLanguageInfo(dyn_hash_map *mod_langs); void parseFileLineInfo(); @@ -467,14 +282,6 @@ class Object : public AObject Offset opd_addr_; unsigned opd_size_; - Offset stab_off_; // .stab section - unsigned stab_size_; // .stab section - Offset stabstr_off_; // .stabstr section - - Offset stab_indx_off_; // .stab.index section - unsigned stab_indx_size_; // .stab.index section - Offset stabstr_indx_off_; // .stabstr.index section - bool dwarvenDebugInfo; // is DWARF debug info present? Offset loadAddress_; // The object may specify a load address // Set to 0 if it may load anywhere @@ -524,8 +331,6 @@ class Object : public AObject bool loaded_elf( Offset &, Offset &, Elf_X_Shdr* &, Elf_X_Shdr* &, Elf_X_Shdr* &, - Elf_X_Shdr* &, Elf_X_Shdr* &, - Elf_X_Shdr* &, Elf_X_Shdr* &, Elf_X_Shdr*& rel_plt_scnp, Elf_X_Shdr*& plt_scnp, Elf_X_Shdr*& got_scnp, Elf_X_Shdr*& dynsym_scnp, Elf_X_Shdr*& dynstr_scnp, Elf_X_Shdr*& dynamic_scnp, Elf_X_Shdr*& eh_frame, @@ -536,7 +341,6 @@ class Object : public AObject Symbol *handle_opd_symbol(Region *opd, Symbol *sym); void handle_opd_relocations(); void parse_opd(Elf_X_Shdr *); - void parseStabFileLineInfo(); public: void parseDwarfFileLineInfo(); void parseLineInfoForAddr(Offset addr_to_find); @@ -551,7 +355,6 @@ class Object : public AObject bool dwarf_parse_aranges(::Dwarf *dbg, std::set& dies_seen); void parseDwarfTypes(Symtab *obj); - void parseStabTypes(); void load_object(bool); void load_shared_object(bool); @@ -586,8 +389,7 @@ class Object : public AObject void find_code_and_data(Elf_X &elf, Offset txtaddr, Offset dataddr); - bool fix_global_symbol_modules_static_stab(Elf_X_Shdr *stabscnp, - Elf_X_Shdr *stabstrscnp); + bool fix_global_symbol_modules_static_dwarf(); void get_valid_memory_areas(Elf_X &elf); diff --git a/symtabAPI/src/Symtab.C b/symtabAPI/src/Symtab.C index a0a90a558d..da5cbea0e4 100644 --- a/symtabAPI/src/Symtab.C +++ b/symtabAPI/src/Symtab.C @@ -175,7 +175,6 @@ boost::shared_ptr Symtab::setupBuiltinTypes() // NOTE: integral type mean twos-complement // -1 int, 32 bit signed integral type - // in stab document, size specified in bits, system size is in bytes builtInTypes->addBuiltInType(Type::make_shared(-1, 4, "int", true)); // -2 char, 8 bit type holding a character. GDB treats as signed builtInTypes->addBuiltInType(Type::make_shared(-2, 1, "char", true)); @@ -323,8 +322,6 @@ SYMTAB_EXPORT Symtab::Symtab(MappedFile *mf_) : sorted_everyFunction(false), isTypeInfoValid_(false), nlines_(0), fdptr_(0), lines_(NULL), - stabstr_(NULL), nstabs_(0), stabs_(NULL), - stringpool_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(false), @@ -356,8 +353,6 @@ SYMTAB_EXPORT Symtab::Symtab() : sorted_everyFunction(false), isTypeInfoValid_(false), nlines_(0), fdptr_(0), lines_(NULL), - stabstr_(NULL), nstabs_(0), stabs_(NULL), - stringpool_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(false), @@ -932,7 +927,7 @@ void Symtab::setModuleLanguages(dyn_hash_map *m { if (!mod_langs->size()) return; // cannot do anything here - // this case will arise on non-stabs platforms until language parsing can be introduced at this level + // this case will arise until language parsing can be introduced at this level Module *currmod = NULL; //int dump = 0; @@ -1085,8 +1080,6 @@ Symtab::Symtab(std::string filename, bool defensive_bin, bool &err) : sorted_everyFunction(false), isTypeInfoValid_(false), nlines_(0), fdptr_(0), lines_(NULL), - stabstr_(NULL), nstabs_(0), stabs_(NULL), - stringpool_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(defensive_bin), @@ -1158,8 +1151,6 @@ Symtab::Symtab(unsigned char *mem_image, size_t image_size, sorted_everyFunction(false), isTypeInfoValid_(false), nlines_(0), fdptr_(0), lines_(NULL), - stabstr_(NULL), nstabs_(0), stabs_(NULL), - stringpool_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), @@ -1442,8 +1433,6 @@ Symtab::Symtab(const Symtab& obj) : sorted_everyFunction(false), isTypeInfoValid_(obj.isTypeInfoValid_), nlines_(0), fdptr_(0), lines_(NULL), - stabstr_(NULL), nstabs_(0), stabs_(NULL), - stringpool_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(obj.isDefensiveBinary_), diff --git a/symtabAPI/src/parseStab.C b/symtabAPI/src/parseStab.C deleted file mode 100644 index 4cfffd2d4a..0000000000 --- a/symtabAPI/src/parseStab.C +++ /dev/null @@ -1,2423 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include - -#include "symutil.h" -#include "Symtab.h" // For looking up compiler type -#include "Symbol.h" -#include "Function.h" -#include "Variable.h" -#include "Module.h" -#include "Collections.h" -#include "annotations.h" -#include "common/src/headers.h" -#include "compiler_annotations.h" -#include "Type-mem.h" - -#include "debug.h" - -using namespace Dyninst; -using namespace Dyninst::SymtabAPI; - -/* -#include "BPatch.h" -#include "debug.h" -*/ - -extern std::string symt_current_func_name; -extern std::string symt_current_mangled_func_name; -extern Function *symt_current_func; -namespace Dyninst{ -namespace SymtabAPI{ - std::string parseStabString(Module *mod, int linenum, char *stabstr, - int framePtr, typeCommon *commonBlock = NULL); -} -} - -// Forward references for parsing routines -static int parseSymDesc(char *stabstr, int &cnt); -static boost::shared_ptr parseConstantUse(Module *, char *stabstr, int &cnt); -static char *parseTypeDef(Module *, char *stabstr, - const char *name, int ID, unsigned int sizeHint = 0); -static int parseTypeUse(Module*, char *&stabstr, int &cnt, - const char *name); -static inline bool isSymId(char ch); -static std::string getIdentifier(char *stabstr, int &cnt, bool stopOnSpace=false); - -static std::string currentRawSymbolName; - -std::string convertCharToString(const char *ptr){ - if(ptr) - return ptr; - else - return ""; -} - -// -// Start of code to parse Stab information. -// The structure of this code is a recursive decent parser that parses -// information in stab records and builds up the corresponding BPatch_types. -// -// Each non-terminal in the grammer has a function of the form parse. -// -// The grammar for a non-terminal appears in the comments just before -// the non-terminal parsing function -// - -void vectorNameMatchKLUDGE(char *demangled_sym, std::vector &bpfv, std::vector &matches) -{ - // iterate through all matches and demangle names with extra parameters, compare - for (unsigned int i = 0; i < bpfv.size(); ++i) { - std::string l_mangled; - std::vector syms; - bpfv[i]->getSymbols(syms); - if (syms.size()) { - l_mangled = syms[0]->getMangledName(); - - std::string l_demangled_raw = P_cplus_demangle(l_mangled); - - if (l_demangled_raw == demangled_sym) { - matches.push_back(i); - } - } - } /* end iteration over function vector */ -} - -Function *mangledNameMatchKLUDGE(const char *pretty, const char *mangled, - Module *mod) -{ - - std::vector bpfv; - if (!mod->exec()->findFunctionsByName(bpfv, pretty)) { - //cerr << __FILE__ << __LINE__ << ": KLUDGE Cannot find " << pretty << endl; - return NULL; // no pretty name hits, expecting multiple - } - - //cerr << __FILE__ << __LINE__ << ": mangledNameMatchKLUDGE: language = " - //<< mod->getLanguageStr() << endl; - - if (lang_Fortran_with_pretty_debug == mod->language()) { - // debug function symbols are presented in "demangled" style. - if (bpfv.size() == 1) - return bpfv[0]; - else { - cerr << __FILE__ << __LINE__ << ": FIXME!" << endl; - return NULL; - } - } - - // demangle name with extra parameters - std::string demangled = P_cplus_demangle( mangled, true ); - char *demangled_sym = strdup(demangled.c_str()); - - std::vector matches; - - vectorNameMatchKLUDGE(demangled_sym, bpfv, matches); - - Function *ret = NULL; - - if (matches.size() == 1) {ret = bpfv[matches[0]]; goto clean_up;} - if (matches.size() > 1) goto clean_up; - - // check in the uninstrumentable pile - bpfv.clear(); - matches.clear(); - - vectorNameMatchKLUDGE(demangled_sym, bpfv, matches); - if (matches.size() == 1) {ret = bpfv[matches[0]]; goto clean_up;} - if (matches.size() > 1) goto clean_up; - - clean_up: - free( demangled_sym ); - return ret; -} - -// This function takes the stab stabstring and parses it to create a new -// type or variable object. This function only defines the type/variable -// name and ID. -// -// = : | -// :c | -// :f | -// :f,, | -// :F | -// :G | -// :r | -// :S | -// :[pPr] | -// ::T | -// :t | -// :T | -// :v | -// :V | -// :Y[Tc|Ts] -// -// = | ; -// - -std::string Dyninst::SymtabAPI::parseStabString(Module *mod, int linenum, char *stabstr, - int framePtr, typeCommon *commonBlock) -{ - typeCollection *tc = typeCollection::getModTypeCollection(mod); - int cnt; - int ID = 0; - int symdescID = 0; - int funcReturnID = 0; - Function *fp = NULL; - boost::shared_ptr ptrType; - boost::shared_ptr newType = NULL; // For new types to add to the collection - localVar *locVar = NULL; - cnt= 0; - - types_printf("parseStabString, mod %p/%s, linenum %d, stabstr %s\n", - (void*)mod, - (mod != NULL) ? mod->fileName().c_str() : "NULL", - linenum, - stabstr); - - std::string fName = mod->fileName(); - - /* get type or variable name */ - std::string mangledname = getIdentifier( stabstr, cnt ); - - currentRawSymbolName = mangledname; - std::string name = P_cplus_demangle( mangledname ); - - if ( !name.empty() && stabstr[cnt] != ':' ) - { - types_printf("\t returning name %s\n", name.c_str()); - return name; - } - - if (stabstr[cnt] == ':') - { - // skip to type part - cnt++; - } - - if (isSymId(stabstr[cnt])) - { - /* instance of a predefined type */ - - ID = parseSymDesc(stabstr, cnt); - - if (stabstr[cnt] == '=') - { - /* More Stuff to parse, call parseTypeDef */ - - stabstr = parseTypeDef(mod, (&stabstr[cnt+1]), name.c_str(), ID); - cnt = 0; - ptrType = tc->findOrCreateType(ID, Type::share); - if (!symt_current_func) - { - // XXX-may want to use N_LBRAC and N_RBRAC to set function scope - // -- jdd 5/13/99 - // Still need to add to local variable list if in a function - - std::string modName = mod->fileName(); - //bperr("%s[%d] Can't find function %s in module %s\n", __FILE__, __LINE__, - // symt_current_mangled_func_name.c_str(), modName); - //bperr("Unable to add %s to local variable list in %s\n", - // name.c_str(), symt_current_func_name.c_str()); - } - else - { - locVar = new localVar(name, ptrType, fName, linenum, symt_current_func); - VariableLocation loc; - loc.stClass = storageRegOffset; - loc.refClass = storageNoRef; - loc.frameOffset = framePtr; - locVar->addLocation(loc); - if (!ptrType) { - //bperr("adding local var with missing type %s, type = %d\n", - // name, ID); - } - - symt_current_func->addLocalVar(locVar); - } - } - else if (symt_current_func) - { - // Try to find the BPatch_Function - ptrType = tc->findOrCreateType( ID, Type::share); - - locVar = new localVar(name, ptrType, fName, linenum, symt_current_func); - VariableLocation loc; - loc.stClass = storageRegOffset; - loc.refClass = storageNoRef; - loc.frameOffset = framePtr; - locVar->addLocation(loc); - - if (!ptrType) - { - ////bperr("adding local var with missing type %s, type = %d\n", - // name, ID); - } - - symt_current_func->addLocalVar(locVar); - } - } - else if (stabstr[cnt]) - { - std::vector bpfv; - - switch (stabstr[cnt]) { - case 'f': /*Local Function*/ - { - std::string scopeName; - std::string lfuncName; - cnt++; - - symt_current_func_name = name; - symt_current_mangled_func_name = mangledname; - - funcReturnID = parseTypeUse(mod, stabstr, cnt, name.c_str()); - - if (stabstr[cnt]==',') - { - cnt++; /*skip the comma*/ - - /* Local Function Name */ - lfuncName = getIdentifier(stabstr, cnt); - - assert(stabstr[cnt] == ','); - cnt++; /*skip the comma*/ - - /* Scope Name of Local Function */ - scopeName = getIdentifier(stabstr, cnt); - - if (stabstr[cnt]) - { - //bperr("Extra: %s\n", &stabstr[cnt]); - } - } - - if (!scopeName.length()) - { - // Not an embeded function - - ptrType = tc->findOrCreateType(funcReturnID, Type::share); - /* - The shared_ptr type_Untyped is static, so this - otherwise unsafe operation is safe. - */ - if ( !ptrType) ptrType = Symtab::type_Untyped(); - - if (!(mod->exec()->findFunctionsByName(bpfv, name))) - { - //showInfoCallback(string("missing local function ") + - // name + "\n"); - // It's very possible that we might not find a function - // that's a weak reference, and defined in multiple places - // as we only store an object from the last definition - // - // 12/08 - not sure this is necessary anymore - // due to the Function abstraction - fp = NULL; - } - else - { - if (bpfv.size() > 1) - { - // warn if we find more than one function with current_func_name - char msg[1024]; - sprintf(msg, "%s[%d]: found %d functions with name %s, using the first", - __FILE__, __LINE__, (int)bpfv.size(), name.c_str()); - // BPatch::bpatch->reportError(BPatchWarning, 0, msg); - - } - else if (!bpfv.size()) - { - //bperr("%s[%d]: SERIOUS: found 0 functions with name %s", - // __FILE__, __LINE__, name.c_str()); - break; - } - - fp = bpfv[0]; - // set return type. - fp->setReturnType(ptrType); - } - } - else - { - //bperr("%s is an embedded function in %s\n",name.c_str(), scopeName.c_str()); - } - - symt_current_func = fp; - // skip to end - SunPro Compilers output extra info here - jkh 6/9/3 - cnt = strlen(stabstr); - - break; - } - - case 'F':/* Global Function */ - { - cnt++; /*skipping 'F' */ - - funcReturnID = parseTypeUse(mod, stabstr, cnt, name.c_str()); - - symt_current_func_name = name; - symt_current_mangled_func_name = mangledname; - - // - // For SunPro compilers there may be a parameter list after - // the return - // - - while (stabstr[cnt] == ';') - { - cnt++; // skip ';' - (void) parseTypeUse(mod, stabstr, cnt, ""); - } - - // skip to end - SunPro Compilers output extra info here - jkh 6/9/3 - cnt = strlen(stabstr); - - ptrType = tc->findOrCreateType(funcReturnID, Type::share); - if (!ptrType) ptrType = Symtab::type_Untyped(); - - std::vectorfpv; - if (!mod->exec()->findFunctionsByName(fpv, symt_current_mangled_func_name)) - //if (!mod->findSymbol(fpv, symt_current_mangled_func_name, Symbol::ST_FUNCTION, true)) - { - std::string modName = mod->fileName(); - - if (NULL == (fp = mangledNameMatchKLUDGE(symt_current_func_name.c_str(), - symt_current_mangled_func_name.c_str(), mod))) - { - //bpwarn("%s L%d - Cannot find global function with mangled name '%s' or pretty name '%s' with return type '%s' in module '%s', possibly extern\n", - // __FILE__, __LINE__, - // symt_current_mangled_func_name.c_str(), current_func_name.c_str(), - // ((ptrType->getMangledName() == NULL) ? "" : ptrType->getMangledName()), - // modName); - //char prefix[5]; - //strncpy(prefix, current_mangled_func_name, 4); - //prefix[4] = '\0'; - // mod->dumpMangled(prefix); - break; - } - } - fp = fpv[0]; - - fp->setReturnType(ptrType); - symt_current_func = fp; - fpv.clear(); - } - break; - - case 'U':/* Class Declaration - for Sun Compilers - jkh 6/6/03 */ - case 'E':/* Extern'd Global ??? - undocumented type for Sun Compilers - jkh 6/6/03 */ - case 'G':/* Global Varaible */ - cnt++; /* skip the 'G' */ - - { - /* Get variable type number */ - symdescID = parseTypeUse(mod, stabstr, cnt, name.c_str()); - boost::shared_ptr BPtype; - - BPtype = tc->findOrCreateType(symdescID, Type::share); - if (BPtype) - { - Module *toUse = mod; - std::vector ret; - bool result = mod->findVariablesByName(ret, name); - if (!result) { - // Might be in a different module... - if (mod->exec()->getDefaultModule()->findVariablesByName(ret, name)) - toUse = mod->exec()->getDefaultModule(); - } - for (unsigned i=0; isetType(BPtype); - } - - typeCollection *tc_to_use = typeCollection::getModTypeCollection(toUse); - tc_to_use->addGlobalVariable(BPtype); - } - // else // what should be done in the else case??? - // the break was (probably wrongly?) part of the else - break; - } - - case 'P': // function parameter passed in a register (GNU/Solaris) - case 'R': // function parameter passed in a register - case 'v': // Fortran Local Variable - case 'X': // Fortran function return Variable (e.g. function name) - case 'p': - { - // Function Parameter - cnt++; /* skip the 'p' */ - - /* Get variable type number */ - symdescID = parseTypeUse(mod, stabstr, cnt, name.c_str()); - - if (stabstr[cnt] == ';') - { - // parameter type information, not used for now - cnt = strlen(stabstr); - } - // else if (stabstr[cnt]) - // { - //bperr( "\tMore to parse func param %s\n", &stabstr[cnt]); - //bperr( "\tFull String: %s\n", stabstr); - //} - - ptrType = tc->findOrCreateType(symdescID, Type::share); - if (!ptrType) ptrType = Symtab::type_Untyped(); - - localVar *param; - - param = new localVar(name, ptrType, fName, linenum, symt_current_func); - VariableLocation loc; - loc.stClass = storageRegOffset; - loc.refClass = storageNoRef; - loc.frameOffset = framePtr; - param->addLocation(loc); - - if (symt_current_func) - { - symt_current_func->addParam(param); - } - - break; - } - - case 'c': /* constant */ - { - cnt++; /*move past the 'c' */ - if (symt_current_mangled_func_name.length()) - { - std::vectorfpv; - if (mod->exec()->findFunctionsByName(fpv, symt_current_mangled_func_name)) - { - // found function, add parameter - fp = fpv[0]; - symt_current_func = fp; - } - fpv.clear(); - } - - ptrType = parseConstantUse(mod, stabstr, cnt); - - if (!ptrType) ptrType = Symtab::type_Untyped(); - - localVar *var; - var = new localVar(name, ptrType, fName, linenum, symt_current_func); - VariableLocation loc; - loc.stClass = storageRegOffset; - loc.refClass = storageNoRef; - loc.frameOffset = 0; - var->addLocation(loc); - if (symt_current_func) { - symt_current_func->addParam(var); - } - } - break; - - case 'r':/* Register Variable */ - cnt++; /*move past the 'r'*/ - /* get type reference */ - - symdescID = parseSymDesc(stabstr, cnt); - break; - - case 'S':/* Global Static Variable */ - { - cnt++; /*move past the 'S'*/ - - /* get type reference */ - symdescID = parseTypeUse(mod, stabstr, cnt, name.c_str()); - - // lookup symbol and set type - boost::shared_ptr BPtype; - - std::string nameTrailer; - if (name.find(".") < name.length()) - { - std::string defaultNameSpace; - defaultNameSpace = name.substr(0,name.find(".")); - nameTrailer = name.substr(name.find(".")+1,name.length()-name.find(".")-1); - mod->setDefaultNamespacePrefix(defaultNameSpace); - } - else - { - nameTrailer = name; - } - - BPtype = tc->findOrCreateType(symdescID, Type::share); - - if (BPtype) - { - Symtab *img = mod->exec(); - std::vectorsyms; - if (img->findSymbol(syms, - nameTrailer, - Symbol::ST_OBJECT, - mangledName) || - img->findSymbol(syms, - nameTrailer, - Symbol::ST_OBJECT, - mangledName, - true)) - { - - tc->addGlobalVariable(BPtype); - } - } - - //else - //{ - //bperr("ERROR: unable to find type #%d for variable %s\n", - // symdescID, nameTrailer.c_str()); - //} - - break; - } - - case 't': // Type Name - cnt++; /*move past the 't'*/ - - /* get type reference */ - symdescID = parseSymDesc(stabstr, cnt); - - //Create Type. - if (stabstr[cnt] == '=') - { - /* More Stuff to parse, call parseTypeDef */ - //char *oldstabstr = stabstr; - stabstr = parseTypeDef(mod, (&stabstr[cnt+1]), name.c_str(), symdescID); - cnt = 0; - } - else - { - //Create Type defined as a pre-exisitng type. - - ptrType = tc->findOrCreateType(symdescID, Type::share); - if (!ptrType) - { - ptrType = Symtab::type_Untyped(); - } - - // We assume that IDs are unique per type. Instead of reusing the - // underlying base ID, use a SymtabAPI-generated ID. - - auto t = Type::make_shared(ptrType, name); - - if (t) - { - tc->addOrUpdateType(t); - } - } - break; - - case ':': // :T... - skip ":" and parse 'T' - if ((stabstr[cnt+1] == 't') || (stabstr[cnt+1] == 'T')) - { - // parse as a normal typedef - parseStabString(mod, linenum, &stabstr[cnt+1], framePtr); - } - - // else - //{ - //bperr("Unknown type seen %s\n", stabstr); - //} - - break; - - case 'T':/* Aggregate type tag -struct, union, enum */ - cnt++; /*move past the 'T'*/ - - if (stabstr[cnt] == 't') - { - //C++ struct tag "T" and type def "t" - ////bperr("SKipping C++ Identifier t of Tt\n"); - cnt++; //skip it - } - - /* get type reference */ - symdescID = parseSymDesc(stabstr, cnt); - - //Create Type. - if (stabstr[cnt] == '=') - { - /* More Stuff to parse, call parseTypeDef */ - stabstr = parseTypeDef(mod,(&stabstr[cnt+1]),name.c_str(),symdescID); - cnt = 0; - - //if (stabstr[0]) - //{ - //bperr( "\tMore to parse aggregate type %s\n", (&stabstr[cnt])); - //bperr("\tFull String: %s\n", stabstr); - //} - - } - else - { - //Create Type defined as a pre-exisitng type. - - newType = Type::createPlaceholder(symdescID, name); - (void)newType; // unused... - } - - break; - - case 'V':/* Local Static Variable (common block vars too) */ - cnt++; /*move past the 'V'*/ - - // //bperr("parsing 'v' type of %s\n", stabstr); - /* Get variable type number */ - { - symdescID = parseTypeUse(mod, stabstr, cnt, name.c_str()); - - // lookup symbol and set type - auto BPtype = tc->findOrCreateType(symdescID, Type::share); - - if (!BPtype) - { - //bperr("ERROR: unable to find type #%d for variable %s\n", - // symdescID, name.c_str()); - break; - } - - if (commonBlock) - { - /* This variable is in a common block */ - /* add it only if not already there, common block - are re-defined for each subroutine but subroutines - define only the member they care about - */ - - bool found = false; - auto fields = commonBlock->getFields(); - if (fields) - { - for (unsigned int i=0; i < fields->size(); i++) - { - if (name == (*fields)[i]->getName()) - { - found = true; - break; - } - - int start1, start2, end1, end2; - start1 = (*fields)[i]->getOffset(); - end1 = start1 + (*fields)[i]->getSize(); - start2 = framePtr; - end2 = framePtr + BPtype->getSize(); - if ( ((start2 >= start1) && (start2 < end1)) - || ((start1 >= start2) && (start1 < end2)) ) - { - /* common block aliasing detected */ - //bpwarn("WARN: EQUIVALENCE used in %s: %s and %s\n", - // current_func_name.c_str(), name.c_str(), (*fields)[i]->getName()); - - found = true; - break; - } - } - } - - if (!found) - { - commonBlock->addField(name, BPtype, framePtr); - } - } - else - { - // put it into the local variable scope - if (symt_current_func) - { - locVar = new localVar(name, BPtype, fName, linenum, symt_current_func); - VariableLocation loc; - loc.stClass = storageAddr; - loc.refClass = storageNoRef; - loc.frameOffset = framePtr; - locVar->addLocation(loc); - - symt_current_func->addLocalVar(locVar); - } - - //else - //{ - //bperr("Unable to add %s to local variable list in %s\n", - // name.c_str(),current_func_name.c_str()); - //} - } - break; - } - case 'l': - // These are string literals, of the form - // name:l(type);value - // where type must be predefined, and value of of type type. - // It should be safe to ignore these. - - cnt = strlen(stabstr); - break; - - case 'Y': // C++ specific stuff - cnt++; // Skip past the 'Y' - if (stabstr[cnt] == 'I') - { - /* Template instantiation */ - cnt++; // skip past the I; - if (stabstr[cnt] == 'f') /* Template function */ - { - while (stabstr[cnt] != '@') cnt++; - cnt++; // Skip past '@' - cnt++; // Skip past ';' - cnt++; // Skip past ';' - while (stabstr[cnt] != ':') cnt++; - // Create fake stab string that cuts out template garbage - char *dupstring = strdup(stabstr); - strcpy(dupstring, mangledname.c_str()); - strcat(dupstring, stabstr+cnt); - parseStabString(mod, linenum, dupstring, framePtr, commonBlock); - free(dupstring); - } - } - cnt = strlen(stabstr); - break; - - default: - //bperr( "Unknown symbol descriptor: %c\n", stabstr[cnt]); - //bperr( " : %s\n", stabstr); - break; - } - } - - return(&stabstr[cnt]); -} /* end of parseStabString */ - - -// -// Is the current character a valid prefix for a symDesc non-terminal? -// -inline bool isSymId(char ch) -{ - return ((ch == '(') || isdigit(ch) || (ch == '-')); -} - -// -// parse a Symbol Descriptor ID -// symDesc = | (,) -// -int parseSymDesc(char *stabstr, int &cnt) -{ - int id; - int lid; - int hid; - int sign = 1; - bool newForm = false; - - hid = 0; //file-number - // parse both an int and (int,int) format (file-number, type ID) - if (stabstr[cnt] == '(') { - cnt++; - while (isdigit(stabstr[cnt])) { - hid = hid * 10 + stabstr[cnt] - '0'; - cnt++; - } - - // skip "," - if (stabstr[cnt] == ',') cnt++; - newForm = true; - } - - if (stabstr[cnt] == '-') { - sign = -1; - cnt++; - } - - lid = 0; //type ID - while (isdigit(stabstr[cnt])) { - lid = lid * 10 + stabstr[cnt] - '0'; - cnt++; - } - if( hid != 0 ) - assert(lid < 65536); - - // skip closing ')' - if (newForm) cnt++; - - id = hid * 65536 + lid; - id = id * sign; - - return id; -} - -// -// parse an identifier up to a ":" or "," or ";" -// -std::string getIdentifier( char *stabstr, int &cnt, bool stopOnSpace ) { - int i = 0; - int brCnt = 0; - bool idChar = true; - - while( idChar ) { - switch( stabstr[ cnt + i ] ) { - case '<': - case '(': - brCnt++; - i++; - break; - - case '>': - case ')': - brCnt--; - i++; - break; - - case ' ': - if ( !stopOnSpace ) { - i++; - break; - } // else fall through - case '\0': - case ':': - case ',': - case ';': - /* Handle case of '::' */ - if ( stabstr[ cnt + i ] == ':' && stabstr[ cnt + i + 1 ] == ':' && - (stabstr[ cnt + i + 2 ] == '_' || isalpha(stabstr[ cnt + i + 2 ])) ) { - i+=3; - break; - } - /* If we're inside a bracket and we haven't reached - the end of the string, continue. */ - if( brCnt != 0 && stabstr[ cnt + i ] != '\0' ) { - i++; - } -// else if( brCnt ) { -// //bperr( "Failed to find identifier in stabstring '%s;\n", stabstr ); -// idChar = false; -// } - else { - idChar = false; - } - break; - - default: - i++; - break; - } /* end switch */ - } /* end while */ - - char * identifier = (char *)malloc( i + 1 ); - assert( identifier ); - - strncpy( identifier, & stabstr[cnt], i ); - identifier[i] = '\0'; - cnt += i; - - std::string pd_identifier = identifier; - free(identifier); - return pd_identifier; - } /* end getIdentifier() */ - -// -// getFieldName -// -// A simplified version of getIdentifier, it only cares about finding a ':' -// - -char * getFieldName( char *stabstr, int &cnt) { - int i = 0; - bool idChar = true; - - while ( idChar ) { - switch( stabstr[ cnt + i ] ) { - case ':': - idChar = false; - break; - default: - i++; - } - } - - char * identifier = (char *) malloc(i + 1); - assert(identifier); - - strncpy(identifier, &stabstr[cnt], i); - identifier[i] = '\0'; - cnt += i; - - return identifier; -} - -// -// Parse a use of a type. -// -// = | = -// -static int parseTypeUse(Module *mod,char *&stabstr, int &cnt, - const char *name) -{ - int ret = parseSymDesc(stabstr, cnt); - - if (stabstr[cnt] == '=') { - /* More Stuff to parse, call parseTypeDef */ - stabstr = parseTypeDef(mod, (&stabstr[cnt+1]), name, ret); - cnt = 0; - } - return ret; -} - -// -// parseCrossRef - internal struct/union pointer -// -// = [s|u|e] -// -static char *parseCrossRef(typeCollection *moduleTypes,const char * /*name*/, - int ID, char *stabstr, int &cnt) -{ - std::string temp; - boost::shared_ptr newType; - char xreftype; - cnt++; /* skip 'x'*/ - - if ((stabstr[cnt] == 's') || // struct - (stabstr[cnt] == 'u') || // union - (stabstr[cnt] == 'e')) { // enum - xreftype = stabstr[cnt++]; - - temp = getIdentifier(stabstr, cnt); - cnt++; /*skip ':' */ - - // Find type that this one points to. - boost::shared_ptr ptrType = moduleTypes->findType(temp.c_str(), Type::share); - if (!ptrType) { - // This type name hasn't been seen before. Create the - // skeleton for it, and we'll update it later when we actually see - // it - if (xreftype == 'e') { - newType = moduleTypes->addOrUpdateType(Type::make_shared(ID, temp)); - } else if (xreftype == 'u') { - newType = moduleTypes->addOrUpdateType(Type::make_shared(ID, temp)); - } else { - newType = moduleTypes->addOrUpdateType(Type::make_shared(ID, temp)); - } - assert(newType); - } - } else { - /* don't know what it is?? */ - - temp = getIdentifier(stabstr, cnt); - cnt++; /*skip ':' */ - } - - return( &(stabstr[cnt])); -} - -// -// parse the definition of an array. -// arrayDef = ar;;; | -// ar;;; | -// A -// -static boost::shared_ptr parseArrayDef(Module *mod, const char *name, - int ID, char *&stabstr, int &cnt, unsigned int sizeHint) -{ - typeCollection *tc = typeCollection::getModTypeCollection(mod); - char *symdesc; - int symdescID; - int elementType; - boost::shared_ptr newType; - boost::shared_ptr ptrType; - int lowbound, hibound; - - // format is ar;;; - - assert(stabstr[cnt] == 'a' || stabstr[cnt] == 'A'); - - if (stabstr[cnt ++] == 'A') { - // Open array - lowbound = 1; - hibound = 0; - elementType = parseSymDesc(stabstr, cnt); - ptrType = tc->findOrCreateType(elementType, Type::share); - } else { - // Regular (maybe) array - - if (stabstr[cnt] != 'r') { - //bperr("unknown array definition seen %s\n", &stabstr[cnt]); - return(NULL); - } - - /* array with range */ - symdesc = &(stabstr[cnt]); - - cnt++; /* skip 'r' */ - - symdescID = parseTypeUse(mod, stabstr, cnt, name); - - cnt++; /* skip semicolon */ - lowbound = parseSymDesc(stabstr, cnt); - - cnt++; /* skip semicolon */ - if (stabstr[cnt] == 'J') { - /* Fortran unbounded array */ - hibound = 0; - cnt++; - } else if (stabstr[cnt] == 'T') { - /* Fortran runtime bound array - Txx is the form (xx=digits)*/ - hibound = 0; - cnt++; - while (isdigit(stabstr[cnt])) cnt++; - } else { - hibound = parseSymDesc(stabstr, cnt); - } - - cnt++; /* skip semicolon */ - elementType = parseSymDesc(stabstr, cnt); - - if (stabstr[cnt] == 'a') - { - /* multi dimensional array - Fortran style */ - /* it has no valid id, so we give it a known duplicate */ - ptrType = parseArrayDef(mod, name, 0, stabstr, cnt, sizeHint); - } - else - { - if (stabstr[cnt] == '=') - { - /* multi dimensional array */ - char *temp; - temp = parseTypeDef(mod, &(stabstr[cnt+1]), NULL, elementType); - /* parseTypeDef uses old style of returning updated stabstr, - but parseArrayDef function needs to return an updated cnt. - This simple hack updates cnt based on how far parseTypDef - advances it. jkh 12/4/00 */ - cnt = temp-stabstr; - if (stabstr[cnt] == ':') { - //C++ stuff - ////bperr("Skipping C++ rest of array def: %s\n",name ); - while (stabstr[cnt] != ';') cnt++; - } - } - ptrType = tc->findOrCreateType(elementType, Type::share); - } - } - - // //bperr("Symbol Desriptor: %s Descriptor ID: %d Type: %d, Low Bound: %d, Hi Bound: %d,\n", symdesc, symdescID, elementType, lowbound, hibound); - (void)symdesc; (void)symdescID; // otherwise unused symbols from above - - - if (ptrType) { - // Create new type - field in a struct or union - std::string tName = convertCharToString(name); - - auto newAType = Type::make_shared(ID, ptrType, lowbound, hibound, tName, sizeHint); - // Add to Collection - newType = tc->addOrUpdateType(newAType); - - return newAType; - } - - // //bperr( "parsed array def to %d, remaining %s\n", cnt, &stabstr[cnt]); - return newType; -} - -int guessSize(const char *low, const char *hi) -{ - long long l, h; - - if (low[0] == '0') - sscanf(low, "%llo", (unsigned long long *)&l); - else - sscanf(low, "%lld", &l); - if (hi[0] == '0') - sscanf(hi, "%llo", (unsigned long long *)&h); - else - sscanf(hi, "%lld", &h); - - /* - if (( low[0]=='-' && l < -2147483648LL ) - || ( l > || ( h > 2147483647LL)) - return 8; - else if (( l < -32768 ) || ( h > 32767 )) - return 4; - else if (( l < -128 ) || ( h > 127 )) - return 2; - else - return 1; - */ - if (l < 0) { // Must be signed - if (l < -2147483648LL || h > 0x7fffffffLL) - return 8; - else if (l < 0xffff8000 || h > 0x7fff) - return 4; - else if (l < 0xffffff80 || h > 0x7f) - return 2; - else - return 1; - } else { - if (h > 0xffffffffLL) - return 8; - else if (h > 0xffff) - return 4; - else if (h > 0xff) - return 2; - else - return 1; - } -} - -#if defined(i386_unknown_linux2_0) \ - || defined(x86_64_unknown_linux2_4) /* Blind duplication - Ray */ -// -// parse range type of the form: -// -// = r;;; -// -static char *parseRangeType(Module *mod, const char *name, int ID, - char *stabstr, unsigned int sizeHint = 0) -{ - int cnt, i, symdescID; - //int sign = 1; - boost::shared_ptr baseType; - - cnt = i = 0; - - assert(stabstr[0] == 'r'); - cnt++; - - // range index type - not used - symdescID = parseSymDesc(stabstr, cnt); - - typeCollection *tc = typeCollection::getModTypeCollection(mod); - if (!mod || !tc) - { - return NULL; - } - else - { - baseType = tc->findType(symdescID, Type::share); - } - - // //bperr("\tSymbol Descriptor: %c and Value: %d\n",tmpchar, symdescID); - - cnt++; /* Discarding the ';' */ - i=0; - if (stabstr[cnt] == '-' ) { - i++; - } - - /* Getting type range or size */ - - while (isdigit(stabstr[cnt+i])) i++; - - char *low = (char *)malloc(sizeof(char)*(i+1)); - if(!strncpy(low, &(stabstr[cnt]), i)) - /* Error copying size/range*/ - exit(1); - low[i] = '\0'; - - cnt = cnt + i + 1; /* Discard other Semicolon */ - i = 0; - if((stabstr[cnt]) == '-') { - i++; /* discard '-' for (long) unsigned int */ - } - //Find high bound - while (isdigit(stabstr[cnt+i])) i++; - char *hi = (char *)malloc(sizeof(char)*(i+1)); - if(!strncpy(hi, &(stabstr[cnt]), i)) - /* Error copying upper range */ - exit(1); - hi[i] = '\0'; - - int j = atol(hi); - - if (j == 0) { - //Size - int size = atol(low); - - //Add to Collection - tc->addOrUpdateType(Type::make_shared(ID, size, name)); - } - else { - //Range - //Create new type - boost::shared_ptr newType; - std::string tName = convertCharToString(name); - - errno = 0; - long low_conv = strtol(low, NULL, 10); - if (errno) - { - low_conv = LONG_MIN; - } - - errno = 0; - long hi_conv = strtol(hi, NULL, 10); - if (errno) - { - hi_conv = LONG_MAX; - } - - if (baseType == NULL) - newType = Type::make_shared(ID, sizeHint ? sizeHint / 8 : guessSize(low,hi), - low_conv, hi_conv, tName); - else - newType = Type::make_shared(ID, sizeHint ? sizeHint / 8 : baseType->getSize(), - low_conv, hi_conv, tName); - //Add to Collection - tc->addOrUpdateType(newType); - } - free(low); - free(hi); - hi=low=NULL; - - cnt = cnt + i; - if( stabstr[cnt] == ';') - cnt++; - - return(&(stabstr[cnt])); -} - -#else -// -// parse range type of the form: -// -// = r;;; -// -static char *parseRangeType(Module *mod, const char *name, int ID, - char *stabstr, unsigned int sizeHint = 0) -{ - int cnt, i, symdescID; - boost::shared_ptr baseType; - - cnt = i = 0; - - assert(stabstr[0] == 'r'); - cnt++; - - // range index type - symdescID = parseSymDesc(stabstr, cnt); - - typeCollection *tc = typeCollection::getModTypeCollection(mod); - baseType = tc->findType(symdescID, Type::share); - - // //bperr("\tSymbol Descriptor: %c and Value: %d\n",tmpchar, symdescID); - - cnt++; /* Discarding the ';' */ - i=0; - if (stabstr[cnt] == '-' ) { - i++; - } - - /* Getting type range or size */ - while (isdigit(stabstr[cnt+i])) i++; - - char *temp = (char *)malloc(sizeof(char)*(i+1)); - if(!strncpy(temp, &(stabstr[cnt]), i)) - /* Error copying size/range*/ - exit(1); - temp[i] = '\0'; - int j = atol(temp); - - char *low = temp; - cnt = cnt + i + 1; /* Discard other Semicolon */ - i = 0; - if((stabstr[cnt]) == '-') { - i++; /* discard '-' for (long) unsigned int */ - } - - while(isdigit(stabstr[cnt+i])) - i++; - - char *hi = (char *)malloc(sizeof(char)*(i+1)); - if(!strncpy(hi, &(stabstr[cnt]), i)) - /* Error copying upper range */ - exit(1); - hi[i] = '\0'; - - std::string tname = convertCharToString(name); - if ( j <= 0 ) - { - /* range */ - boost::shared_ptr newType; - - // //bperr("\tLower limit: %s and Upper limit: %s\n", low, hi); - //Create new type - errno = 0; - long low_conv = strtol(low, NULL, 10); - if (errno) - { - low_conv = LONG_MIN; - } - - if (low_conv < LONG_MIN) - { - low_conv = LONG_MIN; - } - - errno = 0; - long hi_conv = strtol(hi, NULL, 10); - if (errno) - { - hi_conv = LONG_MAX; - } - - if (hi_conv > LONG_MAX) - { - hi_conv = LONG_MAX; - } - - if (baseType == NULL) - { - newType = Type::make_shared(ID, sizeHint ? sizeHint / 8 : guessSize(low,hi), - low_conv, hi_conv, tname); - } - else - { - newType = Type::make_shared(ID, sizeHint ? sizeHint / 8 : baseType->getSize(), - low_conv, hi_conv, tname); - } - tc->addOrUpdateType(newType); - } - else if( j > 0) - { - j = atol(hi); - if (j == 0) - { - /*size */ - int size = (int)j; - - // //bperr("\tSize of Type : %d bytes\n",size); - //Create new type - - //Add to Collection - tc->addOrUpdateType(Type::make_shared(ID, size, convertCharToString(name))); - } - else - { - /* range */ - boost::shared_ptr newType; - // //bperr("Type RANGE: ERROR!!\n"); - errno = 0; - long low_conv = strtol(low, NULL, 10); - if (errno) - { - low_conv = LONG_MIN; - } - - errno = 0; - long hi_conv = strtol(hi, NULL, 10); - if (errno) - { - hi_conv = LONG_MAX; - } - - if (baseType == NULL) - newType = Type::make_shared(ID, sizeHint ? sizeHint / 8 : sizeof(long), - low_conv, hi_conv, tname); - else - newType = Type::make_shared(ID, sizeHint ? sizeHint / 8 : baseType->getSize(), - low_conv, hi_conv, tname); - tc->addOrUpdateType(newType); - } - } - free(low); - free(hi); - - cnt = cnt + i; - if( stabstr[cnt] == ';') - cnt++; - - return(&(stabstr[cnt])); -} - -#endif - -// -// = @s; -// = @s;(,) -// = @s;r(,);;; -// - -// -// This may in fact be much simpler than first anticipated -// dbx only -// understands @s (size) and @P (packed) types. We only -// parse the size attribute, and should be able to get away -// with simply passing the remainder to the rest of our parser -// -static char *parseAttrType(Module *mod, const char *name, - int ID, char *stabstr, int &cnt) -{ - assert(stabstr[cnt] == '@'); - cnt++; // skip the @ - - if (stabstr[cnt] == 's') { - cnt++; - - int size = parseSymDesc(stabstr, cnt); - cnt++; // skip ';' - - char *newstr = parseTypeDef(mod, stabstr+cnt, name, ID, size); - if (newstr[0] == ';') - return newstr+1; - else - return newstr; - } else { - ////bperr(" Unable to parse Type Attribute: %s ID %d : %s\n", - // name,ID, &(stabstr[cnt])); - while (stabstr[cnt] != ';') cnt++; - cnt++; - return parseTypeDef(mod, stabstr+cnt, name, ID); - } -} -/* -static void parseAttrType(Module *mod, const char *name, - int ID, char *stabstr, int &cnt) -{ - bool includesRange = false; - char *low = NULL, *high = NULL; - - // format @s(size in bits); negative type number; - dataClass typdescr = dataTypeAttrib; - - assert(stabstr[cnt] == '@'); - cnt++; // skip the @ - - if (stabstr[cnt] == 's') { - cnt++; - - int size = parseSymDesc(stabstr, cnt); - cnt++; // skip ';' - - if (stabstr[cnt] == 'r') { - // include range at end - cnt++; - includesRange = true; - } - - int type = parseSymDesc(stabstr, cnt); - // skip ';' end of stab record ??? (at least for bool) - cnt++; - - if (includesRange) { - int len; - - // Parse out low range string. - len = 0; - if (stabstr[cnt] == '-' ) cnt++, len++; - while (isdigit(stabstr[cnt])) cnt++, len++; - cnt++; // skip ';' - - // Store the low range string. - low = (char *)malloc(sizeof(char) * (len + 1)); - assert(low); - strncpy(low, &stabstr[cnt - (len + 1)], len); - low[len] = '\0'; - - // Parse out high range string. - len = 0; - if (stabstr[cnt] == '-' ) cnt++, len++; - while (isdigit(stabstr[cnt])) cnt++, len++; - cnt++; // skip ';' - - // Store the high range string. - high = (char *)malloc(sizeof(char) * (len + 1)); - assert(high); - strncpy(high, &stabstr[cnt - (len + 1)], len); - high[len] = '\0'; - } - - // Create a new B_type that points to a builtInTypes - Type *ptrType =BPatch::bpatch->builtInTypes->findBuiltInType(type); - - if (!ptrType) ptrType = BPatch::bpatch->type_Untyped; - - Type *newType = new Type(name, ID, typdescr, size/8, ptrType); - if(!newType) { - //bperr(" Can't Allocate new type "); - exit(-1); - } - - if (includesRange) { - newType->setLow(low); - newType->setHigh(high); - free(low); - free(high); - } - - // Add type to collection - newType2 = tc->addOrUpdateType(newType); - - if (stabstr[cnt]) { - //bperr("More Type Attribute to Parse: %s ID %d : %s\n", name, - ID, &(stabstr[cnt])); - //bperr("got type = %d\n", type); - //bperr("full string = %s\n", stabstr); - } - } else { - ////bperr(" Unable to parse Type Attribute: %s ID %d : %s\n", - // name,ID, &(stabstr[cnt])); - } -} -*/ -// -// = & -// -static char *parseRefType(Module *mod, const char *name, - int ID, char *stabstr, int &cnt) -{ - /* reference to another type */ - assert(stabstr[cnt] == '&'); - cnt++; - - int refID = parseTypeUse(mod, stabstr, cnt, name); - - // Create a new B_type that points to a structure - typeCollection *tc = typeCollection::getModTypeCollection(mod); - auto ptrType = tc->findOrCreateType(refID, Type::share); - if (!ptrType) ptrType = Symtab::type_Untyped(); - std::string tName = convertCharToString(name); - - // Add to typeCollection - tc->addOrUpdateType(Type::make_shared(ID, ptrType, tName)); - - return(&(stabstr[cnt])); -} - -// -// Given a base class and a new type, add all visible fields to the new class -// -void addBaseClassToClass(Module *mod, int baseID, - boost::shared_ptr newType, int /*offset*/) -{ - - typeCollection *tc = typeCollection::getModTypeCollection(mod); - - //Find base class - auto baseCl = tc->findType(baseID, Type::share); - if( ! baseCl ) { - std::string modName = mod->fileName(); - //bpwarn( "can't find base class id %d in module %s\n", baseID, modName); - baseCl = tc->addOrUpdateType(Type::make_shared(baseID)); - } - std::string fName = "{superclass}"; - newType->asFieldListType().addField( fName, baseCl, -1, visUnknown ); - - //Get field descriptions of the base type - /* - const std::vector *baseClFields = baseCl->getComponents(); - for (unsigned int fieldNum=0; fieldNum < baseClFields->size(); fieldNum++) { - Field *field = (*baseClFields)[fieldNum]; - - if (field->getVisibility() == visPrivate) - continue; //Can not add this member - - newType->addField(field->getName(), field->getTypeDesc(), field->getType(), field->getOffset()+offset, field->getVisibility()); - } - */ -} - -// -// parse a list of fields. -// Format is [A|B|C-M|N|O][c][G]:;offset;size; -// -static char *parseFieldList(Module *mod, boost::shared_ptr newType, - char *stabstr, bool sunCPlusPlus) -{ - int cnt = 0; - int size = 0; - char *compname; - int comptype= 0; - int beg_offset=0; - visibility_t _vis = visUnknown; - dataClass typedescr; - bool hasVirtuals = false; - typeCollection *tc = typeCollection::getModTypeCollection(mod); - assert(tc); - - if (stabstr[cnt] == '!') - { - //Inheritance definition, Add base class field list to the current one - //according to visibility rules. - - cnt++; //Skip '!' - - //Get # of base classes - int baseClNum = atoi(getIdentifier(stabstr, cnt).c_str()); - cnt++; //Skip ',' - - boost::shared_ptr newStructType; - if(newType->isStructType()) newStructType = newType; - //Skip information for each base class - for (int i=0; icG - if (sunCPlusPlus) cnt += 3; - - if ((stabstr[cnt] == 'u') && (stabstr[cnt+1] == ':') && (!isdigit(stabstr[cnt+2]))) - { - cnt += 2; - } - - compname = getFieldName(stabstr, cnt); - - /* - if (strlen(compname) == 0) { - //Something wrong! Most probably unhandled C++ type - //Skip the rest of the structure - while(stabstr[cnt]) cnt++; - return(&stabstr[cnt]); - } - */ - cnt++; // Skip ":" - - if ((stabstr[cnt]) == ':') - { - //Method definition - typedescr = dataFunction; - cnt++; - } - - if ((stabstr[cnt]) == '/') - { // visibility C++ - cnt++; /* get '/' */ - switch (stabstr[cnt]) { - case '0': - _vis = visPrivate; - break; - case '1': - _vis = visProtected; - break; - case '2': - _vis = visPublic; - break; - default: - _vis = visUnknown; - } - cnt++; // get visibility value - } - - // should be a typeDescriptor - comptype = parseTypeUse(mod, stabstr, cnt, ""); - - if (stabstr[cnt] == ':') - { - while (stabstr[cnt] == ':') - { - cnt++; //Discard ':' - beg_offset = 0; - size = 0; - std::string varName = getIdentifier(stabstr, cnt); - - if (typedescr == dataFunction) - { - // Additional qualifiers for methods - cnt++; //Skip ';' - cnt++; //Skip visibility - cnt++; //Skip method modifier - if (stabstr[cnt] == '*') - { - //Virtual fcn definition - hasVirtuals = true; - cnt++; //Skip '*' - while(stabstr[cnt] != ';') cnt++; //Skip vtable index - cnt++; //Skip ';' - if (stabstr[cnt] != ';') - { - parseTypeUse(mod, stabstr, cnt, ""); //Skip type number to the base class - } - cnt++; //Skip ';' - if (isSymId(stabstr[cnt])) - { - parseTypeUse(mod, stabstr, cnt, ""); - } - } else if ( (stabstr[cnt] == '.') - || (stabstr[cnt] == '?') ) - { - cnt++; //Skip '.' or '?' - if (isSymId(stabstr[cnt])) - { - parseTypeUse(mod, stabstr, cnt, ""); - } - } - } - - if (stabstr[cnt] == ';') - cnt++; //Skip ';' - } - } - else if (stabstr[cnt] == ',') - { - cnt++; // skip ',' - beg_offset = parseSymDesc(stabstr, cnt); - - if (stabstr[cnt] == ',') - { - cnt++; // skip ',' - size = parseSymDesc(stabstr, cnt); - } - else - size = 0; - } - - if (stabstr[cnt] == ';') // jaw 03/15/02-- major kludge here for DPCL compat - cnt++; // needs further examination - - // //bperr("\tType: %d, Starting Offset: %d (bits), Size: %d (bits)\n", comptype, beg_offset, size); - (void)size; // otherwise unused symbol - // Add struct field to type - - auto fieldType = tc->findOrCreateType( comptype, Type::share ); - if (!fieldType) - { - //C++ compilers may add extra fields whose types might not available. - //Assign void type to these kind of fields. --Mehmet - fieldType = tc->findType("void", Type::share); - } - std::string fName = convertCharToString(compname); - if (_vis == visUnknown) - { - newType->asFieldListType().addField(fName, fieldType, beg_offset); - } - else - { - // //bperr( "Adding field '%s' to type '%s' @ 0x%x\n", compname, newType->getName(), newType ); - newType->asFieldListType().addField(fName, fieldType, beg_offset, _vis); - ////bperr("Adding Component with VISIBILITY STRUCT\n"); - } - free(compname); - } - - if (hasVirtuals && - stabstr[cnt] == ';' && - stabstr[cnt+1] == '~' && - stabstr[cnt+2] == '%') - { - cnt+=3; - while (stabstr[cnt] != ';') cnt++; - } - - // should end with a ';' - if (stabstr[cnt] == ';') - { - return &stabstr[cnt+1]; - } - else if (stabstr[cnt] == '\0') - { - return &stabstr[cnt]; - } - else - { - //bperr("invalid stab record: %s\n", &stabstr[cnt]); - abort(); - return NULL; // should not get here - } -} - - -// -// Y;;;;; -// ;;;; -// ;;; -// -static char *parseCPlusPlusInfo(Module *mod, - char *stabstr, const char *mangledName, int ID) -{ - typeCollection *tc = typeCollection::getModTypeCollection(mod); - int cnt; - char *name; - int structsize; - bool sunStyle = true; - bool nestedType = false; - dataClass typdescr; - - assert(stabstr[0] == 'Y'); - cnt = 1; - - if (isdigit(stabstr[cnt])) { - structsize = parseSymDesc(stabstr, cnt); - sunStyle = false; - } - - switch(stabstr[cnt]) { - case 'C': - case 'c': - typdescr = dataTypeClass; - break; - - case 'S': - nestedType = true; - DYNINST_FALLTHROUGH; - case 's': - typdescr = dataStructure; - break; - - case 'U': - nestedType = true; - DYNINST_FALLTHROUGH; - case 'u': - typdescr = dataUnion; - break; - - case 'n': // namespace - ignored - cnt = strlen(stabstr); - return(&(stabstr[cnt])); - break; - - default: - //bperr( "ERROR: Unrecognized C++ str = %s\n", stabstr); - cnt = strlen(stabstr); - return(&(stabstr[cnt])); - break; - } (void)nestedType; // unused - - cnt++; // skip to size - if (isdigit(stabstr[cnt])) { - structsize = parseSymDesc(stabstr, cnt); - } - (void)structsize; // unused - - if (stabstr[cnt] == 'V') cnt++; - if (stabstr[cnt] == '(') cnt++; - - if (sunStyle && (stabstr[cnt] != ';')) { - int len; - char *n; - - // Class or Type Name - n = &stabstr[cnt]; - while (stabstr[cnt] != ';') cnt++; - len = &stabstr[cnt] - n; - name = (char *) calloc(len + 1, sizeof(char)); - strncpy(name, n, len); - } else { - name = const_cast< char * >( mangledName ); - } - - std::string tName = convertCharToString(name); - boost::shared_ptr newType; - //Create new type - switch (typdescr) { - case dataTypeClass: - case dataStructure: - newType = tc->addOrUpdateType(Type::make_shared(ID, tName)); - break; - case dataUnion: - newType = tc->addOrUpdateType(Type::make_shared(ID, tName)); - break; - default: - assert(0); - } - //add to type collection - - if (sunStyle) { - cnt++; - // base class(es) - while (stabstr[cnt] != ';') { - // skip visibility flag - cnt++; - - int offset = parseSymDesc(stabstr, cnt); - - // Find base class type identifier - int baseID = parseSymDesc(stabstr, cnt); - addBaseClassToClass(mod, baseID, newType, offset); - } - - cnt++; // skip ; - } - - // parse dataMembers - stabstr = parseFieldList(mod, newType, &stabstr[cnt], sunStyle); - cnt = 0; - - if (stabstr[0]) { - // parse member functions - cnt++; - while (stabstr[cnt] && (stabstr[cnt] != ';')) { - std::string pd_funcName = getIdentifier(stabstr, cnt, true); - const char *funcName = pd_funcName.c_str(); - - funcName++; // skip ppp-code - - if (*funcName == '-') funcName++; // it's a pure vitual - - while (isdigit(*funcName)) funcName++; // skip virtual function index - funcName++; - - char *className = strdup(currentRawSymbolName.c_str()); - className[3] = 'c'; - className[strlen(className)-1] = '\0'; // remove tailing "_" - std::string methodName = std::string(className) + std::string(funcName) + std::string("_"); - - std::string fName = P_cplus_demangle( methodName ); - if( name != NULL ) { - funcName = strrchr( name, ':' ); - if( funcName ) { funcName++; } - else { funcName = name; } - } - - // should include position for virtual methods - auto fieldType = tc->findType("void", Type::share); - - newType->asFieldListType().addField( fName, Type::make_shared( ID, fieldType, fName)); - - free(name); - free(className); - if (stabstr[cnt] == ' ') cnt++; - } - } - - cnt = strlen(stabstr); - return(&(stabstr[cnt])); -} - -// -// This function takes a and parses it -// -// = | -// | -// * | Pointer to a type -// | -// f | function type -// R, | Real type -// b[u|s][c|];; | Builtin -// | -// e | -// | -// | -// k | SunPro constant -// B | SunPro volatile -// M;| Fortran CHARACTER array -// s | Structure is size -// u | Union is size -// V -// -// = : | :, -// -// It adds the typeDef to the type definition with the name name, and id ID. -// -static char *parseTypeDef(Module *mod, char *stabstr, - const char *name, int ID, unsigned int sizeHint) -{ - typeCollection *tc = typeCollection::getModTypeCollection(mod); - boost::shared_ptr newType; - boost::shared_ptr newFieldType; - boost::shared_ptr ptrType; - - std::string compsymdesc; - - dataClass typdescr; - int ptrID=0; - - int value; - int cnt,i,j,k; - int structsize; - int type; - cnt = i = j = k = 0; - - assert (stabstr[0] != '='); - - // //bperr( "parsing %s\n", stabstr); - if (isSymId(stabstr[0])) - { - typdescr = dataScalar; - type = parseSymDesc(stabstr, cnt); - - if (ID == type) - { - // Type:tFOO = FOO - // as far as I can tell, this only happens when defining an empty - // type (i.e. void) - - std::string tName = convertCharToString(name); - newType = tc->addOrUpdateType(Type::make_shared(ID, 0, tName)); - } - else if (stabstr[cnt] == '=') - { - // XXX - in the new type t(0,1)=(0,2)=s... is possible - // skip the second id for now -- jkh 3/21/99 - stabstr = parseTypeDef(mod, &(stabstr[cnt+i+1]), name, type); - cnt = 0; - boost::shared_ptr oldType; - - oldType = tc->findOrCreateType(type, Type::share); - if (!oldType) oldType = Symtab::type_Untyped(); - std::string tName = convertCharToString(name); - tc->addOrUpdateType(Type::make_shared(ID, oldType, tName, sizeHint)); - - } - else - { - boost::shared_ptr oldType; - std::string tName = convertCharToString(name); - oldType = tc->findOrCreateType(type, Type::share); - newType = tc->addOrUpdateType(Type::make_shared(ID, oldType, tName, sizeHint)); - } - } else { - switch (stabstr[0]) { - case 'x': //cross reference - { - parseCrossRef(tc, name, ID, stabstr, cnt); - break; - } - case '*': - { - /* pointer to another type */ - cnt++; - ptrID = parseTypeUse(mod, stabstr, cnt, NULL); - - // Create a new B_type that points to a structure - ptrType = tc->findOrCreateType(ptrID, Type::share); - if (!ptrType) ptrType = Symtab::type_Untyped(); - - // Add to typeCollection - newType = tc->addOrUpdateType(Type::make_shared(ID, ptrType)); - return(&(stabstr[cnt])); - break; - } - case 'a': - case 'A': - { - (void) parseArrayDef(mod, name, ID, stabstr, cnt, sizeHint); - return (&stabstr[cnt]); - break; - } - case 'g': - { - /* function with return type and prototype */ - - // g[]*# - typdescr = dataFunction; - - cnt++; /* skip the g */ - type = parseTypeUse(mod, stabstr, cnt, name); - ptrType = tc->findOrCreateType(type, Type::share); - - { - std::string tName = convertCharToString(name); - auto newFunction = tc->addOrUpdateType(Type::make_shared(ID, ptrType, tName)); - if (!newFunction) { - //bpfatal(" Can't Allocate new type "); - types_printf("%s[%d]: parseTypeDef: unable to allocate newType\n", FILE__, __LINE__); - //exit(-1); - } - - while ((stabstr[cnt] != '#') && (stabstr[cnt])) { - int paramType; - paramType = parseTypeUse(mod, stabstr, cnt, name); - newType = tc->findOrCreateType(paramType, Type::share); - newFunction->asFunctionType().addParam(newType); - //newFunction2->addField(buffer, newType->getDataClass(), newType, curOffset, newType->getSize()); - } - } - - // skip # - if (stabstr[cnt] == '#') cnt++; - break; - } - case 'f': - { - /* function type */ - typdescr = dataFunction; - - cnt++; /* skip the f */ - type = parseTypeUse(mod, stabstr, cnt, name); - ptrType = tc->findOrCreateType(type, Type::share); - - - std::string tName = convertCharToString(name); - newType = tc->addOrUpdateType(Type::make_shared(ID, ptrType, tName)); - - // skip to end - SunPro Compilers output extra info here - jkh 6/9/3 - // cnt = strlen(stabstr); - break; - } - - case 'M': - { - /* CHARACTER ??? */ - cnt++; // skip 'M' - - int baseType = parseSymDesc(stabstr, cnt); - if (baseType != -2 || (stabstr[cnt] != ';')) { - //bperr("unexpected non character array %s\n", stabstr); - } else { - cnt++; // skip ';' - int size; - if (stabstr[cnt] == 'T') { - /* Fortran stack-based array bounds */ - size = 0; - cnt++; // skip 'T' - (void) parseSymDesc(stabstr, cnt); - } else if (stabstr[cnt] == 'J') { - /* Unbounded range */ - size = 0; - cnt++; // skip 'J'; - (void) parseSymDesc(stabstr, cnt); - } else - size = parseSymDesc(stabstr, cnt); - - ptrType = tc->findOrCreateType(baseType, Type::share); - std::string tName = convertCharToString(name); - - newType = tc->addOrUpdateType(Type::make_shared(ID, ptrType, 1, size, tName)); - } - break; - - } - case 'R': - { - // Define a floating point type - R fp-type; bytes; - cnt++; - (void) parseSymDesc(stabstr, cnt); - cnt ++; - - int bytes = parseSymDesc(stabstr, cnt); - - newType = tc->addOrUpdateType(Type::make_shared(ID, bytes, name)); - - if (stabstr[cnt] == ';') cnt++; // skip the final ';' - - // gcc 3.0 adds an extra field that is always 0 (no indication in the code why) - if (stabstr[cnt] == '0') cnt += 2; // skip the final '0;' - - break; - } - - case 'b': - { - // builtin type b - signed char-flag width; offset; nbits - int limit = strlen(&stabstr[cnt]); - - // skip to width - while (!isdigit(stabstr[cnt+i]) && (i < limit)) i++; - if (i >= limit) return(&(stabstr[cnt])); - - cnt += i; - int size = parseSymDesc(stabstr,cnt); - cnt -= i; - i++; // skip the ';' - - // skip to bits - while (stabstr[cnt+i] != ';' && (i < limit)) i++; - if (i >= limit) return(&(stabstr[cnt])); - i++; - - cnt += i; - parseSymDesc(stabstr, cnt); - - if (stabstr[cnt]) cnt++; // skip the final ';' - - //Add to Collection - newType = tc->addOrUpdateType(Type::make_shared(ID, size, name)); - - return &stabstr[cnt]; - break; - } - case 'r': // range type - { - return parseRangeType(mod, name, ID, stabstr, sizeHint); - break; - } - case 'e': // Enumerated type - { - cnt++; /* skip the 'e' */ - - // Create new Enum type - std::string tName = convertCharToString(name); - // Add type to collection - auto newEnumType = tc->addOrUpdateType(Type::make_shared(ID, tName)); - - while (stabstr[cnt]) { - /* Get enum component value */ - compsymdesc = getIdentifier(stabstr, cnt); - cnt++; /* skip colon */ - value = parseSymDesc(stabstr, cnt); - - // add enum field to type - newEnumType->asEnumType().addConstant(compsymdesc, value); - - cnt++; /* skip trailing comma */ - if ((stabstr[cnt]) == ';') cnt++; /* End of enum stab record */ - } - break; - } - case '@': // type attribute, defines size and type (negative num) - { - return parseAttrType(mod, name, ID, stabstr, cnt); - break; - } - case '&': //XXX- Need to complete, may be more to parse jdd 4/22/99 - { - return parseRefType(mod, name, ID, stabstr, cnt); - break; - } - case 'k': // Sun constant type s - parse as - { - return parseTypeDef(mod, &stabstr[cnt+1], name, ID); - break; - } - case 'V': // volatile ? type V - parse as - case 'B': // Sun volatile type B - parse as - return parseTypeDef(mod, &stabstr[cnt+1], name, ID); - break; - - case 's': // struct - case 'u': // union - case 'T': // Fortran TYPE - { - /* Type descriptor */ - if (stabstr[cnt] == 's' || stabstr[cnt] == 'T') { - typdescr = dataStructure; - } else { - typdescr = dataUnion; - } - - cnt++; // skip to size - structsize = parseSymDesc(stabstr, cnt); - (void)structsize; // unused - - std::string tName = convertCharToString(name); - //Create new type - if (typdescr == dataStructure) { - newFieldType = tc->addOrUpdateType(Type::make_shared(ID, tName)); - } - else { - newFieldType = tc->addOrUpdateType(Type::make_shared(ID, tName)); - } - //add to type collection - - //TODO What if two different files have the same structure?? - char *ret = parseFieldList(mod, newFieldType, &stabstr[cnt], false); - return ret; - - break; - } - case 'Y': - { - // C++ specific stabs (Sun compiler) - return parseCPlusPlusInfo(mod, stabstr, name, ID); - break; - } - case 'Z': // What is this ??? - jkh 10/14/99 (xlc compiler uses it) - { - return (&stabstr[1]); - break; - } - case '#': - { - //Class method definition - cnt++; //Skip '#' - if (stabstr[cnt] == '#') { - //Get return type - cnt++; //Skip '#' - parseTypeUse(mod, stabstr, cnt, name); - } - else { - while(1) { - //Skip class type, return typ and arg types - parseTypeUse(mod, stabstr, cnt, name); - if (stabstr[cnt] == ',') - cnt++; - else if (stabstr[cnt] == ';') - break; - } - } - - cnt++; //Skip ';' - return(&(stabstr[cnt])); - break; - } - default: - //bperr( "ERROR: Unrecognized str = %s\n", &stabstr[cnt]); - // return NULL; - // Null probably isn't the right choice here. - cnt = strlen(stabstr); - break; - } - } - - return(&(stabstr[cnt])); -} /* end of parseTypeDef*/ - -// -// parseConstantUse - parse a constant (used by Fortran PARAMETERS) -// -// = =i | -// =r -// -// -static boost::shared_ptr parseConstantUse(Module *mod, char *stabstr, int &cnt) -{ - typeCollection *tc = typeCollection::getModTypeCollection(mod); - // skip = - cnt++; - - boost::shared_ptr ret; - - if (stabstr[cnt] == 'i') { - ret = tc->findType("integer*4", Type::share); - } else if (stabstr[cnt] == 'r') { - ret = tc->findType("double", Type::share); - } else if (stabstr[cnt] == 's') { - ret = tc->findType("char *", Type::share); - } else { - //bperr("unknown constant type %s\n", &stabstr[cnt]); - ret = NULL; - } - - cnt = strlen(stabstr); - - return ret; -} - From 116a55c942e2a820c0ffc281ff1775bcb48f4ace Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 19 Oct 2021 13:49:10 -0500 Subject: [PATCH 005/505] Remove stabs from BPatch --- dyninstAPI/h/BPatch_module.h | 5 +---- dyninstAPI/h/BPatch_sourceObj.h | 2 -- dyninstAPI/src/BPatch_collections.h | 2 +- dyninstAPI/src/BPatch_module.C | 1 - 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/dyninstAPI/h/BPatch_module.h b/dyninstAPI/h/BPatch_module.h index 41900c507d..0785246bec 100644 --- a/dyninstAPI/h/BPatch_module.h +++ b/dyninstAPI/h/BPatch_module.h @@ -112,7 +112,6 @@ class BPATCH_DLL_EXPORT BPatch_module: public BPatch_sourceObj{ bool getSourceObj(BPatch_Vector&); BPatch_sourceObj *getObjParent(); void parseTypes(); - char *parseStabStringSymbol(int line, char *stabstr, void *stabptr); void setDefaultNamespacePrefix(char *name); void handleUnload(); bool isExploratoryModeOn();// true if exploratory or defensive mode is on @@ -263,9 +262,7 @@ class BPATCH_DLL_EXPORT BPatch_module: public BPatch_sourceObj{ bool parseTypesIfNecessary(); BPatch_typeCollection *moduleTypes; - // In particular, we understand the type information - // in both DWARF and STABS format. - void parseStabTypes(); + // We understand the type information in DWARF format. void parseDwarfTypes(); BPatch_funcMap func_map; diff --git a/dyninstAPI/h/BPatch_sourceObj.h b/dyninstAPI/h/BPatch_sourceObj.h index c4409096c5..fc239a4b4f 100644 --- a/dyninstAPI/h/BPatch_sourceObj.h +++ b/dyninstAPI/h/BPatch_sourceObj.h @@ -44,7 +44,6 @@ typedef enum BPatch_language { BPatch_fortran, BPatch_fortran77, BPatch_fortran90, - BPatch_f90_demangled_stabstr, BPatch_fortran95, BPatch_assembly, BPatch_mixed, @@ -94,7 +93,6 @@ class BPATCH_DLL_EXPORT BPatch_sourceObj { case BPatch_fortran: return "BPatch_fortran"; case BPatch_fortran77: return "BPatch_fortran77"; case BPatch_fortran90: return "BPatch_fortran90"; - case BPatch_f90_demangled_stabstr: return "BPatch_fortran90_demangled_stabstr"; case BPatch_fortran95: return "BPatch_fortran95"; case BPatch_assembly: return "BPatch_assembly"; case BPatch_mixed: return "BPatch_mixed"; diff --git a/dyninstAPI/src/BPatch_collections.h b/dyninstAPI/src/BPatch_collections.h index 692fa7276d..e4cbad506f 100644 --- a/dyninstAPI/src/BPatch_collections.h +++ b/dyninstAPI/src/BPatch_collections.h @@ -103,7 +103,7 @@ class BPatch_typeCollection { /* Some debug formats allow forward references. Rather than fill in forward in a second pass, generate placeholder types, and fill them in as we go. Because we require - One True Pointer for each type (in parseStab.C), when + One True Pointer for each type, when updating a type, return that One True Pointer. */ BPatch_type * findOrCreateType( const int & ID ); BPatch_type * addOrUpdateType( BPatch_type * type ); diff --git a/dyninstAPI/src/BPatch_module.C b/dyninstAPI/src/BPatch_module.C index 6a7b0548e3..10dcc4d2d5 100644 --- a/dyninstAPI/src/BPatch_module.C +++ b/dyninstAPI/src/BPatch_module.C @@ -156,7 +156,6 @@ BPatch_module::BPatch_module(BPatch_addressSpace *_addSpace, break; case lang_Fortran_with_pretty_debug: - setLanguage( BPatch_f90_demangled_stabstr ); break; case lang_Fortran: From 93e74fbd990f59a747d86c310f1fb3c8cc180894 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 19 Oct 2021 13:50:31 -0500 Subject: [PATCH 006/505] Remove stabs from symbol demangling --- common/src/symbolDemangle.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/common/src/symbolDemangle.c b/common/src/symbolDemangle.c index 41fb58af33..decfecf33b 100644 --- a/common/src/symbolDemangle.c +++ b/common/src/symbolDemangle.c @@ -38,13 +38,13 @@ // Returns a malloc'd string that is the demangled symbol name. THe caller is // responsible for the freeing this memory. Returns NULL on malloc failure. // The symbol name symName is demangled using the cplus_demangle function after -// first removing any versioning suffixes (first '@') or stabs suffixes (first -// ':') to create the mangled name. If cplus_demangle fails, the mangled name +// first removing any versioning suffixes (first '@') +// to create the mangled name. If cplus_demangle fails, the mangled name // is returned unmodified. If cplus_demangle succeeds and includeParams is // false, then any clone suffixes (the first '.' to the end of the mangled // name) are appended to the value from cplus_demangle. // -// Other than the removal of versioning and stabs suffixes, and appending any +// Other than the removal of versioning suffixes, and appending any // clone suffixes if includeParams is false to the result, the result should be // equivalent to using c++filt. Below are the c++filt and cplus_demangle // options @@ -57,34 +57,34 @@ char *symbol_demangle(const char *symName, int includeParams) { int cloneOffset = -1; // offset to clone suffix - int versionOrStabsOffset = -1; // offset to version or stabs suffix - int lastOffset; // offset to version or stabs suffix + int versionOffset = -1; // offset to version suffix + int lastOffset; // offset to version suffix // if present, else null of symName - // find both clone, and then version or stabs suffixes if any + // find both clone, and then version suffixes if any for (lastOffset = 0; symName[lastOffset]; ++lastOffset) { char c = symName[lastOffset]; if (c == '.' && cloneOffset == -1) { // clone suffix start with first '.' cloneOffset = lastOffset; - } else if (c == '@' || c == ':') { - // version ('@') or stabs (':') suffix found - versionOrStabsOffset = lastOffset; + } else if (c == '@') { + // version ('@') suffix found + versionOffset = lastOffset; // stop searching break; } } - const char *mangledName = symName; // symName without version/stabs suffix + const char *mangledName = symName; // symName without version suffix char *allocatedMangledName = 0; - if (versionOrStabsOffset != -1) { - // make a copy of the symName without version or stabs suffix - allocatedMangledName = malloc(versionOrStabsOffset + 1); + if (versionOffset != -1) { + // make a copy of the symName without version suffix + allocatedMangledName = malloc(versionOffset + 1); if (allocatedMangledName == 0) { return NULL; } - memcpy(allocatedMangledName, symName, versionOrStabsOffset); - allocatedMangledName[versionOrStabsOffset] = '\0'; + memcpy(allocatedMangledName, symName, versionOffset); + allocatedMangledName[versionOffset] = '\0'; mangledName = allocatedMangledName; } From 2f3118f9ffa2708a160e69af455182a28e477af0 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 19 Oct 2021 13:54:19 -0500 Subject: [PATCH 007/505] Remove special Fortran debug handling lang_Fortran_with_pretty_debug was only for Fortran with stabs. --- dyninstAPI/src/BPatch_module.C | 3 --- symtabAPI/h/symutil.h | 1 - symtabAPI/src/Object.C | 18 ++---------------- symtabAPI/src/dwarfWalker.C | 4 +--- 4 files changed, 3 insertions(+), 23 deletions(-) diff --git a/dyninstAPI/src/BPatch_module.C b/dyninstAPI/src/BPatch_module.C index 10dcc4d2d5..cb22428225 100644 --- a/dyninstAPI/src/BPatch_module.C +++ b/dyninstAPI/src/BPatch_module.C @@ -155,9 +155,6 @@ BPatch_module::BPatch_module(BPatch_addressSpace *_addSpace, setLanguage( BPatch_cPlusPlus ); break; - case lang_Fortran_with_pretty_debug: - break; - case lang_Fortran: case lang_CMFortran: setLanguage( BPatch_fortran ); diff --git a/symtabAPI/h/symutil.h b/symtabAPI/h/symutil.h index 6ecd8f013d..0f0b1b9bf8 100644 --- a/symtabAPI/h/symutil.h +++ b/symtabAPI/h/symutil.h @@ -61,7 +61,6 @@ typedef enum { lang_CPlusPlus, lang_GnuCPlusPlus, lang_Fortran, - lang_Fortran_with_pretty_debug, lang_CMFortran } supportedLanguages; diff --git a/symtabAPI/src/Object.C b/symtabAPI/src/Object.C index f32f428f14..7fb064ce2c 100644 --- a/symtabAPI/src/Object.C +++ b/symtabAPI/src/Object.C @@ -153,7 +153,6 @@ const char *Dyninst::SymtabAPI::supportedLanguages2Str(supportedLanguages s) CASE_RETURN_STR(lang_CPlusPlus); CASE_RETURN_STR(lang_GnuCPlusPlus); CASE_RETURN_STR(lang_Fortran); - CASE_RETURN_STR(lang_Fortran_with_pretty_debug); CASE_RETURN_STR(lang_CMFortran); }; return "bad_language"; @@ -399,7 +398,7 @@ supportedLanguages AObject::pickLanguage(string &working_module, char *working_o supportedLanguages working_lang) { supportedLanguages lang = lang_Unknown; - static int sticky_fortran_modifier_flag = 0; + // (2) -- check suffixes -- try to keep most common suffixes near the top of the checklist string::size_type len = working_module.length(); if((len>2) && (working_module.substr(len-2,2) == string(".c"))) lang = lang_C; @@ -429,12 +428,7 @@ supportedLanguages AObject::pickLanguage(string &working_module, char *working_o // have the "pretty" names, we need to detect this in order to properly read the debug. if (working_lang == lang_Fortran) { - if (sticky_fortran_modifier_flag) - { - //cerr << FILE__ << __LINE__ << ": UPDATE: lang_Fortran->lang_Fortran_with_pretty_debug." << endl; - working_lang = lang_Fortran_with_pretty_debug; - } - else if (working_options) + if (working_options) { char *dbg_gen = NULL; //cerr << FILE__ << __LINE__ << ": OPT: " << working_options << endl; @@ -448,14 +442,6 @@ supportedLanguages AObject::pickLanguage(string &working_module, char *working_o if (NULL != next_dot) { *next_dot = '\0'; //terminate major version number string - int ver_maj = atoi(dbg_gen_ver_maj); - //cerr <<"Major Debug Ver. "<lang_Fortran_with_pretty_debug. " << "Major Debug Ver. "<language(); if ((lang != lang_Fortran) && - (lang != lang_CMFortran) && - (lang != lang_Fortran_with_pretty_debug)) return; + (lang != lang_CMFortran)) return; if (name[name.length()-1] == '_') { name = name.substr(0, name.length()-1); @@ -2232,7 +2231,6 @@ bool DwarfWalker::parseSubrangeAUX(Dwarf_Die entry, /* Set the default lower bound, if we know it. */ switch ( mod()->language() ) { case lang_Fortran: - case lang_Fortran_with_pretty_debug: case lang_CMFortran: loBound = "1"; break; From 328411add521bab7eea0527571d1ad6a663f46e6 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 11:14:15 -0500 Subject: [PATCH 008/505] Turn on STERILE_BUILD by default (#1118) Co-authored-by: Tim Haines --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89e9162bda..7f394dcb8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set (CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(STERILE_BUILD OFF CACHE BOOL "Do not download/build any third-party dependencies from source") +set(STERILE_BUILD ON CACHE BOOL "Do not download/build any third-party dependencies from source") LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) From b8e35371199000e15649b8c6a7b3bcca6eb88221 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 11:46:54 -0500 Subject: [PATCH 009/505] Remove stabs from documentation (#1120) This should have been part of #1113 Co-authored-by: Tim Haines --- symtabAPI/doc/1-Intro.tex | 2 +- symtabAPI/doc/4-Definitions.tex | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/symtabAPI/doc/1-Intro.tex b/symtabAPI/doc/1-Intro.tex index c3078cc9ef..39fc2a6e2a 100644 --- a/symtabAPI/doc/1-Intro.tex +++ b/symtabAPI/doc/1-Intro.tex @@ -5,7 +5,7 @@ \section{Introduction} object file headers and debug information. SymtabAPI currently supports the ELF (IA-32, AMD-64, ARMv8-64, and POWER) and PE (Windows) object file formats. In addition, it also supports the DWARF -and stabs debugging formats. +debugging format. The main goal of this API is to provide an abstract view of binaries and libraries across multiple platforms. An abstract interface provides two diff --git a/symtabAPI/doc/4-Definitions.tex b/symtabAPI/doc/4-Definitions.tex index 85600d40fe..d638d9a199 100644 --- a/symtabAPI/doc/4-Definitions.tex +++ b/symtabAPI/doc/4-Definitions.tex @@ -20,18 +20,18 @@ \subsection{Definitions} \item[Mangled Name] A mangled name for a symbol provides a way of encoding additional information about a function, structure, class or another data type in a symbol name. It is a technique used to produce unique names for programming entities in many modern programming languages. For example, the method \emph{foo} of class C with signature \emph{int C::foo(int, int)} has a mangled name \emph{\_ZN1C3fooEii} when compiled with gcc. -Mangled names may include a sequence of clone suffixes (begins with `.' that indicate a compiler synthesized function), and this may be followed by a version suffix (begins with `@') or stabs type information (begins with `:'). +Mangled names may include a sequence of clone suffixes (begins with `.' that indicate a compiler synthesized function), and this may be followed by a version suffix (begins with `@'). \item[Pretty Name] A pretty name for a symbol is the demangled user-level symbolic name without type information for the function parameters and return types. For non-mangled names, the pretty name is the symbol name. Any function clone suffixes of the symbol are appended to the result of the demangler. For example, a symbol with a mangled name \emph{\_ZN1C3fooEii} for the method \emph{int C::foo(int, int)} has a pretty name \emph{C::foo}. -Version and stabs suffixes are removed from the mangled name before conversion to the pretty name. +Version suffixes are removed from the mangled name before conversion to the pretty name. The pretty name can be obtained by running the command line tool \code{c++filt} as \code{c++filt -i -p \emph{name}}, or using the libiberty library function \code{cplus\_demangle} with options of \code{DMGL\_AUTO | DMGL\_ANSI}. \item[Typed Name] A typed name for a symbol is the demangled user-level symbolic name including type information for the function parameters. Typically, but not always, function return type information is not included. Any function clone information is also included. For non-mangled names, the typed name is the symbol name. For example, a symbol with a mangled name \emph{\_ZN1C3fooEii} for the method \emph{int C::foo(int, int)} has a typed name \emph{C::foo(int, int)}. -Version and stabs suffixes are removed from the mangled name before conversion to the typed name. +Version suffixes are removed from the mangled name before conversion to the typed name. The typed name can be obtained by running the command line tool \code{c++filt} as \code{c++filt -i \emph{name}}, or using the libiberty library function \code{cplus\_demangle} with options of \code{DMGL\_AUTO | DMGL\_ANSI | DMGL\_PARAMS}. \item[Symbol Linkage] The symbol linkage for a symbol gives information on the visibility (binding) of this symbol, whether it is visible only in the object file where it is defined (local), if it is visible to all the object files that are being linked (global), or if its a weak alias to a global symbol. \item[Symbol Type] Symbol type for a symbol represents the category of symbols to which it belongs. It can be a function symbol or a variable symbol or a module symbol. From 43e8c132eaa2eb83e27a5e60f3663a4260f0b3cf Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 11:53:22 -0500 Subject: [PATCH 010/505] Fix uninitialized variable use in DispatcherARM64::iproc_init --- dataflowAPI/rose/semantics/DispatcherARM64.C | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dataflowAPI/rose/semantics/DispatcherARM64.C b/dataflowAPI/rose/semantics/DispatcherARM64.C index 4e84742e23..48a51c1f72 100644 --- a/dataflowAPI/rose/semantics/DispatcherARM64.C +++ b/dataflowAPI/rose/semantics/DispatcherARM64.C @@ -5291,7 +5291,7 @@ namespace rose { DispatcherARM64::getBitfieldMask(int immr, int imms, int N, bool iswmask, int datasize) { int hsbarg = (N << 6) | (~imms); - int len; + int len = 0; for (int idx = 0; idx < 7; idx++) { if ((hsbarg & 0x1) == 1) len = idx; @@ -5684,4 +5684,3 @@ namespace rose { } // namespace //using namespace rose::Diagnostics; - From bb8d0a97aeb12132741f06175922ab9b7fec1029 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 11:53:22 -0500 Subject: [PATCH 011/505] Give global annotation objects internal linkage and file scope This was technically an ODR violation because they are in two different translation units that _could_ be linked together. However, I don't think they ever were. This fix will preclude any such problem, though. --- dataflowAPI/src/stackanalysis.C | 3 +++ dyninstAPI/src/function.C | 3 +++ 2 files changed, 6 insertions(+) diff --git a/dataflowAPI/src/stackanalysis.C b/dataflowAPI/src/stackanalysis.C index 2ba8d6e103..5afd95d28f 100644 --- a/dataflowAPI/src/stackanalysis.C +++ b/dataflowAPI/src/stackanalysis.C @@ -60,6 +60,8 @@ const StackAnalysis::Height StackAnalysis::Height::bottom( const StackAnalysis::Height StackAnalysis::Height::top( StackAnalysis::Height::uninitialized, StackAnalysis::Height::TOP); +namespace +{ AnnotationClass Stack_Anno_Intervals(std::string("Stack_Anno_Intervals"), NULL); AnnotationClass @@ -68,6 +70,7 @@ AnnotationClass Stack_Anno_Insn_Effects(std::string("Stack_Anno_Insn_Effects"), NULL); AnnotationClass Stack_Anno_Call_Effects(std::string("Stack_Anno_Call_Effects"), NULL); +} template class std::list; template class std::map; diff --git a/dyninstAPI/src/function.C b/dyninstAPI/src/function.C index c224afaf3b..d9bc6e92a3 100644 --- a/dyninstAPI/src/function.C +++ b/dyninstAPI/src/function.C @@ -1703,6 +1703,8 @@ void func_instance::createTMap_internal(StackMod* mod, TMap* tMap) } } +namespace +{ AnnotationClass Stack_Anno_Intervals(std::string("Stack_Anno_Intervals"), NULL); AnnotationClass @@ -1711,6 +1713,7 @@ AnnotationClass Stack_Anno_Insn_Effects(std::string("Stack_Anno_Insn_Effects"), NULL); AnnotationClass Stack_Anno_Call_Effects(std::string("Stack_Anno_Call_Effects"), NULL); +} void func_instance::freeStackMod() { // Free stack analysis intervals StackAnalysis::Intervals *i = NULL; From f92fb49553c99155c923e0bc78cc492d1b518f59 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 12:19:44 -0500 Subject: [PATCH 012/505] Fix possible buffer overflow in BPatch::processCreate --- dyninstAPI/src/BPatch.C | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/dyninstAPI/src/BPatch.C b/dyninstAPI/src/BPatch.C index a08690cb2c..2c56465af2 100644 --- a/dyninstAPI/src/BPatch.C +++ b/dyninstAPI/src/BPatch.C @@ -1156,17 +1156,15 @@ BPatch_process *BPatch::processCreate(const char *path, const char *argv[], // just a sanity check for the exitence of struct stat statbuf; if (-1 == stat(path, &statbuf)) { - char ebuf[2048]; - sprintf(ebuf, "createProcess(%s,...): file does not exist\n", path); - reportError(BPatchFatal, 68, ebuf); + auto msg = std::string("createProcess(") + path + ",...): file does not exist\n"; + reportError(BPatchFatal, 68, msg.c_str()); return NULL; } // and ensure its a regular file: if (!S_ISREG(statbuf.st_mode)) { - char ebuf[2048]; - sprintf(ebuf, "createProcess(%s,...): not a regular file \n", path); - reportError(BPatchFatal, 68, ebuf); + auto msg = std::string("createProcess(") + path + ",...): not a regular file\n"; + reportError(BPatchFatal, 68, msg.c_str()); return NULL; } @@ -1174,9 +1172,8 @@ BPatch_process *BPatch::processCreate(const char *path, const char *argv[], if (! ( (statbuf.st_mode & S_IXUSR) || (statbuf.st_mode & S_IXGRP) || (statbuf.st_mode & S_IXOTH) )) { - char ebuf[2048]; - sprintf(ebuf, "createProcess(%s,...): not an executable \n", path); - reportError(BPatchFatal, 68, ebuf); + auto msg = std::string("createProcess(") + path + "%s,...): not an executable\n"; + reportError(BPatchFatal, 68, msg.c_str()); return NULL; } From 63747a0b8bcec99c398c69cdfd90c0dca9137caf Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 13:10:00 -0500 Subject: [PATCH 013/505] Remove unused variables from Symtab This is an ABI-breaking change. Fixes #1062 --- symtabAPI/h/Symtab.h | 4 ---- symtabAPI/src/Symtab.C | 5 ----- 2 files changed, 9 deletions(-) diff --git a/symtabAPI/h/Symtab.h b/symtabAPI/h/Symtab.h index 1c1815fc7f..84788b3e28 100644 --- a/symtabAPI/h/Symtab.h +++ b/symtabAPI/h/Symtab.h @@ -622,10 +622,6 @@ class SYMTAB_EXPORT Symtab : public LookupInterface, //type info valid flag bool isTypeInfoValid_; - int nlines_; - unsigned long fdptr_; - char *lines_; - //Relocation sections bool hasRel_; bool hasRela_; diff --git a/symtabAPI/src/Symtab.C b/symtabAPI/src/Symtab.C index da5cbea0e4..24f52a7c88 100644 --- a/symtabAPI/src/Symtab.C +++ b/symtabAPI/src/Symtab.C @@ -321,7 +321,6 @@ SYMTAB_EXPORT Symtab::Symtab(MappedFile *mf_) : no_of_symbols(0), sorted_everyFunction(false), isTypeInfoValid_(false), - nlines_(0), fdptr_(0), lines_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(false), @@ -352,7 +351,6 @@ SYMTAB_EXPORT Symtab::Symtab() : no_of_symbols(0), sorted_everyFunction(false), isTypeInfoValid_(false), - nlines_(0), fdptr_(0), lines_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(false), @@ -1079,7 +1077,6 @@ Symtab::Symtab(std::string filename, bool defensive_bin, bool &err) : no_of_symbols(0), sorted_everyFunction(false), isTypeInfoValid_(false), - nlines_(0), fdptr_(0), lines_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(defensive_bin), @@ -1150,7 +1147,6 @@ Symtab::Symtab(unsigned char *mem_image, size_t image_size, no_of_symbols(0), sorted_everyFunction(false), isTypeInfoValid_(false), - nlines_(0), fdptr_(0), lines_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), @@ -1432,7 +1428,6 @@ Symtab::Symtab(const Symtab& obj) : no_of_symbols(obj.no_of_symbols), sorted_everyFunction(false), isTypeInfoValid_(obj.isTypeInfoValid_), - nlines_(0), fdptr_(0), lines_(NULL), hasRel_(false), hasRela_(false), hasReldyn_(false), hasReladyn_(false), hasRelplt_(false), hasRelaplt_(false), isStaticBinary_(false), isDefensiveBinary_(obj.isDefensiveBinary_), From d652747125631678e8f755720aa2d4064bbb9923 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 25 Oct 2021 17:06:00 -0500 Subject: [PATCH 014/505] Remove unused generateSimple (#1122) This is never called in Dyninst. It also has broken logic. Fixes #1087 Co-authored-by: Tim Haines --- dyninstAPI/src/codegen-aarch64.C | 8 -------- dyninstAPI/src/codegen-aarch64.h | 4 ---- dyninstAPI/src/codegen-power.C | 35 -------------------------------- dyninstAPI/src/codegen-power.h | 3 --- 4 files changed, 50 deletions(-) diff --git a/dyninstAPI/src/codegen-aarch64.C b/dyninstAPI/src/codegen-aarch64.C index b9159326ea..f8b875e49f 100644 --- a/dyninstAPI/src/codegen-aarch64.C +++ b/dyninstAPI/src/codegen-aarch64.C @@ -624,14 +624,6 @@ void insnCodeGen::generateNOOP(codeGen &gen, unsigned size) { } } -void insnCodeGen::generateSimple(codeGen &, int, - Register, Register, - Register) -{ -assert(0); -//#warning "This function is not implemented yet!" -} - void insnCodeGen::generateRelOp(codeGen &, int, int, Register, Register, Register) { diff --git a/dyninstAPI/src/codegen-aarch64.h b/dyninstAPI/src/codegen-aarch64.h index b3a42cf063..e82a9b7d44 100644 --- a/dyninstAPI/src/codegen-aarch64.h +++ b/dyninstAPI/src/codegen-aarch64.h @@ -141,10 +141,6 @@ class insnCodeGen { static void generateRShift64(codeGen &gen, Register rs, int shift, Register ra); - static void generateSimple(codeGen &gen, - int op, Register src1, - Register src2, Register dest); - static void generateRelOp(codeGen &gen, int cond, int mode, Register rs1, Register rs2, Register rd); diff --git a/dyninstAPI/src/codegen-power.C b/dyninstAPI/src/codegen-power.C index fd1e3d8812..b20864fd07 100644 --- a/dyninstAPI/src/codegen-power.C +++ b/dyninstAPI/src/codegen-power.C @@ -941,41 +941,6 @@ void insnCodeGen::generateNOOP(codeGen &gen, unsigned size) } } -void insnCodeGen::generateSimple(codeGen &gen, int op, - Register src1, Register src2, - Register dest) -{ - instruction insn; - - int xop=-1; - insn.clear(); - XFORM_OP_SET(insn, op); - XFORM_RT_SET(insn, src1); - XFORM_RA_SET(insn, dest); - XFORM_RB_SET(insn, src2); - if (op==ANDop) { - xop=ANDxop; - /* - * FIXME: The "else if" condition and code below are commented out to remove - * a duplicate branch condition as both ANDop and ORop have the same value. - * This implies that the assignment in this branch is never executed. - * Further tests to distinguish between the AND and OR op are needed or this - * code should be eliminated - * - - } else if (op==ORop) { - xop=ORxop; - - * - */ - } else { - // only AND and OR are currently designed to use genSimpleInsn - assert(0); - } - XFORM_XO_SET(insn, xop); - insnCodeGen::generate(gen,insn); -} - void insnCodeGen::generateRelOp(codeGen &gen, int cond, int mode, Register rs1, Register rs2, Register rd, bool s) { diff --git a/dyninstAPI/src/codegen-power.h b/dyninstAPI/src/codegen-power.h index 2465e725ee..72a23629c8 100644 --- a/dyninstAPI/src/codegen-power.h +++ b/dyninstAPI/src/codegen-power.h @@ -93,9 +93,6 @@ class insnCodeGen { int shift, Register ra, bool s); static void generateNOOP(codeGen &gen, unsigned size = 4); - static void generateSimple(codeGen &gen, - int op, Register src1, - Register src2, Register dest); static void generateRelOp(codeGen &gen, int cond, int mode, Register rs1, Register rs2, Register rd, bool s); From 2e47a639674799483044fc5c2c1d67e3a07d669c Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 26 Oct 2021 10:01:14 -0500 Subject: [PATCH 015/505] Remove NO_INITIALIZER_LIST_SUPPORT (#1125) Fixes #1124 Co-authored-by: Tim Haines --- dataflowAPI/src/RegisterMap.C | 737 ---------------------------------- 1 file changed, 737 deletions(-) diff --git a/dataflowAPI/src/RegisterMap.C b/dataflowAPI/src/RegisterMap.C index 90a192056b..c55de1f49c 100644 --- a/dataflowAPI/src/RegisterMap.C +++ b/dataflowAPI/src/RegisterMap.C @@ -29,11 +29,6 @@ */ #include "dataflowAPI/src/RegisterMap.h" -#include -#include -#include - -using namespace boost::assign; // We use the singleton approach, rather than static construction, to ensure the // register maps are created correctly. In at least one case (Ubuntu 12.04) they @@ -42,11 +37,6 @@ using namespace boost::assign; namespace Dyninst { namespace DataflowAPI { -#if !defined(NO_INITIALIZER_LIST_SUPPORT) && (!defined(os_windows) || _MSC_VER >= 1900) - // This doesn't fail on VS 2015, but may fail on other versions post 2010. - // This fails on VS2010; revisit when we move to VS2012. - // Also on gcc 4.3. - RegisterMap &machRegIndex_x86() { static dyn_tls RegisterMap* mrmap = NULL; if (mrmap == NULL) { @@ -867,732 +857,5 @@ RegisterMap &machRegIndex_aarch64() { return *mrmap; } -#else - // This fails on VS 2015... but not VS 2010... -RegisterMap &machRegIndex_x86() { - static dyn_tls RegisterMap* mrmap = NULL; - if (mrmap == NULL) { - mrmap = new RegisterMap(); - *mrmap = map_list_of - (x86::eax, 0) - (x86::ecx, 1) - (x86::edx, 2) - (x86::ebx, 3) - (x86::esp, 4) - (x86::ebp, 5) - (x86::esi, 6) - (x86::edi, 7) - (x86::eip, 8) - (x86::cf, 9) - (x86::flag1, 10) - (x86::pf, 11) - (x86::flag3, 12) - (x86::af, 13) - (x86::flag5, 14) - (x86::zf, 15) - (x86::sf, 16) - (x86::tf, 17) - (x86::if_, 18) - (x86::df, 19) - (x86::of, 20) - (x86::flagc, 21) - (x86::flagd, 22) - (x86::nt_, 23) - (x86::flagf, 24) - (x86::rf, 25) - (x86::ds, 26) - (x86::es, 27) - (x86::fs, 28) - (x86::gs, 29) - (x86::cs, 30) - (x86::ss, 31) - (x86::oeax, 32) - (x86::fsbase, 33) - (x86::gsbase, 34) - (x86::xmm0, 35) - (x86::xmm1, 36) - (x86::xmm2, 37) - (x86::xmm3, 38) - (x86::xmm4, 39) - (x86::xmm5, 40) - (x86::xmm6, 41) - (x86::xmm7, 42) - (x86::mm0, 43) // mm0 to mm7 and st0 to st7 collapse to mm0 - (x86::cr0, 44) - (x86::cr1, 45) - (x86::cr2, 46) - (x86::cr3, 47) - (x86::cr4, 48) - (x86::cr5, 49) - (x86::cr6, 50) - (x86::cr7, 51) - (x86::dr0, 52) - (x86::dr1, 53) - (x86::dr2, 54) - (x86::dr3, 55) - (x86::dr4, 56) - (x86::dr5, 57) - (x86::dr6, 58) - (x86::dr7, 59) - (x86::tr0, 60) - (x86::tr1, 61) - (x86::tr2, 62) - (x86::tr3, 63) - (x86::tr4, 64) - (x86::tr5, 65) - (x86::tr6, 66) - (x86::tr7, 67); - } - return *mrmap; -} - -RegisterMap &machRegIndex_x86_64() { - static dyn_tls RegisterMap* mrmap = NULL; - if (mrmap == NULL) { - mrmap = new RegisterMap(); - *mrmap = map_list_of - (x86_64::rax, 0) - (x86_64::rcx, 1) - (x86_64::rdx, 2) - (x86_64::rbx, 3) - (x86_64::rsp, 4) - (x86_64::rbp, 5) - (x86_64::rsi, 6) - (x86_64::rdi, 7) - (x86_64::r8, 8) - (x86_64::r9, 9) - (x86_64::r10, 10) - (x86_64::r11, 11) - (x86_64::r12, 12) - (x86_64::r13, 13) - (x86_64::r14, 14) - (x86_64::r15, 15) - (x86_64::rip, 16) - (x86_64::cf, 17) - (x86_64::pf, 18) - (x86_64::af, 19) - (x86_64::zf, 20) - (x86_64::sf, 21) - (x86_64::tf, 22) - (x86_64::if_, 23) - (x86_64::df, 24) - (x86_64::of, 25) - (x86_64::nt_, 26) - (x86_64::rf, 27) - (x86_64::ds, 28) - (x86_64::es, 29) - (x86_64::fs, 30) - (x86_64::gs, 31) - (x86_64::cs, 32) - (x86_64::ss, 33) - (x86_64::orax, 34) - (x86_64::fsbase, 35) - (x86_64::gsbase, 36) - (x86_64::k0, 37) - (x86_64::k1, 38) - (x86_64::k2, 39) - (x86_64::k3, 40) - (x86_64::k4, 41) - (x86_64::k5, 42) - (x86_64::k6, 43) - (x86_64::k7, 44) - (x86_64::zmm0, 45) - (x86_64::zmm1, 46) - (x86_64::zmm2, 47) - (x86_64::zmm3, 48) - (x86_64::zmm4, 49) - (x86_64::zmm5, 50) - (x86_64::zmm6, 51) - (x86_64::zmm7, 52) - (x86_64::zmm8, 53) - (x86_64::zmm9, 54) - (x86_64::zmm10, 55) - (x86_64::zmm11, 56) - (x86_64::zmm12, 57) - (x86_64::zmm13, 58) - (x86_64::zmm14, 59) - (x86_64::zmm15, 60) - (x86_64::zmm16, 61) - (x86_64::zmm17, 62) - (x86_64::zmm18, 63) - (x86_64::zmm19, 64) - (x86_64::zmm20, 65) - (x86_64::zmm21, 66) - (x86_64::zmm22, 67) - (x86_64::zmm23, 68) - (x86_64::zmm24, 69) - (x86_64::zmm25, 70) - (x86_64::zmm26, 71) - (x86_64::zmm27, 72) - (x86_64::zmm28, 73) - (x86_64::zmm29, 74) - (x86_64::zmm30, 75) - (x86_64::zmm31, 75) - (x86_64::ymm0, 76) - (x86_64::ymm1, 77) - (x86_64::ymm2, 78) - (x86_64::ymm3, 79) - (x86_64::ymm4, 80) - (x86_64::ymm5, 81) - (x86_64::ymm6, 82) - (x86_64::ymm7, 83) - (x86_64::ymm8, 84) - (x86_64::ymm9, 85) - (x86_64::ymm10, 86) - (x86_64::ymm11, 87) - (x86_64::ymm12, 88) - (x86_64::ymm13, 89) - (x86_64::ymm14, 90) - (x86_64::ymm15, 91) - (x86_64::ymm16, 92) - (x86_64::ymm17, 93) - (x86_64::ymm18, 94) - (x86_64::ymm19, 95) - (x86_64::ymm20, 96) - (x86_64::ymm21, 97) - (x86_64::ymm22, 98) - (x86_64::ymm23, 99) - (x86_64::ymm24, 100) - (x86_64::ymm25, 101) - (x86_64::ymm26, 102) - (x86_64::ymm27, 103) - (x86_64::ymm28, 104) - (x86_64::ymm29, 105) - (x86_64::ymm30, 106) - (x86_64::ymm31, 107) - (x86_64::xmm0, 108) - (x86_64::xmm1, 109) - (x86_64::xmm2, 110) - (x86_64::xmm3, 111) - (x86_64::xmm4, 112) - (x86_64::xmm5, 113) - (x86_64::xmm6, 114) - (x86_64::xmm7, 115) - (x86_64::xmm8, 116) - (x86_64::xmm9, 117) - (x86_64::xmm10, 118) - (x86_64::xmm11, 119) - (x86_64::xmm12, 120) - (x86_64::xmm13, 121) - (x86_64::xmm14, 122) - (x86_64::xmm15, 123) - (x86_64::xmm16, 124) - (x86_64::xmm17, 125) - (x86_64::xmm18, 126) - (x86_64::xmm19, 127) - (x86_64::xmm20, 128) - (x86_64::xmm21, 129) - (x86_64::xmm22, 130) - (x86_64::xmm23, 131) - (x86_64::xmm24, 132) - (x86_64::xmm25, 133) - (x86_64::xmm26, 134) - (x86_64::xmm27, 135) - (x86_64::xmm28, 136) - (x86_64::xmm29, 137) - (x86_64::xmm30, 138) - (x86_64::xmm31, 139) - (x86_64::mm0, 140) // mm0 to mm7 and st0 to st7 collapse to mm0 - (x86_64::cr0, 141) - (x86_64::cr1, 142) - (x86_64::cr2, 143) - (x86_64::cr3, 144) - (x86_64::cr4, 145) - (x86_64::cr5, 146) - (x86_64::cr6, 147) - (x86_64::cr7, 148) - (x86_64::dr0, 149) - (x86_64::dr1, 150) - (x86_64::dr2, 151) - (x86_64::dr3, 152) - (x86_64::dr4, 153) - (x86_64::dr5, 154) - (x86_64::dr6, 155) - (x86_64::dr7, 156) - (x86_64::tr0, 157) - (x86_64::tr1, 158) - (x86_64::tr2, 159) - (x86_64::tr3, 160) - (x86_64::tr4, 161) - (x86_64::tr5, 162) - (x86_64::tr6, 163) - (x86_64::tr7, 164) - ; - } - return *mrmap; -} - -RegisterMap &machRegIndex_ppc() { - static dyn_tls RegisterMap* mrmap = NULL; - if (mrmap == NULL) { - mrmap = new RegisterMap(); - *mrmap = map_list_of - (ppc32::r0, 0) - (ppc32::r1, 1) - (ppc32::r2, 2) - (ppc32::r3, 3) - (ppc32::r4, 4) - (ppc32::r5, 5) - (ppc32::r6, 6) - (ppc32::r7, 7) - (ppc32::r8, 8) - (ppc32::r9, 9) - (ppc32::r10, 10) - (ppc32::r11, 11) - (ppc32::r12, 12) - (ppc32::r13, 13) - (ppc32::r14, 14) - (ppc32::r15, 15) - (ppc32::r16, 16) - (ppc32::r17, 17) - (ppc32::r18, 18) - (ppc32::r19, 19) - (ppc32::r20, 20) - (ppc32::r21, 21) - (ppc32::r22, 22) - (ppc32::r23, 23) - (ppc32::r24, 24) - (ppc32::r25, 25) - (ppc32::r26, 26) - (ppc32::r27, 27) - (ppc32::r28, 28) - (ppc32::r29, 29) - (ppc32::r30, 30) - (ppc32::r31, 31) - (ppc32::fpr0, 32) - (ppc32::fpr1, 33) - (ppc32::fpr2, 34) - (ppc32::fpr3, 35) - (ppc32::fpr4, 36) - (ppc32::fpr5, 37) - (ppc32::fpr6, 38) - (ppc32::fpr7, 39) - (ppc32::fpr8, 40) - (ppc32::fpr9, 41) - (ppc32::fpr10, 42) - (ppc32::fpr11, 43) - (ppc32::fpr12, 44) - (ppc32::fpr13, 45) - (ppc32::fpr14, 46) - (ppc32::fpr15, 47) - (ppc32::fpr16, 48) - (ppc32::fpr17, 49) - (ppc32::fpr18, 50) - (ppc32::fpr19, 51) - (ppc32::fpr20, 52) - (ppc32::fpr21, 53) - (ppc32::fpr22, 54) - (ppc32::fpr23, 55) - (ppc32::fpr24, 56) - (ppc32::fpr25, 57) - (ppc32::fpr26, 58) - (ppc32::fpr27, 59) - (ppc32::fpr28, 60) - (ppc32::fpr29, 61) - (ppc32::fpr30, 62) - (ppc32::fpr31, 63) - (ppc32::fsr0, 64) - (ppc32::fsr1, 65) - (ppc32::fsr2, 66) - (ppc32::fsr3, 67) - (ppc32::fsr4, 68) - (ppc32::fsr5, 69) - (ppc32::fsr6, 70) - (ppc32::fsr7, 71) - (ppc32::fsr8, 72) - (ppc32::fsr9, 73) - (ppc32::fsr10, 74) - (ppc32::fsr11, 75) - (ppc32::fsr12, 76) - (ppc32::fsr13, 77) - (ppc32::fsr14, 78) - (ppc32::fsr15, 79) - (ppc32::fsr16, 80) - (ppc32::fsr17, 81) - (ppc32::fsr18, 82) - (ppc32::fsr19, 83) - (ppc32::fsr20, 84) - (ppc32::fsr21, 85) - (ppc32::fsr22, 86) - (ppc32::fsr23, 87) - (ppc32::fsr24, 88) - (ppc32::fsr25, 89) - (ppc32::fsr26, 90) - (ppc32::fsr27, 91) - (ppc32::fsr28, 92) - (ppc32::fsr29, 93) - (ppc32::fsr30, 94) - (ppc32::fsr31, 95) - (ppc32::mq, 96) - (ppc32::xer, 97) - (ppc32::lr, 98) - (ppc32::ctr, 99) - (ppc32::dsisr, 100) - (ppc32::dar, 101) - (ppc32::dec, 102) - (ppc32::sdr1, 103) - (ppc32::srr0, 104) - (ppc32::srr1, 105) - (ppc32::sprg0, 106) - (ppc32::sprg1, 107) - (ppc32::sprg2, 108) - (ppc32::sprg3, 109) - (ppc32::sprg3_ro, 109) - (ppc32::ear, 110) - (ppc32::tbl_wo, 111) - (ppc32::tbl_ro, 111) - (ppc32::tbu_wo, 112) - (ppc32::tbu_ro, 112) - (ppc32::pvr, 113) - (ppc32::ibat0u, 114) - (ppc32::ibat0l, 115) - (ppc32::ibat1u, 116) - (ppc32::ibat1l, 117) - (ppc32::ibat2u, 118) - (ppc32::ibat2l, 119) - (ppc32::ibat3u, 120) - (ppc32::ibat3l, 121) - (ppc32::dbat0u, 122) - (ppc32::dbat0l, 123) - (ppc32::dbat1u, 124) - (ppc32::dbat1l, 125) - (ppc32::dbat2u, 126) - (ppc32::dbat2l, 127) - (ppc32::dbat3u, 128) - (ppc32::dbat3l, 129) - (ppc32::pc, 130) - (ppc32::fpscw, 131) - (ppc32::fpscw0, 132) - (ppc32::fpscw1, 133) - (ppc32::fpscw2, 134) - (ppc32::fpscw3, 135) - (ppc32::fpscw4, 136) - (ppc32::fpscw5, 137) - (ppc32::fpscw6, 138) - (ppc32::fpscw7, 139) - (ppc32::msr, 140) - (ppc32::ivpr, 141) - (ppc32::ivor8, 142) - (ppc32::seg0, 143) - (ppc32::seg1, 144) - (ppc32::seg2, 145) - (ppc32::seg3, 146) - (ppc32::seg4, 147) - (ppc32::seg5, 148) - (ppc32::seg6, 149) - (ppc32::seg7, 150) - (ppc32::cr0, 151) - (ppc32::cr1, 152) - (ppc32::cr2, 153) - (ppc32::cr3, 154) - (ppc32::cr4, 155) - (ppc32::cr5, 156) - (ppc32::cr6, 157) - (ppc32::cr7, 158) - (ppc32::cr, 159) - (ppc32::sprg4, 160) - (ppc32::sprg4_ro, 160) - (ppc32::sprg5, 161) - (ppc32::sprg5_ro, 161) - (ppc32::sprg6, 162) - (ppc32::sprg6_ro, 162) - (ppc32::sprg7, 163) - (ppc32::sprg7_ro, 163); - } - return *mrmap; -} - -RegisterMap &machRegIndex_ppc_64() { - static dyn_tls RegisterMap* mrmap = NULL; - if (mrmap == NULL) { - mrmap = new RegisterMap(); - *mrmap = map_list_of - (ppc64::r0, 0) - (ppc64::r1, 1) - (ppc64::r2, 2) - (ppc64::r3, 3) - (ppc64::r4, 4) - (ppc64::r5, 5) - (ppc64::r6, 6) - (ppc64::r7, 7) - (ppc64::r8, 8) - (ppc64::r9, 9) - (ppc64::r10, 10) - (ppc64::r11, 11) - (ppc64::r12, 12) - (ppc64::r13, 13) - (ppc64::r14, 14) - (ppc64::r15, 15) - (ppc64::r16, 16) - (ppc64::r17, 17) - (ppc64::r18, 18) - (ppc64::r19, 19) - (ppc64::r20, 20) - (ppc64::r21, 21) - (ppc64::r22, 22) - (ppc64::r23, 23) - (ppc64::r24, 24) - (ppc64::r25, 25) - (ppc64::r26, 26) - (ppc64::r27, 27) - (ppc64::r28, 28) - (ppc64::r29, 29) - (ppc64::r30, 30) - (ppc64::r31, 31) - (ppc64::fpr0, 32) - (ppc64::fpr1, 33) - (ppc64::fpr2, 34) - (ppc64::fpr3, 35) - (ppc64::fpr4, 36) - (ppc64::fpr5, 37) - (ppc64::fpr6, 38) - (ppc64::fpr7, 39) - (ppc64::fpr8, 40) - (ppc64::fpr9, 41) - (ppc64::fpr10, 42) - (ppc64::fpr11, 43) - (ppc64::fpr12, 44) - (ppc64::fpr13, 45) - (ppc64::fpr14, 46) - (ppc64::fpr15, 47) - (ppc64::fpr16, 48) - (ppc64::fpr17, 49) - (ppc64::fpr18, 50) - (ppc64::fpr19, 51) - (ppc64::fpr20, 52) - (ppc64::fpr21, 53) - (ppc64::fpr22, 54) - (ppc64::fpr23, 55) - (ppc64::fpr24, 56) - (ppc64::fpr25, 57) - (ppc64::fpr26, 58) - (ppc64::fpr27, 59) - (ppc64::fpr28, 60) - (ppc64::fpr29, 61) - (ppc64::fpr30, 62) - (ppc64::fpr31, 63) - (ppc64::fsr0, 64) - (ppc64::fsr1, 65) - (ppc64::fsr2, 66) - (ppc64::fsr3, 67) - (ppc64::fsr4, 68) - (ppc64::fsr5, 69) - (ppc64::fsr6, 70) - (ppc64::fsr7, 71) - (ppc64::fsr8, 72) - (ppc64::fsr9, 73) - (ppc64::fsr10, 74) - (ppc64::fsr11, 75) - (ppc64::fsr12, 76) - (ppc64::fsr13, 77) - (ppc64::fsr14, 78) - (ppc64::fsr15, 79) - (ppc64::fsr16, 80) - (ppc64::fsr17, 81) - (ppc64::fsr18, 82) - (ppc64::fsr19, 83) - (ppc64::fsr20, 84) - (ppc64::fsr21, 85) - (ppc64::fsr22, 86) - (ppc64::fsr23, 87) - (ppc64::fsr24, 88) - (ppc64::fsr25, 89) - (ppc64::fsr26, 90) - (ppc64::fsr27, 91) - (ppc64::fsr28, 92) - (ppc64::fsr29, 93) - (ppc64::fsr30, 94) - (ppc64::fsr31, 95) - (ppc64::mq, 96) - (ppc64::xer, 97) - (ppc64::lr, 98) - (ppc64::ctr, 99) - (ppc64::dsisr, 100) - (ppc64::dar, 101) - (ppc64::dec, 102) - (ppc64::sdr1, 103) - (ppc64::srr0, 104) - (ppc64::srr1, 105) - (ppc64::sprg0, 106) - (ppc64::sprg1, 107) - (ppc64::sprg2, 108) - (ppc64::sprg3, 109) - (ppc64::sprg3_ro, 109) - (ppc64::ear, 110) - (ppc64::tbl_wo, 111) - (ppc64::tbl_ro, 111) - (ppc64::tbu_wo, 112) - (ppc64::tbu_ro, 112) - (ppc64::pvr, 113) - (ppc64::ibat0u, 114) - (ppc64::ibat0l, 115) - (ppc64::ibat1u, 116) - (ppc64::ibat1l, 117) - (ppc64::ibat2u, 118) - (ppc64::ibat2l, 119) - (ppc64::ibat3u, 120) - (ppc64::ibat3l, 121) - (ppc64::dbat0u, 122) - (ppc64::dbat0l, 123) - (ppc64::dbat1u, 124) - (ppc64::dbat1l, 125) - (ppc64::dbat2u, 126) - (ppc64::dbat2l, 127) - (ppc64::dbat3u, 128) - (ppc64::dbat3l, 129) - (ppc64::pc, 130) - (ppc64::fpscw, 131) - (ppc64::fpscw0, 132) - (ppc64::fpscw1, 133) - (ppc64::fpscw2, 134) - (ppc64::fpscw3, 135) - (ppc64::fpscw4, 136) - (ppc64::fpscw5, 137) - (ppc64::fpscw6, 138) - (ppc64::fpscw7, 139) - (ppc64::msr, 140) - (ppc64::ivpr, 141) - (ppc64::ivor8, 142) - (ppc64::seg0, 143) - (ppc64::seg1, 144) - (ppc64::seg2, 145) - (ppc64::seg3, 146) - (ppc64::seg4, 147) - (ppc64::seg5, 148) - (ppc64::seg6, 149) - (ppc64::seg7, 150) - (ppc64::cr0, 151) - (ppc64::cr1, 152) - (ppc64::cr2, 153) - (ppc64::cr3, 154) - (ppc64::cr4, 155) - (ppc64::cr5, 156) - (ppc64::cr6, 157) - (ppc64::cr7, 158) - (ppc64::cr, 159) - (ppc64::sprg4, 160) - (ppc64::sprg4_ro, 160) - (ppc64::sprg5, 161) - (ppc64::sprg5_ro, 161) - (ppc64::sprg6, 162) - (ppc64::sprg6_ro, 162) - (ppc64::sprg7, 163) - (ppc64::sprg7_ro, 163); - } - return *mrmap; -} - -RegisterMap &machRegIndex_aarch64() { - static dyn_tls RegisterMap* mrmap = NULL; - if (mrmap == NULL) { - mrmap = new RegisterMap(); - *mrmap = map_list_of - (aarch64::x0, 0) - (aarch64::x1, 1) - (aarch64::x2, 2) - (aarch64::x3, 3) - (aarch64::x4, 4) - (aarch64::x5, 5) - (aarch64::x6, 6) - (aarch64::x7, 7) - (aarch64::x8, 8) - (aarch64::x9, 9) - (aarch64::x10, 10) - (aarch64::x11, 11) - (aarch64::x12, 12) - (aarch64::x13, 13) - (aarch64::x14, 14) - (aarch64::x15, 15) - (aarch64::x16, 16) - (aarch64::x17, 17) - (aarch64::x18, 18) - (aarch64::x19, 19) - (aarch64::x20, 20) - (aarch64::x21, 21) - (aarch64::x22, 22) - (aarch64::x23, 23) - (aarch64::x24, 24) - (aarch64::x25, 25) - (aarch64::x26, 26) - (aarch64::x27, 27) - (aarch64::x28, 28) - (aarch64::x29, 29) - (aarch64::x30, 30) - (aarch64::w0, 0) - (aarch64::w1, 1) - (aarch64::w2, 2) - (aarch64::w3, 3) - (aarch64::w4, 4) - (aarch64::w5, 5) - (aarch64::w6, 6) - (aarch64::w7, 7) - (aarch64::w8, 8) - (aarch64::w9, 9) - (aarch64::w10, 10) - (aarch64::w11, 11) - (aarch64::w12, 12) - (aarch64::w13, 13) - (aarch64::w14, 14) - (aarch64::w15, 15) - (aarch64::w16, 16) - (aarch64::w17, 17) - (aarch64::w18, 18) - (aarch64::w19, 19) - (aarch64::w20, 20) - (aarch64::w21, 21) - (aarch64::w22, 22) - (aarch64::w23, 23) - (aarch64::w24, 24) - (aarch64::w25, 25) - (aarch64::w26, 26) - (aarch64::w27, 27) - (aarch64::w28, 28) - (aarch64::w29, 29) - (aarch64::w30, 30) - (aarch64::q0, 31) - (aarch64::q1, 32) - (aarch64::q2, 33) - (aarch64::q3, 34) - (aarch64::q4, 35) - (aarch64::q5, 36) - (aarch64::q6, 37) - (aarch64::q7, 38) - (aarch64::q8, 39) - (aarch64::q9, 40) - (aarch64::q10, 41) - (aarch64::q11, 42) - (aarch64::q12, 43) - (aarch64::q13, 44) - (aarch64::q14, 45) - (aarch64::q15, 46) - (aarch64::q16, 47) - (aarch64::q17, 48) - (aarch64::q18, 49) - (aarch64::q19, 50) - (aarch64::q20, 51) - (aarch64::q21, 52) - (aarch64::q22, 53) - (aarch64::q23, 54) - (aarch64::q24, 55) - (aarch64::q25, 56) - (aarch64::q26, 57) - (aarch64::q27, 58) - (aarch64::q28, 59) - (aarch64::q29, 60) - (aarch64::q30, 61) - (aarch64::q31, 62) - (aarch64::fpcr,63) - (aarch64::fpsr,64) - (aarch64::pc, 65) - (aarch64::sp, 66) - (aarch64::pstate, 67) - (aarch64::xzr, 68); - } - - return mrmap; -} - -#endif - }; }; From c25d094541220cccc8eeb1ef1de1f985e5ff643a Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 26 Oct 2021 10:24:05 -0500 Subject: [PATCH 016/505] Remove DynC tests (#1126) These have been moved to the examples repository. https://github.com/dyninst/examples/pull/25 Co-authored-by: Tim Haines --- dynC_API/make.test.module.tmpl | 39 --- dynC_API/tests/i386-unknown-linux2.4/Makefile | 36 --- dynC_API/tests/i386-unknown-nt4.0/Makefile | 36 --- dynC_API/tests/i386-unknown-winXP/Makefile | 36 --- dynC_API/tests/ppc32_linux/Makefile | 36 --- dynC_API/tests/ppc64_linux/Makefile | 36 --- dynC_API/tests/testMutatee.cpp | 62 ----- dynC_API/tests/testMutator.cpp | 135 ---------- dynC_API/tests/testStatements | 1 - dynC_API/tests/testStatements2 | 1 - dynC_API/tests/testStatements3 | 5 - .../tests/x86_64-unknown-linux2.4/Makefile | 36 --- .../tests/x86_64-unknown-linux2.4/foo.txt | 254 ------------------ 13 files changed, 713 deletions(-) delete mode 100644 dynC_API/make.test.module.tmpl delete mode 100644 dynC_API/tests/i386-unknown-linux2.4/Makefile delete mode 100644 dynC_API/tests/i386-unknown-nt4.0/Makefile delete mode 100644 dynC_API/tests/i386-unknown-winXP/Makefile delete mode 100644 dynC_API/tests/ppc32_linux/Makefile delete mode 100644 dynC_API/tests/ppc64_linux/Makefile delete mode 100644 dynC_API/tests/testMutatee.cpp delete mode 100644 dynC_API/tests/testMutator.cpp delete mode 100644 dynC_API/tests/testStatements delete mode 100644 dynC_API/tests/testStatements2 delete mode 100644 dynC_API/tests/testStatements3 delete mode 100644 dynC_API/tests/x86_64-unknown-linux2.4/Makefile delete mode 100644 dynC_API/tests/x86_64-unknown-linux2.4/foo.txt diff --git a/dynC_API/make.test.module.tmpl b/dynC_API/make.test.module.tmpl deleted file mode 100644 index fc4e2fa4e0..0000000000 --- a/dynC_API/make.test.module.tmpl +++ /dev/null @@ -1,39 +0,0 @@ -# -# Common makefile template for dyninst Tests. This file is not intended to -# be a useful Makefile in isolation; instead, it should be included -# from within an architecture-specific Makefile. -# -# $Id: make.module.tmpl,v 1.26 2008/02/20 08:31:02 jaw Exp $ -# - -SUITE_NAME = DynC -RELEASE_NUM = 5.00 -#BUILD_MARK should be (re-)defined in core/make.config.local rather than here! - -SRCS += ../$(TARGET).C - -IFLAGS += -I$(TO_CORE)/dyninstAPI/h -IFLAGS += -I$(TO_CORE)/dyninstAPI/src -IFLAGS += -I$(TO_CORE)/symtabAPI/h -IFLAGS += -I$(TO_CORE)/dynutil/h -IFLAGS += -I$(TO_CORE)/commandAPI/h -IFLAGS += -I$(TO_CORE)/commandAPI/src -IFLAGS += -I$(TO_CORE)/instructionAPI/h - -CXXFLAGS += $(BASICWARNINGS) -CFLAGS += $(BASICWARNINGS) - -# GCC has a new mangled name squisher (-fsquangle) which can be -# set to "on" by default. This causes linker problems, so we -# default to "off". - -ifdef GCC_2_95 -CFLAGS += -fno-squangle -CXXFLAGS += -fno-squangle -endif - -LIBS += -ldyninstAPI -lsymtabAPI -lcommon -L$(TO_CORE)/dynCAPI/$(PLATFORM) -ldynCAPI - -SYSLIBS += -liberty -L$(TCLTK_LIB_DIR) $(TCL_LIB) - -all: $(TARGET) diff --git a/dynC_API/tests/i386-unknown-linux2.4/Makefile b/dynC_API/tests/i386-unknown-linux2.4/Makefile deleted file mode 100644 index 53a2265345..0000000000 --- a/dynC_API/tests/i386-unknown-linux2.4/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BASE = -DYNINST_ROOT = ../../../.. -CXX = g++ -CXXFLAGS = -g -Wall -Dos_linux=24 -Wall -fno-inline -INCLUDE = -LDFLAGS = - -PLATFORM = i386-unknown-linux2.4 -DYNLDFLAGS = -L/p/paradyn/packages/libelf/lib\ - -L/p/paradyn/packages/libdwarf/lib\ - -L$(DYNINST_ROOT)/$(PLATFORM)/lib\ - -lelf -ldwarf -lcommon -linstructionAPI -lsymtabAPI\ - -lparseAPI -ldyninstAPI -ldynC_API -DYNINCLUDE = -I$(DYNINST_ROOT)/dyninst/dyninstAPI/h -I$(DYNINST_ROOT)/include - -#DYNCXXFLAGS += -Dos_linux=24 -Wall -o -Darch_x86_64 - -TARG = myMutatee myMutator -#V = @ #Verbose (comment to make verbose) - -all: $(TARG) - -%.o:../%.cpp - @echo + cc $< - $(V)$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(DYNINCLUDE) -o $@ $< - -myMutatee: testMutatee.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ - -myMutator: testMutator.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(DYNLDFLAGS) -o $@ $^ - -clean: - rm -f *.o core.* $(TARG) diff --git a/dynC_API/tests/i386-unknown-nt4.0/Makefile b/dynC_API/tests/i386-unknown-nt4.0/Makefile deleted file mode 100644 index 10089ddf72..0000000000 --- a/dynC_API/tests/i386-unknown-nt4.0/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BASE = -DYNINST_ROOT = ../../../.. -CXX = g++ -CXXFLAGS = -g -Wall -Dos_linux=24 -Wall -Darch_x86_64 -fno-inline -INCLUDE = -LDFLAGS = - -PLATFORM = i386-unknown-nt4.0 -DYNLDFLAGS = -L/p/paradyn/packages/libelf/lib\ - -L/p/paradyn/packages/libdwarf/lib\ - -L$(DYNINST_ROOT)/$(PLATFORM)/lib\ - -lelf -ldwarf -lcommon -linstructionAPI -lsymtabAPI\ - -lparseAPI -ldyninstAPI -ldynC_API -DYNINCLUDE = -I$(DYNINST_ROOT)/dyninst/dyninstAPI/h -I$(DYNINST_ROOT)/include - -#DYNCXXFLAGS += -Dos_linux=24 -Wall -o -Darch_x86_64 - -TARG = myMutatee myMutator -#V = @ #Verbose (comment to make verbose) - -all: $(TARG) - -%.o:../%.cpp - @echo + cc $< - $(V)$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(DYNINCLUDE) -o $@ $< - -myMutatee: testMutatee.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ - -myMutator: testMutator.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(DYNLDFLAGS) -o $@ $^ - -clean: - rm -f *.o core.* $(TARG) diff --git a/dynC_API/tests/i386-unknown-winXP/Makefile b/dynC_API/tests/i386-unknown-winXP/Makefile deleted file mode 100644 index 170bbf90cd..0000000000 --- a/dynC_API/tests/i386-unknown-winXP/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BASE = -DYNINST_ROOT = ../../../.. -CXX = g++ -CXXFLAGS = -g -Wall -Dos_linux=24 -Wall -Darch_x86_64 -fno-inline -INCLUDE = -LDFLAGS = - -PLATFORM = i386-unknown-winXP -DYNLDFLAGS = -L/p/paradyn/packages/libelf/lib\ - -L/p/paradyn/packages/libdwarf/lib\ - -L$(DYNINST_ROOT)/$(PLATFORM)/lib\ - -lelf -ldwarf -lcommon -linstructionAPI -lsymtabAPI\ - -lparseAPI -ldyninstAPI -ldynC_API -DYNINCLUDE = -I$(DYNINST_ROOT)/dyninst/dyninstAPI/h -I$(DYNINST_ROOT)/include - -#DYNCXXFLAGS += -Dos_linux=24 -Wall -o -Darch_x86_64 - -TARG = myMutatee myMutator -#V = @ #Verbose (comment to make verbose) - -all: $(TARG) - -%.o:../%.cpp - @echo + cc $< - $(V)$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(DYNINCLUDE) -o $@ $< - -myMutatee: testMutatee.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ - -myMutator: testMutator.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(DYNLDFLAGS) -o $@ $^ - -clean: - rm -f *.o core.* $(TARG) diff --git a/dynC_API/tests/ppc32_linux/Makefile b/dynC_API/tests/ppc32_linux/Makefile deleted file mode 100644 index a7d3dd643f..0000000000 --- a/dynC_API/tests/ppc32_linux/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BASE = -DYNINST_ROOT = ../../../.. -CXX = g++ -CXXFLAGS = -g -Wall -Dos_linux=24 -Wall -Darch_x86_64 -fno-inline -INCLUDE = -LDFLAGS = - -PLATFORM = ppc32_linux -DYNLDFLAGS = -L/p/paradyn/packages/libelf/lib\ - -L/p/paradyn/packages/libdwarf/lib\ - -L$(DYNINST_ROOT)/$(PLATFORM)/lib\ - -lelf -ldwarf -lcommon -linstructionAPI -lsymtabAPI\ - -lparseAPI -ldyninstAPI -ldynC_API -DYNINCLUDE = -I$(DYNINST_ROOT)/dyninst/dyninstAPI/h -I$(DYNINST_ROOT)/include - -#DYNCXXFLAGS += -Dos_linux=24 -Wall -o -Darch_x86_64 - -TARG = myMutatee myMutator -#V = @ #Verbose (comment to make verbose) - -all: $(TARG) - -%.o:../%.cpp - @echo + cc $< - $(V)$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(DYNINCLUDE) -o $@ $< - -myMutatee: testMutatee.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ - -myMutator: testMutator.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(DYNLDFLAGS) -o $@ $^ - -clean: - rm -f *.o core.* $(TARG) diff --git a/dynC_API/tests/ppc64_linux/Makefile b/dynC_API/tests/ppc64_linux/Makefile deleted file mode 100644 index 02317ead95..0000000000 --- a/dynC_API/tests/ppc64_linux/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BASE = -DYNINST_ROOT = ../../../.. -CXX = g++ -CXXFLAGS = -g -Wall -Dos_linux=24 -Wall -Darch_x86_64 -fno-inline -INCLUDE = -LDFLAGS = - -PLATFORM = ppc64_linux -DYNLDFLAGS = -L/p/paradyn/packages/libelf/lib\ - -L/p/paradyn/packages/libdwarf/lib\ - -L$(DYNINST_ROOT)/$(PLATFORM)/lib\ - -lelf -ldwarf -lcommon -linstructionAPI -lsymtabAPI\ - -lparseAPI -ldyninstAPI -ldynC_API -DYNINCLUDE = -I$(DYNINST_ROOT)/dyninst/dyninstAPI/h -I$(DYNINST_ROOT)/include - -#DYNCXXFLAGS += -Dos_linux=24 -Wall -o -Darch_x86_64 - -TARG = myMutatee myMutator -#V = @ #Verbose (comment to make verbose) - -all: $(TARG) - -%.o:../%.cpp - @echo + cc $< - $(V)$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(DYNINCLUDE) -o $@ $< - -myMutatee: testMutatee.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ - -myMutator: testMutator.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(DYNLDFLAGS) -o $@ $^ - -clean: - rm -f *.o core.* $(TARG) diff --git a/dynC_API/tests/testMutatee.cpp b/dynC_API/tests/testMutatee.cpp deleted file mode 100644 index 9183caa087..0000000000 --- a/dynC_API/tests/testMutatee.cpp +++ /dev/null @@ -1,62 +0,0 @@ -// myMutatee - -#include -int hi = 0; -int zarray[0]; -int array[5] = {1,2,3,4,5}; -int array2[5] = {6, 7, 8, 9, 10}; -int arrayField = array[2]; -struct myStructType{ - int i; - char *s; - char *sa[4]; -}mystruct = {3, "house", {"how", "now", "brown", "cow"}}; -//int i = 232; -int count(int i); - -int zomg = 2; - -int main(){ - - int i = 0; - int r = 0; - while (i < 10){ - i = count(i); - ++hi; - r = hi * 10; - } - return 0; -} - -void hello(){ -/* - using std::cout; - using std::endl; - cout << "hello!" << endl; -*/ -} - -int count(int i) { - using std::cout; - using std::endl; - if(i % 2 == 0){hello();} -// cout << "The current count is " << i << endl; - array[i % 5]++; - return i + 1; -} - -int count(int i, char *n){ - printf(n); - return i + 1; -} - -int printfWrapper(char *s){ - printf(s); - return 1; -} - -int count(char *s){ - printf("%s\n",s); - return 1; -} - diff --git a/dynC_API/tests/testMutator.cpp b/dynC_API/tests/testMutator.cpp deleted file mode 100644 index baf3017780..0000000000 --- a/dynC_API/tests/testMutator.cpp +++ /dev/null @@ -1,135 +0,0 @@ -//tester.C -#include -#include -#include - -#include "dynC.h" -#include "BPatch.h" -#include "BPatch_process.h" -#include "BPatch_snippet.h" -#include "BPatch_function.h" - -#define STATEMENT_PATH "../testStatements" -#define STATEMENT_PATH_2 "../testStatements2" -const char *MUTATEE_PATH = "myMutatee"; -const char *MUTATEE_ARGS[3]; -const char *MODULE_NAME = "testMutatee.cpp"; - - -BPatch bpatch; - -int main(){ - - using std::string; - using std::ifstream; - using std::cout; - using std::endl; - using std::getline; - - ifstream myfile(STATEMENT_PATH); - ifstream myfile2(STATEMENT_PATH_2); - - FILE *myCFILE = fopen(STATEMENT_PATH, "r"); - -// cout << "Starting binary " << MUTATEE_PATH << "... "; - BPatch_addressSpace * appProc; - bool rewrite = false; - if(rewrite){ - appProc = bpatch.openBinary(MUTATEE_PATH, true); - }else{ - appProc = bpatch.processCreate(MUTATEE_PATH, MUTATEE_ARGS); - } -// cout << "complete" << endl; - if (!appProc) return -1; - - BPatch_image *appImage = appProc->getImage(); - BPatch_module *mutatee = appImage->findModule(MODULE_NAME); - - if (mutatee == NULL){cout << "Bad Mutatee!" << endl;} - - const std::vector * functions = mutatee->getProcedures(); - - - appProc->malloc(*appImage->findType("long"), std::string("globalVar")); - - - std::vector * entry_points = (*functions)[0]->findPoint(BPatch_entry); - std::vector * exit_points = (*functions)[0]->findPoint(BPatch_exit);; - - for(unsigned int n = 1; n < functions->size(); n++){ - entry_points->push_back((*(*functions)[n]->findPoint(BPatch_entry))[0]); - exit_points->push_back((*(*functions)[n]->findPoint(BPatch_exit))[0]); - } - - -///////////////////////////////////////////////////////// - std::map *entry_snippets, exit_snippets; - entry_snippets = dynC_API::createSnippet(myCFILE, *entry_points); -// BPatch_snippet *testSn = dynC_API::createSnippet(fileString, *(*entry_points)[0]); - if(entry_snippets == NULL){ - fprintf(stderr, "entry_snippets is null.\n"); - exit(-1); - } - std::map::iterator it; - for(it = entry_snippets->begin(); it != entry_snippets->end(); ++it){ - if((*it).first == NULL){ - fprintf(stderr, "point is null.\n"); - exit(-1); - } - if((*it).second == NULL){ - fprintf(stderr, "snippet is null.\n"); - } else{ - printf("Snippet inserted\n"); - char funcName[512]; - printf("Point's function is %s.\n",((*it).first)->getFunction()->getName(funcName, 512)); - BPatchSnippetHandle *handle = appProc->insertSnippet(*(*it).second, *(*it).first); - printf("Handle is %s.\n", handle == NULL ? "null": "not null"); - } - } - -/* - for(unsigned int i = 0; i < entry_points->size(); ++i){ - if((*entry_points)[i] == NULL){ - printf("entry point %d is null \n", i); - } - BPatch_snippet *entrySnippet = dynC_API::createSnippet(fileString, *(*entry_points)[i]); - if (entrySnippet != NULL){ - appProc->insertSnippet(*entrySnippet, *(*entry_points)[i]); - } - BPatch_snippet *exitSnippet= dynC_API::createSnippet(fileString2.c_str(), *(*exit_points)[i], "exitSnippet"); - if (exitSnippet != NULL){ - appProc->insertSnippet(*exitSnippet, *(*exit_points)[i]); - } - -// BPatch_snippet *auxSnippet = dynC_API::createSnippet(&myfile2, "AuxSnippet"); - } -*/ -///////////////////////////////////////////////////////// - - -// appProc->insertSnippet(*auxSnippet, *exit_points); - - - printf("Snippet's inserted!\n"); - if(!rewrite){ - BPatch_process *aProc = static_cast(appProc); - aProc->continueExecution(); - - while (!aProc->isTerminated()){ - bpatch.waitForStatusChange(); - } - - if (aProc->terminationStatus() == ExitedNormally) { - printf("Application exited with code %d\n", aProc->getExitCode()); - } else if (aProc->terminationStatus() == ExitedViaSignal) { - printf("!!! Application exited with signal %d\n", aProc->getExitSignal()); - } else { - printf("Unknown application exit\n"); - } - }else{ - BPatch_binaryEdit *aProc = static_cast(appProc); - aProc->writeFile("myMutatee.out"); - } - - return 0; -} diff --git a/dynC_API/tests/testStatements b/dynC_API/tests/testStatements deleted file mode 100644 index 34820f2997..0000000000 --- a/dynC_API/tests/testStatements +++ /dev/null @@ -1 +0,0 @@ -func`printf("Hello.\n"); diff --git a/dynC_API/tests/testStatements2 b/dynC_API/tests/testStatements2 deleted file mode 100644 index 6e80446561..0000000000 --- a/dynC_API/tests/testStatements2 +++ /dev/null @@ -1 +0,0 @@ -inf`printf("Goodbye from %s.\n", dyninst`function_name); diff --git a/dynC_API/tests/testStatements3 b/dynC_API/tests/testStatements3 deleted file mode 100644 index e9805175d8..0000000000 --- a/dynC_API/tests/testStatements3 +++ /dev/null @@ -1,5 +0,0 @@ -//welcome to testStatements3 -{% -int f; -%} -//printf("{%d, %d, %d, %d, %d}\n", array[0], array[1], array[2], array[3], array[4]); diff --git a/dynC_API/tests/x86_64-unknown-linux2.4/Makefile b/dynC_API/tests/x86_64-unknown-linux2.4/Makefile deleted file mode 100644 index 2d72069eb7..0000000000 --- a/dynC_API/tests/x86_64-unknown-linux2.4/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -BASE = -DYNINST_ROOT = ../../../.. -CXX = g++ -CXXFLAGS = -g -Wall -Dos_linux=24 -Wall -Darch_x86_64 -fno-inline -INCLUDE = -LDFLAGS = - -PLATFORM = x86_64-unknown-linux2.4 -DYNLDFLAGS = -L/p/paradyn/packages/libelf/lib\ - -L/p/paradyn/packages/libdwarf/lib\ - -L$(DYNINST_ROOT)/$(PLATFORM)/lib\ - -lelf -ldwarf -lcommon -linstructionAPI -lsymtabAPI\ - -lparseAPI -ldyninstAPI -ldynC_API -DYNINCLUDE = -I$(DYNINST_ROOT)/dyninst/dyninstAPI/h -I$(DYNINST_ROOT)/include - -#DYNCXXFLAGS += -Dos_linux=24 -Wall -o -Darch_x86_64 - -TARG = myMutatee myMutator -#V = @ #Verbose (comment to make verbose) - -all: $(TARG) - -%.o:../%.cpp - @echo + cc $< - $(V)$(CXX) -c $(CXXFLAGS) $(INCLUDE) $(DYNINCLUDE) -o $@ $< - -myMutatee: testMutatee.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) -o $@ $^ - -myMutator: testMutator.o - @echo + ld $@ - $(V)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(DYNLDFLAGS) -o $@ $^ - -clean: - rm -f *.o core.* $(TARG) diff --git a/dynC_API/tests/x86_64-unknown-linux2.4/foo.txt b/dynC_API/tests/x86_64-unknown-linux2.4/foo.txt deleted file mode 100644 index a39e1b8a17..0000000000 --- a/dynC_API/tests/x86_64-unknown-linux2.4/foo.txt +++ /dev/null @@ -1,254 +0,0 @@ -Starting binary myMutatee... complete -Entry to parseStabTypes for ld-linux-x86-64.so.2 - Parsing 0 stab entries -Entry to parseStabTypes for myMutatee - Parsing 0 stab entries -Type lookup for dynC_internal_0 returned (nil) - bpatch type is -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -Entry to parseStabTypes for libc.so.6 - Parsing 0 stab entries -Type lookup for array returned 0x1c46f4d0 - bpatch type is -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -Type lookup for hi returned 0x1bf6c160 int - bpatch type is int -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -Type lookup for dynC_mangled_i_TestSnippet_int[3]_local returned (nil) - bpatch type is -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_internal_0) returned 0x1c46e8f0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -findOrCreateVar(array) returned 0x1c459660 -findOrCreateVar(array) returned 0x1c459660 -mangled = dynC_mangled_i_TestSnippet_int[3]_local -Array name = int -BPatch_DyninstAllocateArray: arrayName = dynC_mangled_i_TestSnippet_int[3]_local. typeName = int. size = 3. arrayTypeName = int[3]. -BPatch_variableExpr is null? no -BPatch_DyninstAllocateArray: Var type: int[3] -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstArrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** array (0x1c459660) (0x1c459660): -*** array (varExpr) -*** array (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: -BPatch_DyninstArrayRef: has replaceNode? false -BPatch_DyninstAfindOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(hi) returned 0x1c45e6b0 -findOrCreateVar(dynC_mangled_i_TestSnippet_int[3]_local) returned 0x1c463480 -Welcome to testMutatee.cpp! -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -rrayRef: Arg[0] type:typeArray -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -*** hi (0x1c45e6b0) (0x1c45e6b0): -*** hi (varExpr) -*** hi (varExprGbl) -BPatch_variableExpr is null? no -BPatch_AppVar: varExpr type is: int -Snippet's inserted! -Application exited with code 0 From b2c892f5548ccd2a5a2ee686eef130a683191d6d Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Tue, 26 Oct 2021 17:43:14 -0400 Subject: [PATCH 017/505] Load callee's address when the callee and caller are in the same module (#1056) If the callee and caller are in the same module and pic is not required then the callee's address can be loaded directly without using a relocation. --- dyninstAPI/src/inst-aarch64.C | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/dyninstAPI/src/inst-aarch64.C b/dyninstAPI/src/inst-aarch64.C index 337a666b48..a699198422 100644 --- a/dyninstAPI/src/inst-aarch64.C +++ b/dyninstAPI/src/inst-aarch64.C @@ -651,12 +651,14 @@ Register EmitterAARCH64::emitCall(opCode op, assert(gen.rs()); - //Address of function to call in scratch register + // Address of function to call in scratch register Register scratch = gen.rs()->getScratchRegister(gen); assert(scratch != REG_NULL && "cannot get a scratch register"); gen.markRegDefined(scratch); - if (gen.addrSpace()->edit() != NULL) { + if (gen.addrSpace()->edit() != NULL + && (gen.func()->obj() != callee->obj() + || gen.addrSpace()->needsPIC())) { // gen.as.edit() checks if we are in rewriter mode Address dest = getInterModuleFuncAddr(callee, gen); @@ -666,7 +668,6 @@ Register EmitterAARCH64::emitCall(opCode op, instruction insn; insn.clear(); INSN_SET(insn, 31, 31, 0); - //INSN_SET(insn, 29, 30, disp & 0x3); INSN_SET(insn, 28, 28, 1); INSN_SET(insn, 5, 23, disp >> 2); INSN_SET(insn, 0, 4, scratch); From e5484368f75397c48f8a013a49a92eb1e9556bb2 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 28 Oct 2021 16:14:01 -0500 Subject: [PATCH 018/505] Remove usage of x86_64_cnl (#1130) This was added but never used. Co-authored-by: Tim Haines --- cmake/cap_arch_def.cmake | 3 --- 1 file changed, 3 deletions(-) diff --git a/cmake/cap_arch_def.cmake b/cmake/cap_arch_def.cmake index 6e523018d4..241e68d071 100644 --- a/cmake/cap_arch_def.cmake +++ b/cmake/cap_arch_def.cmake @@ -115,9 +115,6 @@ elseif (PLATFORM STREQUAL ppc64_linux) set (OLD_DEFINES -Dppc64_linux) set (BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit) -elseif (PLATFORM STREQUAL x86_64_cnl) -set (OLD_DEFINES -Dx86_64_cnl -Dx86_64_unknown_linux2_4) - elseif (PLATFORM STREQUAL i386-unknown-freebsd7.2) set (OLD_DEFINES -Di386_unknown_freebsd7_0) From 1ec5bf68f80a2bc67da7ded73ca2fefb26691b78 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 10 Aug 2021 00:26:47 -0500 Subject: [PATCH 019/505] fix unused const variable warnings --- dyninstAPI/src/codegen-x86.C | 1 - parseAPI/src/IA_power.C | 30 +++++++++++++++--------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/dyninstAPI/src/codegen-x86.C b/dyninstAPI/src/codegen-x86.C index 55d95f8f8f..975c006424 100644 --- a/dyninstAPI/src/codegen-x86.C +++ b/dyninstAPI/src/codegen-x86.C @@ -194,7 +194,6 @@ bool convert_to_rel32(const unsigned char*&origInsn, unsigned char *&newInsn) { // We keep array-lets that represents various fixed insns. // They are larger than necessary so static analyzers don't think // they'll be read out of bounds. -static const unsigned char illegalRep[8] = {0x0f, 0x0b}; static const unsigned char trapRep[8] = {0xCC}; diff --git a/parseAPI/src/IA_power.C b/parseAPI/src/IA_power.C index 83a7415746..4614ead532 100644 --- a/parseAPI/src/IA_power.C +++ b/parseAPI/src/IA_power.C @@ -437,21 +437,6 @@ bool IA_power::isIATcall(std::string &) const return false; } -const unsigned int B_UNCOND = 0x48000000; -const unsigned int ADDIS_R12_R12 = 0x3d8c0000; -const unsigned int ADDIS_R12_R2 = 0x3d820000; -const unsigned int ADDIS_R2_R2 = 0x3c420000; -const unsigned int ADDI_R12_R12 = 0x398c0000; -const unsigned int ADDI_R2_R2 = 0x38420000; -const unsigned int STD_R2_40R1 = 0xf8410028; -const unsigned int LD_R2_40R1 = 0xe8410028; -const unsigned int LD_R2_0R2 = 0xe8420000; -const unsigned int LD_R2_0R12 = 0xe84c0000; -const unsigned int LD_R11_0R12 = 0xe96c0000; -const unsigned int LD_R11_0R2 = 0xe9620000; -const unsigned int MTCTR_R11 = 0x7d6903a6; -const unsigned int BCTR = 0x4e800420; - typedef enum { STUB_UNKNOWN, STUB_LONG_BRANCH, @@ -462,6 +447,21 @@ typedef enum { linker_stub_t checkLinkerStub(void *insn_buf, Offset &off) { #if defined(ppc64_linux) + const unsigned int B_UNCOND = 0x48000000; + const unsigned int ADDIS_R12_R12 = 0x3d8c0000; + const unsigned int ADDIS_R12_R2 = 0x3d820000; + const unsigned int ADDIS_R2_R2 = 0x3c420000; + const unsigned int ADDI_R12_R12 = 0x398c0000; + const unsigned int ADDI_R2_R2 = 0x38420000; + const unsigned int STD_R2_40R1 = 0xf8410028; + const unsigned int LD_R2_40R1 = 0xe8410028; + const unsigned int LD_R2_0R2 = 0xe8420000; + const unsigned int LD_R2_0R12 = 0xe84c0000; + const unsigned int LD_R11_0R12 = 0xe96c0000; + const unsigned int LD_R11_0R2 = 0xe9620000; + const unsigned int MTCTR_R11 = 0x7d6903a6; + const unsigned int BCTR = 0x4e800420; + /* * Linker stubs seen from GNU's binutils. * (see the following functions in binutils' bfd/elf64-ppc.c: From 8190eab3999051b40c9930d7368581f77ae5936f Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 10 Aug 2021 00:28:20 -0500 Subject: [PATCH 020/505] fix float to double promotion warning --- instructionAPI/h/Result.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instructionAPI/h/Result.h b/instructionAPI/h/Result.h index 772b0ca7d7..8c5ba6993d 100644 --- a/instructionAPI/h/Result.h +++ b/instructionAPI/h/Result.h @@ -310,7 +310,7 @@ namespace Dyninst type(t), defined(true) { assert(t == sp_float || t == dp_float); - val.dblval = v; + val.dblval = (double)v; } Result(Result_Type t, double v) : type(t), defined(true) From 2e2d7d47bbb07631ab99aba1e6579b736a805d52 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 10 Aug 2021 00:31:32 -0500 Subject: [PATCH 021/505] fix uninitialized this and variable warnings --- stackwalk/src/framestepper.C | 4 ++-- symtabAPI/h/Type.h | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/stackwalk/src/framestepper.C b/stackwalk/src/framestepper.C index e6384749e8..2802e2aad4 100644 --- a/stackwalk/src/framestepper.C +++ b/stackwalk/src/framestepper.C @@ -378,8 +378,8 @@ gcframe_ret_t DyninstInstFrameStepperImpl::getCallerFrame(const Frame &in, Frame return gcf_not_me; } - sw_printf("[%s:%d] - %lx reading from memory at location %lx with framePtr %lx\n", - FILE__, __LINE__, ret, framePtr + addr_width, framePtr); + sw_printf("[%s:%d] - reading from memory at location %lx with framePtr %lx\n", + FILE__, __LINE__, framePtr + addr_width, framePtr); // Read the location in the stack where the Special Value should be. // This value was inserted into the stack at inst frame creation. diff --git a/symtabAPI/h/Type.h b/symtabAPI/h/Type.h index 3349c91134..c3c9151a69 100644 --- a/symtabAPI/h/Type.h +++ b/symtabAPI/h/Type.h @@ -474,7 +474,13 @@ class SYMTAB_EXPORT typeScalar : public Type { } typeScalar(unsigned int size, std::string name = "", bool isSigned = false) - : typeScalar(this->getUniqueTypeId(), size, name, isSigned) {} + : typeScalar() + { + ID_ = this->getUniqueTypeId(); + size_ = size; + name_ = name; + props.is_signed = isSigned; + } static typeScalar *create(std::string &name, int size, Symtab *obj = NULL); bool isSigned() const { return props.is_signed; } From bbda48d592e7e7ba93c602f7cdb8a77f0a660b79 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 10 Aug 2021 00:33:29 -0500 Subject: [PATCH 022/505] fix misleading indentation warning --- dyninstAPI/src/BPatch_point.C | 58 +++++++++++++++++------------------ 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/dyninstAPI/src/BPatch_point.C b/dyninstAPI/src/BPatch_point.C index 29eb5c48f2..a0d5b64ed9 100644 --- a/dyninstAPI/src/BPatch_point.C +++ b/dyninstAPI/src/BPatch_point.C @@ -574,37 +574,37 @@ bool BPatchToInternalArgs(BPatch_point *point, return false; // - // Check for valid combinations of BPatch_procedureLocation & call* - // Right now we don't allow - // BPatch_callBefore + BPatch_exit - // BPatch_callAfter + BPatch_entry - // - // These combinations are intended to be used to mark the point that - // is the last, first valid point where the local variables are - // valid. This is different than the first/last instruction of - // a subroutine which is what the other combinations of BPatch_entry - // and BPatch_exit refer to. - // - if (when == BPatch_callBefore && point->getPointType() == BPatch_exit) { - BPatch_reportError(BPatchSerious, 113, - "BPatch_callBefore at BPatch_exit not supported yet"); - return false; - } - if (when == BPatch_callAfter && point->getPointType() == BPatch_entry) { - BPatch_reportError(BPatchSerious, 113, - "BPatch_callAfter at BPatch_entry not supported yet"); - return false; - } + // Check for valid combinations of BPatch_procedureLocation & call* + // Right now we don't allow + // BPatch_callBefore + BPatch_exit + // BPatch_callAfter + BPatch_entry + // + // These combinations are intended to be used to mark the point that + // is the last, first valid point where the local variables are + // valid. This is different than the first/last instruction of + // a subroutine which is what the other combinations of BPatch_entry + // and BPatch_exit refer to. + // + if (when == BPatch_callBefore && point->getPointType() == BPatch_exit) { + BPatch_reportError(BPatchSerious, 113, + "BPatch_callBefore at BPatch_exit not supported yet"); + return false; + } + if (when == BPatch_callAfter && point->getPointType() == BPatch_entry) { + BPatch_reportError(BPatchSerious, 113, + "BPatch_callAfter at BPatch_entry not supported yet"); + return false; + } - if ((point->getPointType() == BPatch_exit)) { - // XXX - Hack! - // The semantics of pre/post insn at exit are setup for the new - // defintion of using this to control before/after stack creation, - // but the lower levels of dyninst don't know about this yet. - ipWhen = callPreInsn; - } + if ((point->getPointType() == BPatch_exit)) { + // XXX - Hack! + // The semantics of pre/post insn at exit are setup for the new + // defintion of using this to control before/after stack creation, + // but the lower levels of dyninst don't know about this yet. + ipWhen = callPreInsn; + } - return true; + return true; } BPatch_procedureLocation BPatch_point::convertInstPointType_t(int intType) From e8fc36cb86b833ef9ef31a440890590481163965 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 10 Aug 2021 00:34:21 -0500 Subject: [PATCH 023/505] fix xor operator used as power operator 2^32 should be 1LL << 32 --- instructionAPI/src/InstructionDecoder-x86.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instructionAPI/src/InstructionDecoder-x86.C b/instructionAPI/src/InstructionDecoder-x86.C index af06c3b408..769fa4775b 100644 --- a/instructionAPI/src/InstructionDecoder-x86.C +++ b/instructionAPI/src/InstructionDecoder-x86.C @@ -1618,7 +1618,7 @@ namespace Dyninst { Expression::Ptr edx(makeRegisterExpression(m_Arch == Arch_x86 ? x86::edx : x86_64::edx)); Expression::Ptr eax(makeRegisterExpression(m_Arch == Arch_x86 ? x86::eax : x86_64::eax)); - Expression::Ptr highAddr = makeMultiplyExpression(edx, Immediate::makeImmediate(Result(u64, 2^32)), u64); + Expression::Ptr highAddr = makeMultiplyExpression(edx, Immediate::makeImmediate(Result(u64, 1LL << 32)), u64); Expression::Ptr addr = makeAddExpression(highAddr, eax, u64); Expression::Ptr op = makeDereferenceExpression(addr, u64); insn_to_complete->appendOperand(op, isRead, isWritten, isImplicit); @@ -1627,7 +1627,7 @@ namespace Dyninst Expression::Ptr ecx(makeRegisterExpression(m_Arch == Arch_x86 ? x86::ecx : x86_64::ecx)); Expression::Ptr ebx(makeRegisterExpression(m_Arch == Arch_x86 ? x86::ebx : x86_64::ebx)); Expression::Ptr highAddr = makeMultiplyExpression(ecx, - Immediate::makeImmediate(Result(u64, 2^32)), u64); + Immediate::makeImmediate(Result(u64, 1LL << 32)), u64); Expression::Ptr addr = makeAddExpression(highAddr, ebx, u64); Expression::Ptr op = makeDereferenceExpression(addr, u64); insn_to_complete->appendOperand(op, isRead, isWritten, isImplicit); From 24389ee42d020721ab6831e1b8de6e44a26c600a Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 10 Aug 2021 00:50:23 -0500 Subject: [PATCH 024/505] fix pessimizing std::move warnings --- common/src/addrtranslate-linux.C | 2 +- common/src/addrtranslate-sysv.C | 2 +- common/src/pathName.C | 2 +- proccontrol/src/linux.C | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/src/addrtranslate-linux.C b/common/src/addrtranslate-linux.C index 318c814e9f..0750f2b4b1 100644 --- a/common/src/addrtranslate-linux.C +++ b/common/src/addrtranslate-linux.C @@ -189,7 +189,7 @@ string AddressTranslateSysV::getExecName() if (exec_name.empty()) { char name[64]; snprintf(name, 64, "/proc/%d/exe", pid); - exec_name = std::move(resolve_file_path(name)); + exec_name = resolve_file_path(name); } return exec_name; } diff --git a/common/src/addrtranslate-sysv.C b/common/src/addrtranslate-sysv.C index 49e2bb84e2..41db9f2638 100644 --- a/common/src/addrtranslate-sysv.C +++ b/common/src/addrtranslate-sysv.C @@ -866,7 +866,7 @@ FCNode::FCNode(string f, dev_t d, ino_t i, SymbolReaderFactory *factory_) : symreader(NULL), factory(factory_) { - filename = std::move(resolve_file_path(std::move(f))); + filename = resolve_file_path(std::move(f)); } string FCNode::getFilename() { diff --git a/common/src/pathName.C b/common/src/pathName.C index 3942fd54b0..c41bd06f88 100644 --- a/common/src/pathName.C +++ b/common/src/pathName.C @@ -292,7 +292,7 @@ std::string resolve_file_path(std::string path) { // If it has a tilde, expand tilde pathname // This is a no-op on Windows if(path.find("~") != std::string::npos) { - path = std::move(expand_tilde_pathname(path)); + path = expand_tilde_pathname(path); } // Convert to a boost::filesystem::path diff --git a/proccontrol/src/linux.C b/proccontrol/src/linux.C index ac4d169cc4..c51c7e3b1e 100644 --- a/proccontrol/src/linux.C +++ b/proccontrol/src/linux.C @@ -1136,7 +1136,7 @@ bool linux_process::plat_execed() char proc_exec_name[128]; snprintf(proc_exec_name, 128, "/proc/%d/exe", getPid()); - executable = std::move(resolve_file_path(proc_exec_name)); + executable = resolve_file_path(proc_exec_name); return true; } From a033bc19247754aa1ea462c25cc5d89d35dc0497 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Thu, 28 Oct 2021 15:06:18 -0500 Subject: [PATCH 025/505] fix unused const variable warnings --- parseAPI/src/IA_power.C | 1 - 1 file changed, 1 deletion(-) diff --git a/parseAPI/src/IA_power.C b/parseAPI/src/IA_power.C index 4614ead532..db3eed06a3 100644 --- a/parseAPI/src/IA_power.C +++ b/parseAPI/src/IA_power.C @@ -455,7 +455,6 @@ linker_stub_t checkLinkerStub(void *insn_buf, Offset &off) const unsigned int ADDI_R2_R2 = 0x38420000; const unsigned int STD_R2_40R1 = 0xf8410028; const unsigned int LD_R2_40R1 = 0xe8410028; - const unsigned int LD_R2_0R2 = 0xe8420000; const unsigned int LD_R2_0R12 = 0xe84c0000; const unsigned int LD_R11_0R12 = 0xe96c0000; const unsigned int LD_R11_0R2 = 0xe9620000; From 75548f7b157d2e57b97b656b81dac7582d6d3d55 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 28 Oct 2021 16:36:51 -0500 Subject: [PATCH 026/505] Remove usage of arch_ppc and arch_ppc64 (#1129) These were removed by f33ba7b in 2013 and should have been converted to arch_power at that time. Co-authored-by: Tim Haines --- dyninstAPI/src/BPatch_memoryAccessAdapter.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dyninstAPI/src/BPatch_memoryAccessAdapter.C b/dyninstAPI/src/BPatch_memoryAccessAdapter.C index 5dcfc47d0a..6450487473 100644 --- a/dyninstAPI/src/BPatch_memoryAccessAdapter.C +++ b/dyninstAPI/src/BPatch_memoryAccessAdapter.C @@ -179,7 +179,7 @@ BPatch_memoryAccess* BPatch_memoryAccessAdapter::convert(Instruction insn, } assert(nac < 3); return bmap; -#elif defined(arch_ppc)||defined(arch_ppc64) +#elif defined arch_power std::vector operands; insn.getOperands(operands); for(std::vector::iterator op = operands.begin(); @@ -268,7 +268,7 @@ void BPatch_memoryAccessAdapter::visit(RegisterAST* r) //fprintf(stderr, "base: %d\n", base.val()); unsigned int converted = base.val() & 0xFFFF; - #if defined(arch_ppc)||defined(arch_ppc64) + #if defined arch_power if((ra == -1) && !setImm) { ra = converted; return; From 917ddc64c44d73db8a0300d5c6581d10a57d5cec Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 28 Oct 2021 17:11:30 -0500 Subject: [PATCH 027/505] Remove common/src/language.h (#1131) This is never used anywhere. We also require a compiler that supports 'typename' implicitly. Co-authored-by: Tim Haines --- common/src/language.h | 60 ------------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 common/src/language.h diff --git a/common/src/language.h b/common/src/language.h deleted file mode 100644 index be8f04130b..0000000000 --- a/common/src/language.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - -// $Id: language.h,v - -// Put C++ language specific code in here - -#ifndef __LANGUAGE__ -#define __LANGUAGE__ - -#if ! defined( TYPENAME ) - -#if defined( __GNUC__ ) -# define TYPENAME typename -#elif defined(__SUNPRO_CC) -# define TYPENAME typename -#elif defined (__XLC__) || defined(__xlC__) -#define TYPENAME typename -#elif defined(_MSC_VER) && (_MSC_VER >= 1310) - // Visual Studio .NET or greater -# define TYPENAME typename -#else // other compilers may not support the typename keyword yet -#define TYPENAME -#endif - -#endif - - - -#endif - From 579cce99cfbdf353e530e8dc6c4ef73bd9d9f06c Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 29 Oct 2021 12:01:07 -0500 Subject: [PATCH 028/505] Remove xlc macros (#1132) * Remove unused XLC macro in dyntypes.h * Remove XLC check in BPatch_snippet/BPatch_effectiveAddressExpr This was added by c604218d5 in 2004 for compiling dyninst with xlC as a static library for AIX compatibility with DPCL- neither of which is supported by Dyninst now. Co-authored-by: Tim Haines --- common/h/dyntypes.h | 4 ---- dyninstAPI/src/BPatch_snippet.C | 4 ---- 2 files changed, 8 deletions(-) diff --git a/common/h/dyntypes.h b/common/h/dyntypes.h index e3b593f8d1..04d12f8af8 100644 --- a/common/h/dyntypes.h +++ b/common/h/dyntypes.h @@ -47,10 +47,6 @@ #endif #endif -#if defined(_POWER) && !defined(__GNUC__) -#define XLC -#endif - #include #include diff --git a/dyninstAPI/src/BPatch_snippet.C b/dyninstAPI/src/BPatch_snippet.C index 9762705440..dac9e4675e 100644 --- a/dyninstAPI/src/BPatch_snippet.C +++ b/dyninstAPI/src/BPatch_snippet.C @@ -1450,8 +1450,6 @@ BPatch_effectiveAddressExpr::BPatch_effectiveAddressExpr(int _which, int size) { #if defined(i386_unknown_nt4_0) assert(_which >= 0 && _which <= 2); -#elif defined (__XLC__) || defined(__xlC__) - assert(_which >= 0 && _which <= 1); #else assert(_which >= 0 && _which <= (int) BPatch_instruction::nmaxacc_NP); #endif @@ -1468,8 +1466,6 @@ BPatch_bytesAccessedExpr::BPatch_bytesAccessedExpr(int _which) { #if defined(i386_unknown_nt4_0) assert(_which >= 0 && _which <= 2); -#elif defined (__XLC__) || defined(__xlC__) - assert(_which >= 0 && _which <= 1); #else assert(_which >= 0 && _which <= (int)BPatch_instruction::nmaxacc_NP); #endif From 874a73ea462e7e959d97d4dac005179ab328e20c Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Mon, 1 Nov 2021 14:24:07 -0400 Subject: [PATCH 029/505] Don't overflow aarch64 float register vector when setting used regs. (#1127) Do not include the subtype when setting a float register as a used register if the registerSlot vector would be exceeded, e.g. for a value like 0x400 (Q_REG/register 0). --- dyninstAPI/src/inst-aarch64.C | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dyninstAPI/src/inst-aarch64.C b/dyninstAPI/src/inst-aarch64.C index a699198422..67b1b30c40 100644 --- a/dyninstAPI/src/inst-aarch64.C +++ b/dyninstAPI/src/inst-aarch64.C @@ -551,8 +551,13 @@ bool EmitterAARCH64::clobberAllFuncCall(registerSpace *rs, rs->GPRs()[*itr]->beenUsed = true; std::set *fpRegs = callee->ifunc()->usedFPRs(); - for(std::set::iterator itr = fpRegs->begin(); itr != fpRegs->end(); itr++) - rs->FPRs()[*itr]->beenUsed = true; + for(std::set::iterator itr = fpRegs->begin(); itr != fpRegs->end(); itr++) { + if (*itr <= rs->FPRs().size()) + rs->FPRs()[*itr]->beenUsed = true; + else + // parse_func::calcUsedRegs includes the subtype; we only want the regno + rs->FPRs()[*itr & 0xff]->beenUsed = true; + } } else { for(int idx = 0; idx < rs->numGPRs(); idx++) rs->GPRs()[idx]->beenUsed = true; From f1bcb113f65ec591176aebade781712c3d1235cd Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 2 Nov 2021 13:21:49 -0500 Subject: [PATCH 030/505] Remove support for Cray CNL (#1137) The Compute Node Linux (CNL) was for the old XT/XE platforms that are obsolete now. This should have been removed by e5484368f in 2021. Support for this platform was removed from the test suite by 7e4ab7c12 in 2012. Co-authored-by: Tim Haines --- cmake/cap_arch_def.cmake | 11 ----------- common/CMakeLists.txt | 10 ---------- proccontrol/CMakeLists.txt | 9 --------- symtabAPI/CMakeLists.txt | 3 +-- 4 files changed, 1 insertion(+), 32 deletions(-) diff --git a/cmake/cap_arch_def.cmake b/cmake/cap_arch_def.cmake index 241e68d071..be941f3deb 100644 --- a/cmake/cap_arch_def.cmake +++ b/cmake/cap_arch_def.cmake @@ -67,17 +67,6 @@ set (CAP_DEFINES ${CAP_DEFINES} ) set (BUG_DEFINES -Dbug_syscall_changepc_rewind -Dbug_force_terminate_failure) -elseif (PLATFORM MATCHES cnl) -set (OS_DEFINES -Dos_linux -Dos_cnl) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_async_events - -Dcap_binary_rewriter - -Dcap_dwarf - -Dcap_mutatee_traps - -Dcap_ptrace - ) -set (BUG_DEFINES -Dbug_syscall_changepc_rewind) - elseif (PLATFORM MATCHES freebsd) set (OS_DEFINES -Dos_freebsd) set (CAP_DEFINES ${CAP_DEFINES} diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 2310d2625a..5bde2b9e5c 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -70,16 +70,6 @@ if (PLATFORM MATCHES linux) ) endif() -if (PLATFORM MATCHES cnl) - set (SRC_LIST ${SRC_LIST} - src/linuxKludges.C - src/parseauxv.C - src/addrtranslate-sysv.C - src/addrtranslate-auxv.C - src/addrtranslate-linux.C - ) -endif() - if (PLATFORM MATCHES nt OR PLATFORM MATCHES windows) set (SRC_LIST ${SRC_LIST} src/ntKludges.C diff --git a/proccontrol/CMakeLists.txt b/proccontrol/CMakeLists.txt index 327e1938c2..d0b6ed3e04 100644 --- a/proccontrol/CMakeLists.txt +++ b/proccontrol/CMakeLists.txt @@ -66,15 +66,6 @@ set (SRC_LIST ${SRC_LIST} ../common/src/dthread.C src/loadLibrary/codegen-linux.C ) -elseif (PLATFORM MATCHES cnl) -set (SRC_LIST ${SRC_LIST} - src/linux.C - src/unix.C - src/notify_pipe.C - ../common/src/dthread-unix.C - ../common/src/dthread.C - src/loadLibrary/codegen-stub.C - ) endif() SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) diff --git a/symtabAPI/CMakeLists.txt b/symtabAPI/CMakeLists.txt index f0d9e11c10..3e07aa3738 100644 --- a/symtabAPI/CMakeLists.txt +++ b/symtabAPI/CMakeLists.txt @@ -34,8 +34,7 @@ set (SRC_LIST ) if (PLATFORM MATCHES freebsd OR - PLATFORM MATCHES linux OR - PLATFORM MATCHES cnl) + PLATFORM MATCHES linux) set (SRC_LIST ${SRC_LIST} src/Object-elf.C From 3b920761a672bf0547867282d1d7c5624a087416 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 2 Nov 2021 14:03:05 -0500 Subject: [PATCH 031/505] Unify meaning of 'cap_32_64' macro (#1136) * Unify meaning of 'cap_32_64' macro Currently, this is used in several different ways due to the historical original meaning drifting over the years. It's meaning is now "this host 64-bit platform supports modifying 32-bit binaries". Currently, this is only x86 and PPC32. Although the latter is going away soon due to obsolescence. Co-authored-by: Tim Haines --- cmake/cap_arch_def.cmake | 9 ++++++--- dataflowAPI/src/ABI.C | 10 +++++----- dyninstAPI/src/addressSpace.C | 11 ++--------- dyninstAPI/src/inst-x86.C | 4 ++-- 4 files changed, 15 insertions(+), 19 deletions(-) diff --git a/cmake/cap_arch_def.cmake b/cmake/cap_arch_def.cmake index be941f3deb..83ea52f67d 100644 --- a/cmake/cap_arch_def.cmake +++ b/cmake/cap_arch_def.cmake @@ -1,5 +1,8 @@ -# The test suite needs this as a list rather than a bunch -# of definitions so that we can append _test to it. +# +# -- Define the capabilities for each supported architecture/platform +# +# cap_32_64 - This host 64-bit platform supports modifying 32-bit binaries +# set (CAP_DEFINES -Dcap_dynamic_heap @@ -53,7 +56,7 @@ elseif (PLATFORM MATCHES ppc64) elseif (PLATFORM MATCHES aarch64) #set (ARCH_DEFINES -Daarch_64 -Darch_64bit) set (ARCH_DEFINES -Darch_aarch64 -Darch_64bit) - set (CAP_DEFINES ${CAP_DEFINES} -Dcap_32_64 -Dcap_registers) + set (CAP_DEFINES ${CAP_DEFINES} -Dcap_registers) endif (PLATFORM MATCHES i386) if (PLATFORM MATCHES linux) diff --git a/dataflowAPI/src/ABI.C b/dataflowAPI/src/ABI.C index 11ebe80528..85d990b44c 100644 --- a/dataflowAPI/src/ABI.C +++ b/dataflowAPI/src/ABI.C @@ -91,8 +91,12 @@ ABI* ABI::getABI(int addr_width){ globalABI64_->index = &machRegIndex_aarch64(); #endif +// We _only_ support instrumenting 32-bit binaries on 64-bit systems +#if !defined arch_64bit || defined cap_32_64 initialize32(); -#if defined(cap_32_64) +#endif + +#ifdef arch_64bit initialize64(); #endif } @@ -553,10 +557,6 @@ void ABI::initialize64(){ //#warning "This is not verified!" #if defined(arch_aarch64) -void ABI::initialize32(){ - return; -} - void ABI::initialize64(){ RegisterMap aarch64Map = machRegIndex_aarch64(); int sz = aarch64Map.size(); diff --git a/dyninstAPI/src/addressSpace.C b/dyninstAPI/src/addressSpace.C index 74feb6edcb..466219a9dc 100644 --- a/dyninstAPI/src/addressSpace.C +++ b/dyninstAPI/src/addressSpace.C @@ -1140,7 +1140,6 @@ bool mapping_sort(const trampTrapMappings::tramp_mapping_t *lhs, return lhs->from_addr < rhs->from_addr; } -#if defined(cap_32_64) void trampTrapMappings::writeToBuffer(unsigned char *buffer, unsigned long val, unsigned addr_width) { @@ -1149,19 +1148,13 @@ void trampTrapMappings::writeToBuffer(unsigned char *buffer, unsigned long val, //Currently only support 64-bit mutators with 32-bit mutatees assert(addr_width == 4); assert(sizeof(Address) == 8); +#if defined(cap_32_64) *((uint32_t *) buffer) = (uint32_t) val; return; +#endif } *((unsigned long *) buffer) = val; } -#else -void trampTrapMappings::writeToBuffer(unsigned char *buffer, unsigned long val, - unsigned) -{ - *((unsigned long *)(void*) buffer) = val; -} -#endif - void trampTrapMappings::writeTrampVariable(const int_variable *var, unsigned long val) diff --git a/dyninstAPI/src/inst-x86.C b/dyninstAPI/src/inst-x86.C index f8bdcf245f..ead580f940 100644 --- a/dyninstAPI/src/inst-x86.C +++ b/dyninstAPI/src/inst-x86.C @@ -197,7 +197,7 @@ void registerSpace::initialize32() { } -#if defined(cap_32_64) +#if defined arch_x86_64 void registerSpace::initialize64() { static bool done = false; if (done) return; @@ -538,7 +538,7 @@ void registerSpace::initialize() initialize32(); -#if defined(cap_32_64) +#if defined arch_x86_64 initialize64(); #endif } From 03e37a9a9e1b4f598f2d075676e00835f2aa76df Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 3 Nov 2021 10:17:35 -0500 Subject: [PATCH 032/505] Update copyright to 2022 (#1141) Co-authored-by: Tim Haines --- COPYRIGHT | 2 +- parseAPI/h/SymLiteCodeSource.h | 2 +- parseAPI/src/CodeSource.C | 2 +- parseAPI/src/SymLiteCodeSource.C | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 2ce59090ad..9160abe3e5 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,4 +1,4 @@ -Paradyn is Copyright (c) 1996-2021 Barton P. Miller +Paradyn is Copyright (c) 1996-2022 Barton P. Miller Contributions to Paradyn were developed by LLNS and have the following copyright: Copyright (c) 2012-2013, Lawrence Livermore National Security, LLC. Produced at diff --git a/parseAPI/h/SymLiteCodeSource.h b/parseAPI/h/SymLiteCodeSource.h index edcc5dd148..fad01eae29 100644 --- a/parseAPI/h/SymLiteCodeSource.h +++ b/parseAPI/h/SymLiteCodeSource.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996-2021 Barton P. Miller + * Copyright (c) 1996-2022 Barton P. Miller * * We provide the Paradyn Parallel Performance Tools (below * described as "Paradyn") on an AS IS basis, and do not warrant its diff --git a/parseAPI/src/CodeSource.C b/parseAPI/src/CodeSource.C index 8a519f48fa..d46e3b8f1d 100644 --- a/parseAPI/src/CodeSource.C +++ b/parseAPI/src/CodeSource.C @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996-2021 Barton P. Miller + * Copyright (c) 1996-2022 Barton P. Miller * * We provide the Paradyn Parallel Performance Tools (below * described as "Paradyn") on an AS IS basis, and do not warrant its diff --git a/parseAPI/src/SymLiteCodeSource.C b/parseAPI/src/SymLiteCodeSource.C index 9bb02a62de..f826165a1a 100644 --- a/parseAPI/src/SymLiteCodeSource.C +++ b/parseAPI/src/SymLiteCodeSource.C @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996-2021 Barton P. Miller + * Copyright (c) 1996-2022 Barton P. Miller * * We provide the Paradyn Parallel Performance Tools (below * described as "Paradyn") on an AS IS basis, and do not warrant its From e4f98e20fd62a02c2dacdb9b2207bd62c299efb8 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 4 Nov 2021 23:22:15 -0500 Subject: [PATCH 033/505] Implement ppc64 in MachRegister::getROSERegister (#1139) Co-authored-by: Tim Haines --- common/src/dyn_regs.C | 104 +++++++++++++++++++++++++++--------------- 1 file changed, 66 insertions(+), 38 deletions(-) diff --git a/common/src/dyn_regs.C b/common/src/dyn_regs.C index e64a16fb17..ab433db538 100644 --- a/common/src/dyn_regs.C +++ b/common/src/dyn_regs.C @@ -1069,47 +1069,75 @@ void MachRegister::getROSERegister(int &c, int &n, int &p) } break; case Arch_ppc32: - case Arch_ppc64: // 64-bit not supported in ROSE + { + baseID = reg & 0x0000FFFF; + n = baseID; + switch(category) { - baseID = reg & 0x0000FFFF; - n = baseID; - switch(category) - { - case ppc32::GPR: - c = powerpc_regclass_gpr; - break; - case ppc32::FPR: - case ppc32::FSR: - c = powerpc_regclass_fpr; - break; - case ppc32::SPR: - { - if(baseID < 613) { - c = powerpc_regclass_spr; - } else if(baseID < 621 ) { - c = powerpc_regclass_sr; - } else { - c = powerpc_regclass_cr; - n = 0; - p = baseID - 621; - /* n = baseID - 621; - if(n > 7) { - n = 0; - p = powerpc_condreggranularity_whole; - } else { - p = powerpc_condreggranularity_field; - } - */ - } + case ppc32::GPR: + c = powerpc_regclass_gpr; + break; + case ppc32::FPR: + case ppc32::FSR: + c = powerpc_regclass_fpr; + break; + case ppc32::SPR: + { + if(baseID < 613) { + c = powerpc_regclass_spr; + } else if(baseID < 621 ) { + c = powerpc_regclass_sr; + } else { + c = powerpc_regclass_cr; + n = 0; + p = baseID - 621; + /* n = baseID - 621; + if(n > 7) { + n = 0; + p = powerpc_condreggranularity_whole; + } else { + p = powerpc_condreggranularity_field; + } + */ } - break; - default: - c = -1; - return; - } - return; + } + break; + default: + c = -1; + return; } - break; + return; + } + break; + case Arch_ppc64: { + baseID = reg & 0x0000FFFF; + n = baseID; + switch (category) { + case ppc64::GPR: + c = powerpc_regclass_gpr; + break; + case ppc64::FPR: + case ppc64::FSR: + c = powerpc_regclass_fpr; + break; + case ppc64::SPR: { + if (baseID < 613) { + c = powerpc_regclass_spr; + } else if (baseID < 621) { + c = powerpc_regclass_sr; + } else { + c = powerpc_regclass_cr; + n = 0; + p = baseID - 621; + } + } break; + default: + c = -1; + return; + } + return; + } + break; case Arch_aarch64: { p = 0; switch (category) { From 539e0a0934ac6943377d966053bc72d83ac17b0a Mon Sep 17 00:00:00 2001 From: kupsch Date: Sun, 7 Nov 2021 13:41:22 -0600 Subject: [PATCH 034/505] fix statement-like macros (#1143) wrap macro body in 'do {...} while (0)' so they can be used as if they were a statement with a terminating semicolon. changed break to return since it then works in a do/while loop and was semantically the same in all the expansions parenthesized the use of parameters as needed --- dwarf/src/dwarfResult.C | 2 +- dyninstAPI/src/ast.C | 6 +++--- symtabAPI/src/dwarfWalker.C | 12 ++++++------ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dwarf/src/dwarfResult.C b/dwarf/src/dwarfResult.C index c840535322..2838c8295f 100644 --- a/dwarf/src/dwarfResult.C +++ b/dwarf/src/dwarfResult.C @@ -43,7 +43,7 @@ using namespace Dyninst; using namespace DwarfDyninst; using namespace std; -#define CHECK_OPER(n) if (operands.size() < n) { error = true; break; } +#define CHECK_OPER(n) do { if (operands.size() < (n)) { error = true; return; } } while (0) void SymbolicDwarfResult::pushReg(MachRegister reg) { dwarf_printf("\t\tPush %s\n", reg.name().c_str()); diff --git a/dyninstAPI/src/ast.C b/dyninstAPI/src/ast.C index 441fd2a4d4..322680b44c 100644 --- a/dyninstAPI/src/ast.C +++ b/dyninstAPI/src/ast.C @@ -777,9 +777,9 @@ bool AstNode::previousComputationValid(Register ®, } // We're going to use this fragment over and over and over... -#define RETURN_KEPT_REG(r) { if (previousComputationValid(r, gen)) { decUseCount(gen); gen.rs()->incRefCount(r); return true;} } -#define ERROR_RETURN { fprintf(stderr, "[%s:%d] ERROR: failure to generate operand\n", __FILE__, __LINE__); return false; } -#define REGISTER_CHECK(r) if (r == REG_NULL) { fprintf(stderr, "[%s: %d] ERROR: returned register invalid\n", __FILE__, __LINE__); return false; } +#define RETURN_KEPT_REG(r) do { if (previousComputationValid(r, gen)) { decUseCount(gen); gen.rs()->incRefCount(r); return true;} } while (0) +#define ERROR_RETURN do { fprintf(stderr, "[%s:%d] ERROR: failure to generate operand\n", __FILE__, __LINE__); return false; } while (0) +#define REGISTER_CHECK(r) do { if ((r) == REG_NULL) { fprintf(stderr, "[%s: %d] ERROR: returned register invalid\n", __FILE__, __LINE__); return false; } } while (0) bool AstNode::initRegisters(codeGen &g) { diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index cbf9324b6a..88426852c9 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -51,33 +51,33 @@ using namespace SymtabAPI; using namespace DwarfDyninst; using namespace std; -#define DWARF_FAIL_RET_VAL(x, v) { \ +#define DWARF_FAIL_RET_VAL(x, v) do { \ int dwarf_fail_ret_val_status = (x); \ if (dwarf_fail_ret_val_status != 0) { \ types_printf("[%s:%d]: libdwarf returned %d, ret false\n", \ FILE__, __LINE__, dwarf_fail_ret_val_status); \ return (v); \ } \ - } + } while (0) #define DWARF_FAIL_RET(x) DWARF_FAIL_RET_VAL(x, false) -#define DWARF_ERROR_RET_VAL(x, v) { \ +#define DWARF_ERROR_RET_VAL(x, v) do { \ int dwarf_error_ret_val_status = (x); \ if (dwarf_error_ret_val_status == 1 /*DW_DLV_ERROR*/) { \ types_printf("[%s:%d]: parsing failure, ret false\n", \ FILE__, __LINE__); \ return (v); \ } \ - } + } while (0) #define DWARF_ERROR_RET(x) DWARF_ERROR_RET_VAL(x, false) -#define DWARF_CHECK_RET_VAL(x, v) { \ +#define DWARF_CHECK_RET_VAL(x, v) do { \ if (x) { \ types_printf("[%s:%d]: parsing failure, ret false\n", \ FILE__, __LINE__); \ return (v); \ } \ - } + } while (0) #define DWARF_CHECK_RET(x) DWARF_CHECK_RET_VAL(x, false) DwarfWalker::DwarfWalker(Symtab *symtab, ::Dwarf * dbg) : From d7425515bac9f81ffacfd56af3f301999bb83b31 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sun, 7 Nov 2021 13:53:25 -0600 Subject: [PATCH 035/505] Remove ppc32 from builds (#1145) * Remove ppc32 from build system * Remove ppc32 source and header files * Clean up gitignore in parseThat * Remove use of arch_ppc_little_endian * Remove explict use of ppc32_linux macro * Remove implicit use of ppc32 macro There are likely more instances. Co-authored-by: Tim Haines --- cmake/cap_arch_def.cmake | 15 - cmake/platform_unix.cmake | 1 - common/src/util.C | 2 - dyninstAPI/src/Parsing.C | 6 - dyninstAPI/src/image.C | 4 +- dyninstAPI_RT/CMakeLists.txt | 14 +- dyninstAPI_RT/src/RTlinux.c | 2 - .../src/RTstatic_ctors_dtors-ppc32.c | 94 --- dyninstAPI_RT/src/RTthread-powerpc-asm.S | 26 - parseThat/.gitignore | 1 - scripts/dynsysname | 9 - symtabAPI/CMakeLists.txt | 5 - symtabAPI/src/Object-elf.C | 5 - symtabAPI/src/emitElfStatic-ppc32.C | 744 ------------------ symtabAPI/src/relocationEntry-elf-ppc32.C | 143 ---- syscalls/README | 6 +- .../Linux/Arch_ppc32/unistd.h.20130604 | 334 -------- 17 files changed, 5 insertions(+), 1406 deletions(-) delete mode 100644 dyninstAPI_RT/src/RTstatic_ctors_dtors-ppc32.c delete mode 100644 symtabAPI/src/emitElfStatic-ppc32.C delete mode 100644 symtabAPI/src/relocationEntry-elf-ppc32.C delete mode 100644 syscalls/unistd-by-platform/Linux/Arch_ppc32/unistd.h.20130604 diff --git a/cmake/cap_arch_def.cmake b/cmake/cap_arch_def.cmake index 83ea52f67d..5778d0a0a2 100644 --- a/cmake/cap_arch_def.cmake +++ b/cmake/cap_arch_def.cmake @@ -33,12 +33,6 @@ set (CAP_DEFINES ${CAP_DEFINES} -Dcap_stack_mods ) -elseif (PLATFORM MATCHES ppc32) -set (ARCH_DEFINES -Darch_power) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_registers - ) - elseif (PLATFORM MATCHES ppc64) set (ARCH_DEFINES -Darch_power -Darch_64bit) set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") @@ -48,11 +42,6 @@ elseif (PLATFORM MATCHES ppc64) -Dcap_registers -Dcap_toc_64 ) - if (SYSPLATFORM MATCHES ppc64le) - set (CAP_DEFINES ${CAP_DEFINES} - -Darch_ppc_little_endian - ) - endif (SYSPLATFORM MATCHES ppc64le) elseif (PLATFORM MATCHES aarch64) #set (ARCH_DEFINES -Daarch_64 -Darch_64bit) set (ARCH_DEFINES -Darch_aarch64 -Darch_64bit) @@ -99,10 +88,6 @@ set (OLD_DEFINES -Di386_unknown_linux2_0) elseif (PLATFORM STREQUAL x86_64-unknown-linux2.4) set (OLD_DEFINES -Dx86_64_unknown_linux2_4) -elseif (PLATFORM STREQUAL ppc32_linux) -set (OLD_DEFINES -Dppc32_linux) -set (BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit) - elseif (PLATFORM STREQUAL ppc64_linux) set (OLD_DEFINES -Dppc64_linux) set (BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit) diff --git a/cmake/platform_unix.cmake b/cmake/platform_unix.cmake index fa48b98678..7b1bea840c 100644 --- a/cmake/platform_unix.cmake +++ b/cmake/platform_unix.cmake @@ -4,7 +4,6 @@ set (VALID_PLATFORMS amd64-unknown-freebsd7.2 i386-unknown-freebsd7.2 i386-unknown-linux2.4 - ppc32_linux ppc64_linux x86_64-unknown-linux2.4 aarch64-unknown-linux diff --git a/common/src/util.C b/common/src/util.C index 904c5d8424..f24c8a4a51 100644 --- a/common/src/util.C +++ b/common/src/util.C @@ -208,8 +208,6 @@ const char *platform_string() #if defined (os_linux) #if defined (arch_64bit) return "ppc64_linux"; -#else - return "ppc32_linux"; #endif #endif #endif diff --git a/dyninstAPI/src/Parsing.C b/dyninstAPI/src/Parsing.C index c8f43bb552..3471ad34d3 100644 --- a/dyninstAPI/src/Parsing.C +++ b/dyninstAPI/src/Parsing.C @@ -263,12 +263,6 @@ DynParseCallback::patch_nop_jump(Address addr) void DynParseCallback::interproc_cf(Function*f,Block *b,Address /*addr*/,interproc_details*det) { -#if defined(ppc32_linux) - if(det->type == interproc_details::call) { - parse_func * ifunc = static_cast(f); - _img->updatePltFunc(ifunc,det->data.call.target); - } -#endif (void) f; // compiler warning if (det->type == ParseCallback::interproc_details::unresolved) { static_cast(b)->setUnresolvedCF(true); diff --git a/dyninstAPI/src/image.C b/dyninstAPI/src/image.C index 3d108cede0..613f318d6b 100644 --- a/dyninstAPI/src/image.C +++ b/dyninstAPI/src/image.C @@ -172,7 +172,7 @@ extern unsigned enable_pd_sharedobj_debug; int codeBytesSeen = 0; -#if defined(ppc32_linux) || defined(ppc64_linux) +#if defined(ppc64_linux) #include #include @@ -475,7 +475,7 @@ class FindMainVisitor : public ASTVisitor */ int image::findMain() { -#if defined(ppc32_linux) || defined(ppc64_linux) +#if defined(ppc64_linux) using namespace Dyninst::InstructionAPI; // Only look for main in executables, but do allow position-independent diff --git a/dyninstAPI_RT/CMakeLists.txt b/dyninstAPI_RT/CMakeLists.txt index 0055e0194b..5d61411a78 100644 --- a/dyninstAPI_RT/CMakeLists.txt +++ b/dyninstAPI_RT/CMakeLists.txt @@ -65,13 +65,6 @@ set (SRC_LIST_x86_64 set (RT_STATIC_ONLY_SRC_LIST_x86_64 src/RTstatic_ctors_dtors-x86.c ) -set (SRC_LIST_ppc32 - src/RTthread-powerpc.c - src/RTthread-powerpc-asm.S -) -set (RT_STATIC_ONLY_SRC_LIST_ppc32 - src/RTstatic_ctors_dtors-ppc32.c -) set (SRC_LIST_ppc64 src/RTthread-powerpc.c src/RTthread-powerpc-asm.S @@ -111,16 +104,13 @@ set (RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SR set (SRC_LIST ${SRC_LIST} ${SRC_LIST_x86_64}) set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_x86_64}) elseif (PLATFORM MATCHES ppc64) -set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_ppc32}) -set (RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_ppc32}) +set (SRC_LIST_mabi ${SRC_LIST}) +set (RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST}) set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc64}) set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_ppc64}) elseif (PLATFORM MATCHES i386) set (SRC_LIST ${SRC_LIST} ${SRC_LIST_i386}) set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_i386}) -elseif (PLATFORM MATCHES ppc32) -set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc32}) -set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_ppc32}) elseif (PLATFORM MATCHES aarch64) set (SRC_LIST ${SRC_LIST} ${SRC_LIST_aarch64}) set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_aarch64}) diff --git a/dyninstAPI_RT/src/RTlinux.c b/dyninstAPI_RT/src/RTlinux.c index 44ac47d146..0ddfc12ff6 100644 --- a/dyninstAPI_RT/src/RTlinux.c +++ b/dyninstAPI_RT/src/RTlinux.c @@ -331,8 +331,6 @@ int DYNINST_am_initial_thread( dyntid_t tid ) { #elif defined(arch_power) #if defined(arch_64bit) #define UC_PC(x) x->uc_mcontext.regs->nip - #else // 32-bit - #define UC_PC(x) x->uc_mcontext.uc_regs->gregs[32] #endif // power #elif defined(arch_aarch64) //#warning "UC_PC: in aarch64, pc is not directly accessable." diff --git a/dyninstAPI_RT/src/RTstatic_ctors_dtors-ppc32.c b/dyninstAPI_RT/src/RTstatic_ctors_dtors-ppc32.c deleted file mode 100644 index 3c3265b832..0000000000 --- a/dyninstAPI_RT/src/RTstatic_ctors_dtors-ppc32.c +++ /dev/null @@ -1,94 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#if defined(DYNINST_RT_STATIC_LIB) -void (*DYNINSTctors_addr)(void); -void (*DYNINSTdtors_addr)(void); - -#if defined(MUTATEE64) -static const unsigned long long CTOR_LIST_TERM = 0x0000000000000000ULL; -static const unsigned long long CTOR_LIST_START = 0xffffffffffffffffULL; -static const unsigned long long DTOR_LIST_TERM = 0x0000000000000000ULL; -static const unsigned long long DTOR_LIST_START = 0xffffffffffffffffULL; -#else -static const unsigned CTOR_LIST_TERM = 0x00000000; -static const unsigned CTOR_LIST_START = 0xffffffff; -static const unsigned DTOR_LIST_TERM = 0x00000000; -static const unsigned DTOR_LIST_START = 0xffffffff; -#endif - -extern void DYNINSTBaseInit(); - -/* - * When rewritting a static binary, .ctors and .dtors sections of - * instrumentation code needs to be combined with the existing .ctors - * and .dtors sections of the static binary. - * - * The following functions process the .ctors and .dtors sections - * that have been rewritten. The rewriter will relocate the - * address of DYNINSTctors_addr and DYNINSTdtors_addr to point to - * new .ctors and .dtors sections. - */ - -void DYNINSTglobal_ctors_handler() { - void (**ctors_array)(void) = &DYNINSTctors_addr; - - // Find end of function pointer list - void (**tmp_ptr)(void) = ctors_array; - unsigned size = 0; - while( *tmp_ptr != ( (void(*)(void))CTOR_LIST_TERM ) ) { - size++; - tmp_ptr++; - } - - // Constructors are called in the reverse order that they are listed - tmp_ptr = &ctors_array[size-1]; // skip list end - while( *tmp_ptr != ( (void(*)(void))CTOR_LIST_START ) ) { - (*tmp_ptr)(); - tmp_ptr--; - } - - // This ensures that instrumentation cannot execute until all global - // constructors have run - DYNINSTBaseInit(); -} - -void DYNINSTglobal_dtors_handler() { - void (**dtors_array)(void) = &DYNINSTdtors_addr; - - // Destructors are called in the forward order that they are listed - void (**tmp_ptr)(void) = &dtors_array[1]; // skip list start - while( *tmp_ptr != ( (void(*)(void))DTOR_LIST_TERM ) ) { - (*tmp_ptr)(); - tmp_ptr++; - } -} - -#endif diff --git a/dyninstAPI_RT/src/RTthread-powerpc-asm.S b/dyninstAPI_RT/src/RTthread-powerpc-asm.S index fd59bdcd27..818c61a3d0 100644 --- a/dyninstAPI_RT/src/RTthread-powerpc-asm.S +++ b/dyninstAPI_RT/src/RTthread-powerpc-asm.S @@ -1,8 +1,6 @@ .file "RTthread-powerpc-asm.S" .machine "push" -#if defined(arch_ppc_little_endian) .abiversion 2 -#endif #ifndef __clang__ # if defined(arch_64bit) @@ -23,7 +21,6 @@ # /* Return 1 if such an atomic update occurred; */ # /* return 0 otherwise. */ # /* ------------------------------------------- */ -#if defined(arch_ppc_little_endian) .section ".toc", "aw" .section ".text" .align 2 @@ -31,23 +28,6 @@ .globl atomic_set .type atomic_set, @function atomic_set: -#elif defined(arch_64bit) - .globl atomic_set - .section ".opd", "aw" - .align 3 -atomic_set: - .quad .atomic_set, .TOC.@tocbase, 0 - .size atomic_set, 24 - - .previous - .globl .atomic_set - .type .atomic_set, @function -.atomic_set: -#else - .globl atomic_set - .type atomic_set, @function -atomic_set: -#endif addi 4,0,1 # r4 = 1 # Attempt atomic memory swap lwarx 5,0,3 # r5 = *int_ptr (load reserve indexed) @@ -64,13 +44,7 @@ atomic_set_return_0: addi 3,0,0 # function return value = r3 = 0 blr # branch via link register (function return) -#if defined(arch_ppc_little_endian) .size atomic_set, . - atomic_set -#elif defined(arch_64bit) - .size .atomic_set, . - .atomic_set -#else - .size atomic_set, . - atomic_set -#endif .machine "pop" diff --git a/parseThat/.gitignore b/parseThat/.gitignore index 171119f8ae..d67fb0ff91 100644 --- a/parseThat/.gitignore +++ b/parseThat/.gitignore @@ -3,7 +3,6 @@ i386-unknown-freebsd7.2/ i386-unknown-linux2.4/ i386-unknown-vxworks6.x/ ppc32_bgp/ -ppc32_linux/ ppc32-unknown-vxworks6.x/ ppc64_linux/ x86_64-unknown-linux2.4/ diff --git a/scripts/dynsysname b/scripts/dynsysname index dc6692a81a..6906fb224b 100755 --- a/scripts/dynsysname +++ b/scripts/dynsysname @@ -25,12 +25,6 @@ fi if [ ${P/powerpc64/} != ${P} ]; then PLATFORM=ppc64_linux fi -if [ ${P/powerpc-/} != ${P} ]; then -PLATFORM=ppc32_linux -fi -if [ ${P/ppc-/} != ${P} ]; then -PLATFORM=ppc32_linux -fi if [ ${P/aarch64-/} != ${P} ]; then PLATFORM=aarch64-unknown-linux fi @@ -67,9 +61,6 @@ fi if [ ${P/i386/} != ${P} ]; then PLATFORM=i386-unknown-vxworks6.x fi -if [ ${P/powerpc-/} != ${P} ]; then -PLATFORM=ppc32-unknown-vxworks6.x -fi fi echo $PLATFORM diff --git a/symtabAPI/CMakeLists.txt b/symtabAPI/CMakeLists.txt index 3e07aa3738..4ca6896f83 100644 --- a/symtabAPI/CMakeLists.txt +++ b/symtabAPI/CMakeLists.txt @@ -57,11 +57,6 @@ set (SRC_LIST ${SRC_LIST} src/emitElfStatic-x86.C src/relocationEntry-elf-x86.C ) -elseif (PLATFORM MATCHES ppc32) -set (SRC_LIST ${SRC_LIST} - src/emitElfStatic-ppc32.C - src/relocationEntry-elf-ppc32.C - ) elseif (PLATFORM MATCHES ppc64) set (SRC_LIST ${SRC_LIST} src/emitElfStatic-ppc64.C diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 7a52479f7e..1f1f242ce5 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -386,13 +386,8 @@ bool Object::loaded_elf(Offset &txtaddr, Offset &dataddr, plt_size_ = 0; symtab_addr_ = 0; strtab_addr_ = 0; -#if defined (ppc32_linux) - plt_entry_size_ = 8; - rel_plt_entry_size_ = 8; -#else plt_entry_size_ = 0; rel_plt_entry_size_ = 0; -#endif rel_plt_addr_ = 0; rel_plt_size_ = 0; rel_addr_ = 0; diff --git a/symtabAPI/src/emitElfStatic-ppc32.C b/symtabAPI/src/emitElfStatic-ppc32.C deleted file mode 100644 index e10508b0be..0000000000 --- a/symtabAPI/src/emitElfStatic-ppc32.C +++ /dev/null @@ -1,744 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* - * holds architecture specific functions for x86 and x86_64 architecture needed for the - * static executable rewriter - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "emitElfStatic.h" -#include "Symtab.h" -#include "Symbol.h" -#include "Archive.h" -#include "Object.h" -#include "Region.h" -#include "debug.h" - -using namespace Dyninst; -using namespace Dyninst::SymtabAPI; - -static const unsigned PPC32_WIDTH = 4; -static const unsigned PPC64_WIDTH = 8; - -static const Elf64_Word X86_HEADER = 0xffffffff; -static const Elf64_Word X86_TRAILER = 0x00000000; -static const Elf64_Xword X86_64_HEADER = 0xffffffffffffffffULL; -static const Elf64_Xword X86_64_TRAILER = 0x0000000000000000ULL; - -unsigned int setBits(unsigned int target, unsigned int pos, unsigned int len, unsigned int value) { - rewrite_printf("setBits target 0x%lx value 0x%lx pos %d len %d \n", target, value, pos, len); - unsigned int mask; - mask = ~(~0 << len); - value = value & mask; - - mask = ~(mask << pos); - value = value << pos; - - target = target & mask; - target = target | value; - rewrite_printf( "setBits target 0x%lx value 0x%lx pos %d len %d \n", target, value, pos, len); - return target; -} - -#if defined(os_freebsd) -#define R_X86_64_JUMP_SLOT R_X86_64_JMP_SLOT -#endif - -// Used in an assert so needs to be a macro -#define UNKNOWN_ADDRESS_WIDTH_ASSERT "An unknown address width was encountered, can't continue" - -/* NOTE: - * As most of these functions are defined per architecture, the description of - * each of these functions is in the emitElfStatic header. Comments describing - * the function interface are explicitly left out. - */ - -/** - * - * Given a relocation, determines if the relocation corresponds to a .ctors or .dtors - * table that requires special consideration. Modifies the passed symbol offset to - * point to the right table, if applicable. - * - * rel The relocation entry to examine - * globalOffset The offset of the linked code (used for symbol offset calculation) - * lmap Holds information about .ctors/.dtors tables - * errMsg Set on error - * symbolOffset Modified by this routine to contain the offset of the table - * - * Returns true, if there are no errors including the case where the relocation - * entry doesn't reference the .ctors/.dtors tables. - */ - -static bool computeCtorDtorAddress(relocationEntry &rel, Offset globalOffset, - LinkMap &lmap, string &errMsg, Offset &symbolOffset) -{ - if( rel.name() == SYMTAB_CTOR_LIST_REL ) { - // This needs to be: (the location of the .ctors table) - if( lmap.newCtorRegions.size() > 0 ) { - symbolOffset = lmap.ctorRegionOffset + globalOffset; - }else if( lmap.originalCtorRegion != NULL ) { - symbolOffset = lmap.originalCtorRegion->getMemOffset(); - }else{ - errMsg = "Failed to locate original .ctors Region -- cannot apply relocation"; - rewrite_printf("Failed to locate original .ctors Region -- cannot apply relocation\n"); - return false; - } - }else if( rel.name() == SYMTAB_DTOR_LIST_REL ) { - // This needs to be: (the location of the .dtors table) - if( lmap.newDtorRegions.size() > 0 ) { - symbolOffset = lmap.dtorRegionOffset + globalOffset; - }else if( lmap.originalDtorRegion != NULL ) { - symbolOffset = lmap.originalDtorRegion->getMemOffset(); - }else{ - errMsg = "Failed to locate original .dtors Region -- cannot apply relocation"; - rewrite_printf("Failed to locate original .dtors Region -- cannot apply relocation\n"); - return false; - } - } - - return true; -} - - -bool emitElfStatic::archSpecificRelocation(Symtab *, Symtab *, char *targetData, relocationEntry &rel, - Offset dest, Offset relOffset, Offset globalOffset, LinkMap &lmap, - string &errMsg) -{ - rewrite_printf(" archSpecificRelocation %s \n", rel.name().c_str()); - if( PPC32_WIDTH == addressWidth_ ) { - int relocation_length = sizeof(Elf32_Word)*8; // in bits - int relocation_pos = 0; // in bits - int branch_pred = -1; - /* - * Referring to the SYSV 386 supplement: - * - * All relocations on x86 are one word32 == Elf32_Word - * - * S = symbolOffset - * A = addend - * P = relOffset - */ - - Offset symbolOffset = rel.getDynSym()->getOffset(); - - Elf32_Word addend; - if( rel.regionType() == Region::RT_REL ) { - memcpy(&addend, &targetData[dest], sizeof(Elf32_Word)); - }else if( rel.regionType() == Region::RT_RELA ) { - addend = rel.addend(); - } - - if(!computeCtorDtorAddress(rel, globalOffset, lmap, errMsg, symbolOffset)) { - return false; - } - - rewrite_printf("relocation for '%s': TYPE = %s(%lu) S = %lx A = %lx P = %lx\n", - rel.name().c_str(), - relocationEntry::relType2Str(rel.getRelType(), addressWidth_), - rel.getRelType(), symbolOffset, addend, relOffset); - - Offset relocation = 0; - map::iterator result; - stringstream tmp; - - switch(rel.getRelType()) { - -/* PowerPC relocations defined by the ABIs */ -case R_PPC_NONE:/* 0 */ - break; -case R_PPC_ADDR32:/* 1 32bit absolute address */ - relocation = symbolOffset + addend; - break; -case R_PPC_ADDR24:/* 2 26bit address, 2 bits ignored. */ - relocation_length = 26; - relocation_pos = 2; - relocation = (symbolOffset + addend) >> 2; - break; -case R_PPC_ADDR16:/* 3 16bit absolute address */ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend; - break; -case R_PPC_ADDR16_LO:/* 4 lower 16bit of absolute address */ - relocation_length = 16; - relocation_pos = 0; - relocation = symbolOffset + addend; - relocation = (relocation & 0xffff); - break; -case R_PPC_ADDR16_HI:/* 5 high 16bit of absolute address */ - relocation_length = 16; - relocation_pos = 0; - relocation = symbolOffset + addend; - relocation = ((relocation >> 16) & 0xffff); - break; -case R_PPC_ADDR16_HA:/* 6 adjusted high 16bit */ - relocation_length = 16; - relocation_pos = 0; - relocation = symbolOffset + addend; - relocation = (((relocation >> 16) + ((relocation & 0x8000)? 1:0)) & 0xffff); - break; -case R_PPC_ADDR14:/* 7 16bit address, 2 bits ignored */ - relocation_length = 14; - relocation_pos = 16; - relocation = (symbolOffset + addend) >> 2; - break; -case R_PPC_ADDR14_BRTAKEN:/* 8 */ - relocation_length = 14; - relocation_pos = 16; - relocation = (symbolOffset + addend) >> 2; - // bit 10 is set - branch_pred = 1; - break; -case R_PPC_ADDR14_BRNTAKEN:/* 9 */ - relocation_length = 14; - relocation_pos = 16; - relocation = (symbolOffset + addend) >> 2; - // bit 10 is set - branch_pred = 0; - break; -case R_PPC_REL24:/* 10 PC relative 26 bit */ - relocation_length = 24; - relocation_pos = 2; - relocation = (symbolOffset + addend - relOffset) >> 2; - break; -case R_PPC_REL14:/* 11 PC relative 16 bit */ - relocation_length = 14; - relocation_pos = 16; - relocation = (symbolOffset + addend - relOffset) >> 2; - break; -case R_PPC_REL14_BRTAKEN:/* 12*/ - relocation_length = 14; - relocation_pos = 16; - relocation = (symbolOffset + addend - relOffset) >> 2; - branch_pred = 1; - break; -case R_PPC_REL14_BRNTAKEN:/* 13*/ - relocation_length = 14; - relocation_pos = 16; - relocation = (symbolOffset + addend - relOffset) >> 2; - branch_pred = 0; - break; -case R_PPC_GOT16:/* 14*/ - result = lmap.gotSymbols.find(rel.getDynSym()); - if( result == lmap.gotSymbols.end() ) { - errMsg = "Expected GOT symbol does not exist in GOT symbol mapping"; - return false; - } - relocation = result->second; - relocation = (relocation) >> 16; - relocation_length = 16; - relocation_pos = 16; - break; -case R_PPC_GOT16_LO:/* 15*/ - result = lmap.gotSymbols.find(rel.getDynSym()); - if( result == lmap.gotSymbols.end() ) { - errMsg = "Expected GOT symbol does not exist in GOT symbol mapping"; - return false; - } - relocation = result->second; - relocation = (relocation & 0xffff); - relocation_length = 16; - relocation_pos = 0; - break; -case R_PPC_GOT16_HI:/* 16*/ - result = lmap.gotSymbols.find(rel.getDynSym()); - if( result == lmap.gotSymbols.end() ) { - errMsg = "Expected GOT symbol does not exist in GOT symbol mapping"; - return false; - } - relocation = result->second; - relocation = ((relocation >> 16) & 0xffff); - relocation_length = 16; - relocation_pos = 0; - break; -case R_PPC_GOT16_HA:/* 17*/ - result = lmap.gotSymbols.find(rel.getDynSym()); - if( result == lmap.gotSymbols.end() ) { - errMsg = "Expected GOT symbol does not exist in GOT symbol mapping"; - return false; - } - relocation = result->second; - relocation = (((relocation >> 16) + ((relocation & 0x8000)? 1:0)) & 0xffff); - relocation_length = 16; - relocation_pos = 0; - break; -case R_PPC_PLTREL24:/* 18*/ - relocation_length = 24; - relocation_pos = 2; - relocation = (symbolOffset + addend - relOffset) >> 2; - break; -case R_PPC_COPY:/* 19*/ - break; -case R_PPC_GLOB_DAT:/* 20*/ - relocation = symbolOffset + addend; - break; -case R_PPC_JMP_SLOT:/* 21*/ - break; -case R_PPC_RELATIVE:/* 22*/ - tmp << "ERROR: encountered relocation type(" << rel.getRelType() << - ") that is meant for use during dynamic linking"; - errMsg = tmp.str(); - return false; -case R_PPC_LOCAL24PC:/* 23*/ - relocation_length = 24; - relocation_pos = 2; - relocation = (symbolOffset + addend - relOffset) >> 2; - break; -case R_PPC_UADDR32:/* 24*/ - relocation = symbolOffset + addend ; - break; -case R_PPC_UADDR16:/* 25*/ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend; - break; -case R_PPC_REL32:/* 26*/ - relocation = symbolOffset + addend - relOffset; - break; -case R_PPC_PLT32:/* 27*/ - relocation = symbolOffset + addend; - break; -case R_PPC_PLTREL32:/* 28*/ - relocation = symbolOffset + addend - relOffset; - break; -case R_PPC_PLT16_LO:/* 29*/ - relocation = symbolOffset + addend; - relocation = (relocation & 0xffff); - break; -case R_PPC_PLT16_HI:/* 30*/ - relocation = symbolOffset + addend; - relocation = ((relocation >> 16) & 0xffff); - break; -case R_PPC_PLT16_HA:/* 31*/ - relocation = symbolOffset + addend; - relocation = (((relocation >> 16) + ((relocation & 0x8000)? 1:0)) & 0xffff); - break; -case R_PPC_SDAREL16:/* 32*/ -case R_PPC_SECTOFF:/* 33*/ -case R_PPC_SECTOFF_LO:/* 34*/ -case R_PPC_SECTOFF_HI:/* 35*/ -case R_PPC_SECTOFF_HA:/* 36*/ - tmp << "Relocation type " << rel.getRelType() - << " currently unimplemented"; - errMsg = tmp.str(); - rewrite_printf(" Relocation type %s currently unimplemented \n", relocationEntry::relType2Str(rel.getRelType(), addressWidth_)); - return false; - -/* PowerPC relocations defined for the TLS access ABI. */ -case R_PPC_TLS:/* 67 none (sym+add)@tls */ -case R_PPC_DTPMOD32:/* 68 word32 (sym+add)@dtpmod */ -case R_PPC_TPREL16:/* 69 half16* (sym+add)@tprel */ -case R_PPC_TPREL16_LO:/* 70 half16 (sym+add)@tprel@l */ -case R_PPC_TPREL16_HI:/* 71 half16 (sym+add)@tprel@h */ -case R_PPC_TPREL16_HA:/* 72 half16 (sym+add)@tprel@ha */ -case R_PPC_TPREL32:/* 73 word32 (sym+add)@tprel */ -case R_PPC_DTPREL16:/* 74 half16* (sym+add)@dtprel */ -case R_PPC_DTPREL16_LO:/* 75 half16 (sym+add)@dtprel@l */ -case R_PPC_DTPREL16_HI:/* 76 half16 (sym+add)@dtprel@h */ -case R_PPC_DTPREL16_HA:/* 77 half16 (sym+add)@dtprel@ha */ -case R_PPC_DTPREL32:/* 78 word32 (sym+add)@dtprel */ -case R_PPC_GOT_TLSGD16:/* 79 half16* (sym+add)@got@tlsgd */ -case R_PPC_GOT_TLSGD16_LO:/* 80 half16 (sym+add)@got@tlsgd@l */ -case R_PPC_GOT_TLSGD16_HI:/* 81 half16 (sym+add)@got@tlsgd@h */ -case R_PPC_GOT_TLSGD16_HA:/* 82 half16 (sym+add)@got@tlsgd@ha */ -case R_PPC_GOT_TLSLD16:/* 83 half16* (sym+add)@got@tlsld */ -case R_PPC_GOT_TLSLD16_LO:/* 84 half16 (sym+add)@got@tlsld@l */ -case R_PPC_GOT_TLSLD16_HI:/* 85 half16 (sym+add)@got@tlsld@h */ -case R_PPC_GOT_TLSLD16_HA:/* 86 half16 (sym+add)@got@tlsld@ha */ -case R_PPC_GOT_TPREL16:/* 87 half16* (sym+add)@got@tprel */ -case R_PPC_GOT_TPREL16_LO:/* 88 half16 (sym+add)@got@tprel@l */ -case R_PPC_GOT_TPREL16_HI:/* 89 half16 (sym+add)@got@tprel@h */ -case R_PPC_GOT_TPREL16_HA:/* 90 half16 (sym+add)@got@tprel@ha */ -case R_PPC_GOT_DTPREL16:/* 91 half16* (sym+add)@got@dtprel */ -case R_PPC_GOT_DTPREL16_LO:/* 92 half16* (sym+add)@got@dtprel@l */ -case R_PPC_GOT_DTPREL16_HI:/* 93 half16* (sym+add)@got@dtprel@h */ -case R_PPC_GOT_DTPREL16_HA:/* 94 half16* (sym+add)@got@dtprel@ha */ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend; - rewrite_printf(" Relocation type %s currently unimplemented \n", relocationEntry::relType2Str(rel.getRelType(), addressWidth_)); - break; - -/* GNU relocs used in PIC code sequences. */ -/* NOTE: The following relocations are not defined in some elf.h - Hence, using numbers instead of name */ -case 249: /*R_PPC_REL16: 249 word32 (sym-.) */ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend - relOffset ; - break; -case 250: /*R_PPC_REL16_LO: 250 half16 (sym-.)@l */ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend - relOffset ; - relocation = (relocation & 0xffff); - break; -case 251: /*R_PPC_REL16_HI: 251 half16 (sym-.)@h */ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend - relOffset ; - relocation = ((relocation >> 16) & 0xffff); - break; -case 252: /*R_PPC_REL16_HA: 252 half16 (sym-.)@ha */ - relocation_length = 16; - relocation_pos = 16; - relocation = symbolOffset + addend - relOffset ; - relocation = (((relocation >> 16) + ((relocation & 0x8000)? 1:0)) & 0xffff); - break; -/* This is a phony reloc to handle any old fashioned TOC16 references - that may still be in object files. */ -case 255: /*R_PPC_TOC16: 255*/ - break; - -default: - tmp << "Relocation type " << rel.getRelType() - << " currently unimplemented"; - rewrite_printf(" Relocation type %s currently unimplemented \n", relocationEntry::relType2Str(rel.getRelType(), addressWidth_)); - errMsg = tmp.str(); - return false; - } - - rewrite_printf(" relocation = 0x%lx @ 0x%lx target data 0x%lx %lx %lx %lx \n", relocation, relOffset, targetData[dest], targetData[dest+1], targetData[dest+2], targetData[dest+3]); - if (rel.getRelType() == R_PPC_REL24) { - unsigned int *td = (unsigned int *) targetData; - unsigned int target; - target = td[dest/4]; - target = setBits(target, relocation_pos, relocation_length, relocation); - memcpy(&targetData[dest], &target, sizeof(Elf32_Word)); - } else { - unsigned int *td = (unsigned int *) targetData; - unsigned int target; - target = td[dest/4]; - target = setBits(target, relocation_pos, relocation_length, relocation); - memcpy(&td[dest/4], &target, sizeof(Elf32_Word)); -// memcpy(&targetData[dest], r+2, relocation_size); - rewrite_printf(" relocation = 0x%lx @ 0x%lx target data 0x%lx %lx %lx %lx \n", relocation, relOffset, targetData[dest], targetData[dest+1], targetData[dest+2], targetData[dest+3]); - } - if (branch_pred >= 0) { - unsigned int *td = (unsigned int *) targetData; - unsigned int target; - target = td[dest/4]; - target = setBits(target, 10, 1, branch_pred); - memcpy(&td[dest/4], &target, sizeof(Elf32_Word)); - } - - } else{ - assert(!UNKNOWN_ADDRESS_WIDTH_ASSERT); - } - return true; -} - -bool emitElfStatic::checkSpecialCaseSymbols(Symtab *, Symbol *) { - return true; -} - -/* The TLS implementation on ppc is Variant 1 */ - -Offset emitElfStatic::layoutTLSImage(Offset globalOffset, Region *dataTLS, Region *bssTLS, LinkMap &lmap) { - return tlsLayoutVariant1(globalOffset, dataTLS, bssTLS, lmap); -} - -Offset emitElfStatic::adjustTLSOffset(Offset curOffset, Offset tlsSize) { - return curOffset; -} - -char emitElfStatic::getPaddingValue(Region::RegionType rtype) { - // TODO: if this matters, we can noop-pad by returning an unsigned - // instead of a char... - return 0x0; -} - -void emitElfStatic::cleanupTLSRegionOffsets(map ®ionAllocs, - Region *dataTLS, Region *bssTLS) -{ - tlsCleanupVariant2(regionAllocs, dataTLS, bssTLS); -} - -static const string CTOR_NAME(".ctors"); -static const string DTOR_NAME(".dtors"); -Offset emitElfStatic::layoutNewCtorRegion(LinkMap &lmap) { - /* - * .ctors sections are processed in reverse order on Linux x86. New .ctors - * sections need to be placed before the original .ctors section - */ - - Offset retOffset = lmap.ctorRegionOffset; - retOffset += addressWidth_; - - pair::iterator, bool> result; - - for(auto reg_it = lmap.newCtorRegions.begin(); reg_it != lmap.newCtorRegions.end(); ++reg_it) { - result = lmap.regionAllocs.insert(make_pair(*reg_it, make_pair(0, retOffset))); - - // If the map already contains this Region, this is a logic error - if( !result.second ) { - return ~0UL; - } - - retOffset += (*reg_it)->getDiskSize(); - } - - if( lmap.originalCtorRegion != NULL ) { - // Account for original .ctors section (minus the header and trailer) - retOffset += lmap.originalCtorRegion->getDiskSize() - addressWidth_ - addressWidth_; - } - retOffset += addressWidth_; - - return retOffset; - - return 0; -} - -bool emitElfStatic::createNewCtorRegion(LinkMap &lmap) { - char *targetData = lmap.allocatedData; - - if( PPC32_WIDTH != addressWidth_ && PPC64_WIDTH != addressWidth_ ) { - assert(!UNKNOWN_ADDRESS_WIDTH_ASSERT); - } - - unsigned trailerSize, headerSize; - - /* Give the new Region a header and trailer */ - Offset headerOffset = lmap.ctorRegionOffset; - Offset trailerOffset; - if( PPC32_WIDTH == addressWidth_ ) { - memcpy(&targetData[headerOffset], &X86_HEADER, sizeof(X86_HEADER)); - trailerOffset = lmap.ctorRegionOffset + lmap.ctorSize - sizeof(X86_TRAILER); - memcpy(&targetData[trailerOffset], &X86_TRAILER, sizeof(X86_TRAILER)); - headerSize = sizeof(X86_HEADER); - trailerSize = sizeof(X86_TRAILER); - }else{ - memcpy(&targetData[headerOffset], &X86_64_HEADER, sizeof(X86_64_HEADER)); - trailerOffset = lmap.ctorRegionOffset + lmap.ctorSize - sizeof(X86_64_TRAILER); - memcpy(&targetData[trailerOffset], &X86_64_TRAILER, sizeof(X86_64_TRAILER)); - headerSize = sizeof(X86_64_HEADER); - trailerSize = sizeof(X86_64_TRAILER); - } - - if( lmap.originalCtorRegion != NULL ) { - /* Determine where the original .ctors section should be placed */ - Offset originalOffset = lmap.ctorRegionOffset + lmap.ctorSize - - trailerSize - (lmap.originalCtorRegion->getDiskSize() - headerSize - trailerSize); - - /* Copy the original .ctors section w/o the header and trailer */ - char *rawRegionData = reinterpret_cast(lmap.originalCtorRegion->getPtrToRawData()); - memcpy(&targetData[originalOffset], &rawRegionData[headerSize], - lmap.originalCtorRegion->getDiskSize() - headerSize - trailerSize); - } - - return true; -} - - -Offset emitElfStatic::layoutNewDtorRegion(LinkMap &lmap) { - /* - * .dtors sections are processed in forward order on Linux x86. So new - * .dtors sections need to be placed after the original .dtors section - */ - - Offset retOffset = lmap.dtorRegionOffset; - retOffset += addressWidth_; - - pair::iterator, bool> result; - if( lmap.originalDtorRegion != NULL ) { - // Account for the original .dtors section (minus the header and trailer) - retOffset += lmap.originalDtorRegion->getDiskSize() - addressWidth_ - addressWidth_; - } - - for(auto reg_it = lmap.newDtorRegions.begin(); reg_it != lmap.newDtorRegions.end(); ++reg_it) { - result = lmap.regionAllocs.insert(make_pair(*reg_it, make_pair(0, retOffset))); - - // If the map already contains this Region, this is a logic error - if( !result.second ) { - return ~0UL; - } - - retOffset += (*reg_it)->getDiskSize(); - } - - retOffset += addressWidth_; - return retOffset; - - return 0; -} - -bool emitElfStatic::createNewDtorRegion(LinkMap &lmap) { - char *targetData = lmap.allocatedData; - - if( PPC32_WIDTH != addressWidth_ && PPC64_WIDTH != addressWidth_ ) { - assert(!UNKNOWN_ADDRESS_WIDTH_ASSERT); - } - - unsigned headerSize, trailerSize; - - /* Give the new Region a header and trailer */ - Offset headerOffset = lmap.dtorRegionOffset; - Offset trailerOffset; - if( PPC32_WIDTH == addressWidth_ ) { - memcpy(&targetData[headerOffset], &X86_HEADER, sizeof(X86_HEADER)); - trailerOffset = lmap.dtorRegionOffset + lmap.dtorSize - sizeof(X86_TRAILER); - memcpy(&targetData[trailerOffset], &X86_TRAILER, sizeof(X86_TRAILER)); - headerSize = sizeof(X86_HEADER); - trailerSize = sizeof(X86_TRAILER); - }else{ - memcpy(&targetData[headerOffset], &X86_64_HEADER, sizeof(X86_64_HEADER)); - trailerOffset = lmap.dtorRegionOffset + lmap.dtorSize - sizeof(X86_64_TRAILER); - memcpy(&targetData[trailerOffset], &X86_64_TRAILER, sizeof(X86_64_TRAILER)); - headerSize = sizeof(X86_64_HEADER); - trailerSize = sizeof(X86_64_TRAILER); - } - - if( lmap.originalDtorRegion != NULL ) { - /* Determine where the original .dtors section should be placed */ - Offset originalOffset = lmap.dtorRegionOffset + headerSize; - - /* Copy the original .dtors section w/o header and trailer */ - char *rawRegionData = reinterpret_cast(lmap.originalDtorRegion->getPtrToRawData()); - memcpy(&targetData[originalOffset], &rawRegionData[headerSize], - lmap.originalDtorRegion->getDiskSize() - headerSize - trailerSize); - } - - return true; - -} - -bool emitElfStatic::isConstructorRegion(Region *reg) { - return ( CTOR_NAME.compare(reg->getRegionName()) == 0 ); - -} - -bool emitElfStatic::isDestructorRegion(Region *reg) { - return ( DTOR_NAME.compare(reg->getRegionName()) == 0 ); -} - -bool emitElfStatic::isGOTRegion(Region *) { - return false; -} - -bool emitElfStatic::isGOTRelocation(unsigned long relType) { - if( PPC32_WIDTH == addressWidth_ ) { - switch(relType) { - case R_PPC_GOT16: - case R_PPC_GOT16_LO: - case R_PPC_GOT16_HI: - case R_PPC_GOT16_HA: - case R_PPC_GOT_TPREL16: - case R_PPC_TLS: - return true; - break; - default: - return false; - break; - } - } else{ - assert(!UNKNOWN_ADDRESS_WIDTH_ASSERT); - } - - return false; -} - -Offset emitElfStatic::getGOTSize(Symtab *, LinkMap &, Offset &) { - return 0; -} - -Offset emitElfStatic::getGOTAlign(LinkMap &) { - return 0; -} - -void emitElfStatic::buildGOT(Symtab *, LinkMap &) { -} - -void emitElfStatic::getExcludedSymbolNames(set &) { -} - -Offset emitElfStatic::allocStubRegions(LinkMap &lmap, Offset) { - // Size 0 - return lmap.stubRegionOffset; -} - -bool emitElfStatic::updateTOC(Symtab *, LinkMap &, Offset) { - return true; -} - - -bool emitElfUtils::updateRelocation(Symtab *obj, relocationEntry &rel, int library_adjust) { - // Currently, only verified on x86 and x86_64 -- this may work on other architectures - Region *targetRegion = obj->findEnclosingRegion(rel.rel_addr()); - if( NULL == targetRegion ) { - rewrite_printf("Failed to find enclosing Region for relocation"); - return false; - } - - unsigned addressWidth = obj->getAddressWidth(); - if( addressWidth == 8 ) { - switch(rel.getRelType()) { - case R_PPC64_IRELATIVE: - case R_PPC64_RELATIVE: - rel.setAddend(rel.addend() + library_adjust); - break; -/* case R_PPC64_JMP_SLOT: - * For PowerPC ABI V2, .plt is a nobit section. - * We do not need to adjust the relocation entry. - */ - default: - //fprintf(stderr, "Unimplemented relType for architecture: %d\n", rel.getRelType()); - //assert(0); - break; - } - } - - // XXX The GOT also holds a pointer to the DYNAMIC segment -- this is currently not - // updated. However, this appears to be unneeded for regular shared libraries. - - // From the SYS V ABI x86 supplement - // "The table's entry zero is reserved to hold the address of the dynamic structure, - // referenced with the symbol _DYNAMIC. This allows a program, such as the - // dynamic linker, to find its own dynamic structure without having yet processed - // its relocation entries. This is especially important for the dynamic linker, because - // it must initialize itself without relying on other programs to relocate its memory - // image." - - // In order to implement this, would have determine the final address of a new .dynamic - // section before outputting the patched GOT data -- this will require some refactoring. - - //rewrite_printf("WARNING: updateRelocation is not implemented on this architecture\n"); - //(void) obj; (void) rel; (void) library_adjust; //silence warnings - - return true; -} - diff --git a/symtabAPI/src/relocationEntry-elf-ppc32.C b/symtabAPI/src/relocationEntry-elf-ppc32.C deleted file mode 100644 index 7cee2b36c4..0000000000 --- a/symtabAPI/src/relocationEntry-elf-ppc32.C +++ /dev/null @@ -1,143 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* Functions of the relocationEntry class specific to PPC ELF */ -#include "Symtab.h" -#include "annotations.h" -#include - -const char* relocationEntry::relType2Str(unsigned long r, unsigned /*addressWidth*/) { - switch(r) { - CASE_RETURN_STR(R_PPC_NONE); - CASE_RETURN_STR(R_PPC_ADDR32); - CASE_RETURN_STR(R_PPC_ADDR24); - CASE_RETURN_STR(R_PPC_ADDR16); - CASE_RETURN_STR(R_PPC_ADDR16_LO); - CASE_RETURN_STR(R_PPC_ADDR16_HI); - CASE_RETURN_STR(R_PPC_ADDR16_HA); - CASE_RETURN_STR(R_PPC_ADDR14); - CASE_RETURN_STR(R_PPC_ADDR14_BRTAKEN); - CASE_RETURN_STR(R_PPC_ADDR14_BRNTAKEN); - CASE_RETURN_STR(R_PPC_REL24); - CASE_RETURN_STR(R_PPC_REL14); - CASE_RETURN_STR(R_PPC_REL14_BRTAKEN); - CASE_RETURN_STR(R_PPC_REL14_BRNTAKEN); - CASE_RETURN_STR(R_PPC_GOT16); - CASE_RETURN_STR(R_PPC_GOT16_LO); - CASE_RETURN_STR(R_PPC_GOT16_HI); - CASE_RETURN_STR(R_PPC_GOT16_HA); - CASE_RETURN_STR(R_PPC_PLTREL24); - CASE_RETURN_STR(R_PPC_COPY); - CASE_RETURN_STR(R_PPC_GLOB_DAT); - CASE_RETURN_STR(R_PPC_JMP_SLOT); - CASE_RETURN_STR(R_PPC_RELATIVE); - CASE_RETURN_STR(R_PPC_LOCAL24PC); - CASE_RETURN_STR(R_PPC_UADDR32); - CASE_RETURN_STR(R_PPC_UADDR16); - CASE_RETURN_STR(R_PPC_REL32); - CASE_RETURN_STR(R_PPC_PLT32); - CASE_RETURN_STR(R_PPC_PLTREL32); - CASE_RETURN_STR(R_PPC_PLT16_LO); - CASE_RETURN_STR(R_PPC_PLT16_HI); - CASE_RETURN_STR(R_PPC_PLT16_HA); - CASE_RETURN_STR(R_PPC_SDAREL16); - CASE_RETURN_STR(R_PPC_SECTOFF); - CASE_RETURN_STR(R_PPC_SECTOFF_LO); - CASE_RETURN_STR(R_PPC_SECTOFF_HI); - CASE_RETURN_STR(R_PPC_SECTOFF_HA); - CASE_RETURN_STR(R_PPC_TLS); - CASE_RETURN_STR(R_PPC_DTPMOD32); - CASE_RETURN_STR(R_PPC_TPREL16); - CASE_RETURN_STR(R_PPC_TPREL16_LO); - CASE_RETURN_STR(R_PPC_TPREL16_HI); - CASE_RETURN_STR(R_PPC_TPREL16_HA); - CASE_RETURN_STR(R_PPC_TPREL32); - CASE_RETURN_STR(R_PPC_DTPREL16); - CASE_RETURN_STR(R_PPC_DTPREL16_LO); - CASE_RETURN_STR(R_PPC_DTPREL16_HI); - CASE_RETURN_STR(R_PPC_DTPREL16_HA); - CASE_RETURN_STR(R_PPC_DTPREL32); - CASE_RETURN_STR(R_PPC_GOT_TLSGD16); - CASE_RETURN_STR(R_PPC_GOT_TLSGD16_LO); - CASE_RETURN_STR(R_PPC_GOT_TLSGD16_HI); - CASE_RETURN_STR(R_PPC_GOT_TLSGD16_HA); - CASE_RETURN_STR(R_PPC_GOT_TLSLD16); - CASE_RETURN_STR(R_PPC_GOT_TLSLD16_LO); - CASE_RETURN_STR(R_PPC_GOT_TLSLD16_HI); - CASE_RETURN_STR(R_PPC_GOT_TLSLD16_HA); - CASE_RETURN_STR(R_PPC_GOT_TPREL16); - CASE_RETURN_STR(R_PPC_GOT_TPREL16_LO); - CASE_RETURN_STR(R_PPC_GOT_TPREL16_HI); - CASE_RETURN_STR(R_PPC_GOT_TPREL16_HA); - CASE_RETURN_STR(R_PPC_GOT_DTPREL16); - CASE_RETURN_STR(R_PPC_GOT_DTPREL16_LO); - CASE_RETURN_STR(R_PPC_GOT_DTPREL16_HI); - CASE_RETURN_STR(R_PPC_GOT_DTPREL16_HA); -#if defined(R_PPC_NUM) - CASE_RETURN_STR(R_PPC_NUM); -#endif - CASE_RETURN_STR(R_PPC_EMB_NADDR32); - CASE_RETURN_STR(R_PPC_EMB_NADDR16); - CASE_RETURN_STR(R_PPC_EMB_NADDR16_LO); - CASE_RETURN_STR(R_PPC_EMB_NADDR16_HI); - CASE_RETURN_STR(R_PPC_EMB_NADDR16_HA); - CASE_RETURN_STR(R_PPC_EMB_SDAI16); - CASE_RETURN_STR(R_PPC_EMB_SDA2I16); - CASE_RETURN_STR(R_PPC_EMB_SDA2REL); - CASE_RETURN_STR(R_PPC_EMB_SDA21); - CASE_RETURN_STR(R_PPC_EMB_MRKREF); - CASE_RETURN_STR(R_PPC_EMB_RELSEC16); - CASE_RETURN_STR(R_PPC_EMB_RELST_LO); - CASE_RETURN_STR(R_PPC_EMB_RELST_HI); - CASE_RETURN_STR(R_PPC_EMB_RELST_HA); - CASE_RETURN_STR(R_PPC_EMB_BIT_FLD); - CASE_RETURN_STR(R_PPC_EMB_RELSDA); - CASE_RETURN_STR(R_PPC_DIAB_SDA21_LO); - CASE_RETURN_STR(R_PPC_DIAB_SDA21_HI); - CASE_RETURN_STR(R_PPC_DIAB_SDA21_HA); - CASE_RETURN_STR(R_PPC_DIAB_RELSDA_LO); - CASE_RETURN_STR(R_PPC_DIAB_RELSDA_HI); - CASE_RETURN_STR(R_PPC_DIAB_RELSDA_HA); -#ifdef R_PPC_REL16 - // Older versions of elf.h may not have these defined. - CASE_RETURN_STR(R_PPC_REL16); - CASE_RETURN_STR(R_PPC_REL16_LO); - CASE_RETURN_STR(R_PPC_REL16_HI); - CASE_RETURN_STR(R_PPC_REL16_HA); -#endif - CASE_RETURN_STR(R_PPC_TOC16); - default: - return "?"; - } -} - -SYMTAB_EXPORT unsigned long relocationEntry::getGlobalRelType(unsigned /*addressWidth*/, Symbol *) { - return R_PPC_GLOB_DAT; -} diff --git a/syscalls/README b/syscalls/README index c4e033b093..39f16970c7 100644 --- a/syscalls/README +++ b/syscalls/README @@ -1,5 +1 @@ -System header files (unistd*.h) should be placed in Platform-specific files. - -NOTE: unistd.h from Linux/ppc contains both 32- and 64-bit syscall numbers. -This file has been copied to the Arch_ppc32 and Arch_ppc64 directories and -manually edited to reflect architecture-specific system call information. +System header files (unistd*.h) should be placed in Platform-specific files. \ No newline at end of file diff --git a/syscalls/unistd-by-platform/Linux/Arch_ppc32/unistd.h.20130604 b/syscalls/unistd-by-platform/Linux/Arch_ppc32/unistd.h.20130604 deleted file mode 100644 index a11a6ad5a0..0000000000 --- a/syscalls/unistd-by-platform/Linux/Arch_ppc32/unistd.h.20130604 +++ /dev/null @@ -1,334 +0,0 @@ -#ifndef _ASM_POWERPC_UNISTD_H_ -#define _ASM_POWERPC_UNISTD_H_ - -/* - * This file contains the system call numbers. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version - * 2 of the License, or (at your option) any later version. - */ - -#define __NR_restart_syscall 0 -#define __NR_exit 1 -#define __NR_fork 2 -#define __NR_read 3 -#define __NR_write 4 -#define __NR_open 5 -#define __NR_close 6 -#define __NR_waitpid 7 -#define __NR_creat 8 -#define __NR_link 9 -#define __NR_unlink 10 -#define __NR_execve 11 -#define __NR_chdir 12 -#define __NR_time 13 -#define __NR_mknod 14 -#define __NR_chmod 15 -#define __NR_lchown 16 -#define __NR_break 17 -#define __NR_oldstat 18 -#define __NR_lseek 19 -#define __NR_getpid 20 -#define __NR_mount 21 -#define __NR_umount 22 -#define __NR_setuid 23 -#define __NR_getuid 24 -#define __NR_stime 25 -#define __NR_ptrace 26 -#define __NR_alarm 27 -#define __NR_oldfstat 28 -#define __NR_pause 29 -#define __NR_utime 30 -#define __NR_stty 31 -#define __NR_gtty 32 -#define __NR_access 33 -#define __NR_nice 34 -#define __NR_ftime 35 -#define __NR_sync 36 -#define __NR_kill 37 -#define __NR_rename 38 -#define __NR_mkdir 39 -#define __NR_rmdir 40 -#define __NR_dup 41 -#define __NR_pipe 42 -#define __NR_times 43 -#define __NR_prof 44 -#define __NR_brk 45 -#define __NR_setgid 46 -#define __NR_getgid 47 -#define __NR_signal 48 -#define __NR_geteuid 49 -#define __NR_getegid 50 -#define __NR_acct 51 -#define __NR_umount2 52 -#define __NR_lock 53 -#define __NR_ioctl 54 -#define __NR_fcntl 55 -#define __NR_mpx 56 -#define __NR_setpgid 57 -#define __NR_ulimit 58 -#define __NR_oldolduname 59 -#define __NR_umask 60 -#define __NR_chroot 61 -#define __NR_ustat 62 -#define __NR_dup2 63 -#define __NR_getppid 64 -#define __NR_getpgrp 65 -#define __NR_setsid 66 -#define __NR_sigaction 67 -#define __NR_sgetmask 68 -#define __NR_ssetmask 69 -#define __NR_setreuid 70 -#define __NR_setregid 71 -#define __NR_sigsuspend 72 -#define __NR_sigpending 73 -#define __NR_sethostname 74 -#define __NR_setrlimit 75 -#define __NR_getrlimit 76 -#define __NR_getrusage 77 -#define __NR_gettimeofday 78 -#define __NR_settimeofday 79 -#define __NR_getgroups 80 -#define __NR_setgroups 81 -#define __NR_select 82 -#define __NR_symlink 83 -#define __NR_oldlstat 84 -#define __NR_readlink 85 -#define __NR_uselib 86 -#define __NR_swapon 87 -#define __NR_reboot 88 -#define __NR_readdir 89 -#define __NR_mmap 90 -#define __NR_munmap 91 -#define __NR_truncate 92 -#define __NR_ftruncate 93 -#define __NR_fchmod 94 -#define __NR_fchown 95 -#define __NR_getpriority 96 -#define __NR_setpriority 97 -#define __NR_profil 98 -#define __NR_statfs 99 -#define __NR_fstatfs 100 -#define __NR_ioperm 101 -#define __NR_socketcall 102 -#define __NR_syslog 103 -#define __NR_setitimer 104 -#define __NR_getitimer 105 -#define __NR_stat 106 -#define __NR_lstat 107 -#define __NR_fstat 108 -#define __NR_olduname 109 -#define __NR_iopl 110 -#define __NR_vhangup 111 -#define __NR_idle 112 -#define __NR_vm86 113 -#define __NR_wait4 114 -#define __NR_swapoff 115 -#define __NR_sysinfo 116 -#define __NR_ipc 117 -#define __NR_fsync 118 -#define __NR_sigreturn 119 -#define __NR_clone 120 -#define __NR_setdomainname 121 -#define __NR_uname 122 -#define __NR_modify_ldt 123 -#define __NR_adjtimex 124 -#define __NR_mprotect 125 -#define __NR_sigprocmask 126 -#define __NR_create_module 127 -#define __NR_init_module 128 -#define __NR_delete_module 129 -#define __NR_get_kernel_syms 130 -#define __NR_quotactl 131 -#define __NR_getpgid 132 -#define __NR_fchdir 133 -#define __NR_bdflush 134 -#define __NR_sysfs 135 -#define __NR_personality 136 -#define __NR_afs_syscall 137 /* Syscall for Andrew File System */ -#define __NR_setfsuid 138 -#define __NR_setfsgid 139 -#define __NR__llseek 140 -#define __NR_getdents 141 -#define __NR__newselect 142 -#define __NR_flock 143 -#define __NR_msync 144 -#define __NR_readv 145 -#define __NR_writev 146 -#define __NR_getsid 147 -#define __NR_fdatasync 148 -#define __NR__sysctl 149 -#define __NR_mlock 150 -#define __NR_munlock 151 -#define __NR_mlockall 152 -#define __NR_munlockall 153 -#define __NR_sched_setparam 154 -#define __NR_sched_getparam 155 -#define __NR_sched_setscheduler 156 -#define __NR_sched_getscheduler 157 -#define __NR_sched_yield 158 -#define __NR_sched_get_priority_max 159 -#define __NR_sched_get_priority_min 160 -#define __NR_sched_rr_get_interval 161 -#define __NR_nanosleep 162 -#define __NR_mremap 163 -#define __NR_setresuid 164 -#define __NR_getresuid 165 -#define __NR_query_module 166 -#define __NR_poll 167 -#define __NR_nfsservctl 168 -#define __NR_setresgid 169 -#define __NR_getresgid 170 -#define __NR_prctl 171 -#define __NR_rt_sigreturn 172 -#define __NR_rt_sigaction 173 -#define __NR_rt_sigprocmask 174 -#define __NR_rt_sigpending 175 -#define __NR_rt_sigtimedwait 176 -#define __NR_rt_sigqueueinfo 177 -#define __NR_rt_sigsuspend 178 -#define __NR_pread64 179 -#define __NR_pwrite64 180 -#define __NR_chown 181 -#define __NR_getcwd 182 -#define __NR_capget 183 -#define __NR_capset 184 -#define __NR_sigaltstack 185 -#define __NR_sendfile 186 -#define __NR_getpmsg 187 /* some people actually want streams */ -#define __NR_putpmsg 188 /* some people actually want streams */ -#define __NR_vfork 189 -#define __NR_ugetrlimit 190 /* SuS compliant getrlimit */ -#define __NR_readahead 191 -#define __NR_mmap2 192 -#define __NR_truncate64 193 -#define __NR_ftruncate64 194 -#define __NR_stat64 195 -#define __NR_lstat64 196 -#define __NR_fstat64 197 -#define __NR_pciconfig_read 198 -#define __NR_pciconfig_write 199 -#define __NR_pciconfig_iobase 200 -#define __NR_multiplexer 201 -#define __NR_getdents64 202 -#define __NR_pivot_root 203 -#define __NR_fcntl64 204 -#define __NR_madvise 205 -#define __NR_mincore 206 -#define __NR_gettid 207 -#define __NR_tkill 208 -#define __NR_setxattr 209 -#define __NR_lsetxattr 210 -#define __NR_fsetxattr 211 -#define __NR_getxattr 212 -#define __NR_lgetxattr 213 -#define __NR_fgetxattr 214 -#define __NR_listxattr 215 -#define __NR_llistxattr 216 -#define __NR_flistxattr 217 -#define __NR_removexattr 218 -#define __NR_lremovexattr 219 -#define __NR_fremovexattr 220 -#define __NR_futex 221 -#define __NR_sched_setaffinity 222 -#define __NR_sched_getaffinity 223 -/* 224 currently unused */ -#define __NR_tuxcall 225 -#define __NR_sendfile64 226 -#define __NR_io_setup 227 -#define __NR_io_destroy 228 -#define __NR_io_getevents 229 -#define __NR_io_submit 230 -#define __NR_io_cancel 231 -#define __NR_set_tid_address 232 -#define __NR_fadvise64 233 -#define __NR_exit_group 234 -#define __NR_lookup_dcookie 235 -#define __NR_epoll_create 236 -#define __NR_epoll_ctl 237 -#define __NR_epoll_wait 238 -#define __NR_remap_file_pages 239 -#define __NR_timer_create 240 -#define __NR_timer_settime 241 -#define __NR_timer_gettime 242 -#define __NR_timer_getoverrun 243 -#define __NR_timer_delete 244 -#define __NR_clock_settime 245 -#define __NR_clock_gettime 246 -#define __NR_clock_getres 247 -#define __NR_clock_nanosleep 248 -#define __NR_swapcontext 249 -#define __NR_tgkill 250 -#define __NR_utimes 251 -#define __NR_statfs64 252 -#define __NR_fstatfs64 253 -#define __NR_fadvise64_64 254 -#define __NR_rtas 255 -#define __NR_sys_debug_setcontext 256 -/* Number 257 is reserved for vserver */ -#define __NR_migrate_pages 258 -#define __NR_mbind 259 -#define __NR_get_mempolicy 260 -#define __NR_set_mempolicy 261 -#define __NR_mq_open 262 -#define __NR_mq_unlink 263 -#define __NR_mq_timedsend 264 -#define __NR_mq_timedreceive 265 -#define __NR_mq_notify 266 -#define __NR_mq_getsetattr 267 -#define __NR_kexec_load 268 -#define __NR_add_key 269 -#define __NR_request_key 270 -#define __NR_keyctl 271 -#define __NR_waitid 272 -#define __NR_ioprio_set 273 -#define __NR_ioprio_get 274 -#define __NR_inotify_init 275 -#define __NR_inotify_add_watch 276 -#define __NR_inotify_rm_watch 277 -#define __NR_spu_run 278 -#define __NR_spu_create 279 -#define __NR_pselect6 280 -#define __NR_ppoll 281 -#define __NR_unshare 282 -#define __NR_splice 283 -#define __NR_tee 284 -#define __NR_vmsplice 285 -#define __NR_openat 286 -#define __NR_mkdirat 287 -#define __NR_mknodat 288 -#define __NR_fchownat 289 -#define __NR_futimesat 290 -#define __NR_fstatat64 291 -#define __NR_unlinkat 292 -#define __NR_renameat 293 -#define __NR_linkat 294 -#define __NR_symlinkat 295 -#define __NR_readlinkat 296 -#define __NR_fchmodat 297 -#define __NR_faccessat 298 -#define __NR_get_robust_list 299 -#define __NR_set_robust_list 300 -#define __NR_move_pages 301 -#define __NR_getcpu 302 -#define __NR_epoll_pwait 303 -#define __NR_utimensat 304 -#define __NR_signalfd 305 -#define __NR_timerfd_create 306 -#define __NR_eventfd 307 -#define __NR_sync_file_range2 308 -#define __NR_fallocate 309 -#define __NR_subpage_prot 310 -#define __NR_timerfd_settime 311 -#define __NR_timerfd_gettime 312 -#define __NR_signalfd4 313 -#define __NR_eventfd2 314 -#define __NR_epoll_create1 315 -#define __NR_dup3 316 -#define __NR_pipe2 317 -#define __NR_inotify_init1 318 - - -#endif /* _ASM_POWERPC_UNISTD_H_ */ From 0b9df83c99cf900cbb5bceae6d683b1b33b9b724 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sun, 7 Nov 2021 17:42:16 -0600 Subject: [PATCH 036/505] Remove memory emulation (#1146) This was disabled by 89919d982 in 2012. Co-authored-by: Tim Haines --- cmake/cap_arch_def.cmake | 1 - dyninstAPI/CMakeLists.txt | 3 - dyninstAPI/src/BPatch_process.C | 6 - dyninstAPI/src/MemoryEmulator/memEmulator.C | 544 ------------ dyninstAPI/src/MemoryEmulator/memEmulator.h | 116 --- .../src/MemoryEmulator/memEmulatorStub.h | 60 -- .../MemoryEmulator/memEmulatorTransformer.C | 214 ----- .../MemoryEmulator/memEmulatorTransformer.h | 87 -- .../src/MemoryEmulator/memEmulatorWidget.C | 800 ------------------ .../src/MemoryEmulator/memEmulatorWidget.h | 185 ---- .../Relocation/Transformers/Movement-adhoc.h | 2 +- .../Transformers/Movement-analysis.h | 2 +- .../src/Relocation/Widgets/CFWidget-aarch64.C | 13 - .../src/Relocation/Widgets/CFWidget-ppc.C | 15 - .../src/Relocation/Widgets/CFWidget-x86.C | 114 --- dyninstAPI/src/Relocation/Widgets/CFWidget.C | 15 +- dyninstAPI/src/Relocation/Widgets/CFWidget.h | 6 - dyninstAPI/src/addressSpace.C | 64 -- dyninstAPI/src/addressSpace.h | 14 - dyninstAPI/src/dynProcess.C | 7 - dyninstAPI/src/function.C | 1 - dyninstAPI/src/hybridCallbacks.C | 8 - dyninstAPI/src/hybridInstrumentation.C | 81 +- dyninstAPI/src/hybridOverwrites.C | 4 - dyninstAPI/src/mapped_object.C | 43 - dyninstAPI/src/pcEventHandler.C | 11 - dyninstAPI/src/pdwinnt.C | 24 - dyninstAPI_RT/CMakeLists.txt | 1 - dyninstAPI_RT/h/dyninstAPI_RT.h | 2 - dyninstAPI_RT/src/RTcommon.c | 2 - dyninstAPI_RT/src/RTmemEmulator.c | 170 ---- parseAPI/src/StackTamperVisitor.h | 2 +- 32 files changed, 6 insertions(+), 2611 deletions(-) delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulator.C delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulator.h delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulatorStub.h delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.C delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.h delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulatorWidget.C delete mode 100644 dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h delete mode 100644 dyninstAPI_RT/src/RTmemEmulator.c diff --git a/cmake/cap_arch_def.cmake b/cmake/cap_arch_def.cmake index 5778d0a0a2..91fa984f55 100644 --- a/cmake/cap_arch_def.cmake +++ b/cmake/cap_arch_def.cmake @@ -76,7 +76,6 @@ set (BUG_DEFINES -Dbug_freebsd_missing_sigstop elseif (PLATFORM STREQUAL i386-unknown-nt4.0) set (OS_DEFINES -Dos_windows) set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_mem_emulation -Dcap_mutatee_traps ) endif (PLATFORM MATCHES linux) diff --git a/dyninstAPI/CMakeLists.txt b/dyninstAPI/CMakeLists.txt index 1b89f71d8b..518e6aacc9 100644 --- a/dyninstAPI/CMakeLists.txt +++ b/dyninstAPI/CMakeLists.txt @@ -177,9 +177,6 @@ elseif(PLATFORM MATCHES windows OR PLATFORM MATCHES nt) src/inst-winnt.C src/pdwinnt.C src/syscall-nt.C - src/MemoryEmulator/memEmulator.C - src/MemoryEmulator/memEmulatorTransformer.C - src/MemoryEmulator/memEmulatorWidget.C src/Relocation/DynAddrSpace.C src/Relocation/DynCFGMaker.C src/Relocation/DynInstrumenter.C diff --git a/dyninstAPI/src/BPatch_process.C b/dyninstAPI/src/BPatch_process.C index b331fc65a5..2085a51984 100644 --- a/dyninstAPI/src/BPatch_process.C +++ b/dyninstAPI/src/BPatch_process.C @@ -57,7 +57,6 @@ #include "parseAPI/h/CFG.h" #include "ast.h" #include "debug.h" -#include "MemoryEmulator/memEmulator.h" #include #include "PatchMgr.h" @@ -1453,11 +1452,6 @@ unsigned char * BPatch_process::makeShadowPage(Dyninst::Address pageAddr) pageAddr = (pageAddr / pagesize) * pagesize; Address shadowAddr = pageAddr; - if (llproc->isMemoryEmulated()) { - bool valid = false; - boost::tie(valid, shadowAddr) = llproc->getMemEm()->translate(pageAddr); - assert(valid); - } unsigned char* buf = (unsigned char*) ::malloc(pagesize); llproc->readDataSpace((void*)shadowAddr, pagesize, buf, true); diff --git a/dyninstAPI/src/MemoryEmulator/memEmulator.C b/dyninstAPI/src/MemoryEmulator/memEmulator.C deleted file mode 100644 index 15ddfd9440..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulator.C +++ /dev/null @@ -1,544 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "parseAPI/h/CodeObject.h" -#include "dyninstAPI/src/addressSpace.h" -#include "memEmulator.h" -#include "dyninstAPI/src/mapped_object.h" -#include "dyninstAPI/src/image.h" -#include "symtabAPI/h/Symtab.h" -#include "symtabAPI/h/Region.h" -#include "dyninstAPI/src/dynProcess.h" -#include "dyninstAPI/src/function.h" -#include "dyninstAPI/src/debug.h" - -using namespace Dyninst; -using namespace SymtabAPI; - -bool MemoryEmulator::findMutateeTable() { - if (mutateeBase_ != 0) return true; - - std::vector memoryMapperTable; - if (!aS_->findVarsByAll("RTmemoryMapper", memoryMapperTable)) { - return false; - } - - if (memoryMapperTable.size() > 1) { - // ??? - return false; - } - mutateeBase_ = memoryMapperTable[0]->getAddress(); - return true; -} - -void MemoryEmulator::update() { - if (!findMutateeTable()) return; - - // 1) Create shadow copies for any MappedObject we - // have modified. - // 2) Update the runtime's MemoryMapper structure - // to correspond to this. - - // First step: nonblocking synchro. - int guardValue; - aS_->readDataSpace((void *)mutateeBase_, - sizeof(int), - &guardValue, - false); - guardValue++; - aS_->writeDataSpace((void *)mutateeBase_, - sizeof(int), - &guardValue); - - sensitivity_cerr << "UpdateMemEmulator: writing guard value " << guardValue << endl; - // 64->32 bit is annoying... - if (addrWidth() == 4) { - struct MemoryMapper32 newMapper; - - aS_->readDataSpace((void *)mutateeBase_, - sizeof(newMapper), - &newMapper, - false); - - // First step: - newMapper.guard1 = guardValue; - newMapper.guard2 = guardValue; - newMapper.size = memoryMap_.size(); - sensitivity_cerr << "\t new values: " << newMapper.guard1 << "/" << newMapper.guard2 << "/" << newMapper.size << endl; - std::vector elements; - memoryMap_.elements(elements); - for (unsigned i = 0; i < elements.size(); ++i) { - Address base = elements[i].first.first; - - newMapper.elements[i].lo = base; - newMapper.elements[i].hi = elements[i].first.second; - assert(newMapper.elements[i].hi > newMapper.elements[i].lo); - newMapper.elements[i].shift = elements[i].second; - } - aS_->writeDataSpace((void *)mutateeBase_, - sizeof(newMapper), - &newMapper); - - } - else { - // TODO copy - //assert(0); - } -} - -void MemoryEmulator::addAllocatedRegion(Address start, unsigned size) { - addRegion(start, size, -1); -} - -void MemoryEmulator::addRegion(mapped_object *obj) { - if (aS_->runtime_lib.find(obj) != aS_->runtime_lib.end()) - { - // Runtime library, skip - return; - } - // Add each code region - std::vector codeRegions; - obj->parse_img()->getObject()->getCodeRegions(codeRegions); - - for (unsigned i = 0; i < codeRegions.size(); ++i) { - Region *reg = codeRegions[i]; - - addRegion(reg, obj->codeBase(), 0, 0); - } -} - -void MemoryEmulator::removeRegion(mapped_object *obj) { - sensitivity_cerr << "Removing region " << obj->fileName() << endl; - sensitivity_cerr << "\t Before: " << endl; - debug(); - // Remove each code region - std::vector codeRegions; - obj->parse_img()->getObject()->getCodeRegions(codeRegions); - - for (unsigned i = 0; i < codeRegions.size(); ++i) { - Region *reg = codeRegions[i]; - - removeRegion(reg, obj->codeBase()); - } - sensitivity_cerr << "\t After: " << endl; - debug(); -} - -void MemoryEmulator::addRegion(Region *reg, Address base, Address, Address) { - - if (addedRegions_.find(reg) != addedRegions_.end()) return; - - PCProcess *proc = dynamic_cast(aS_); - char *buffer = (char *)malloc(reg->getMemSize()); - if (proc) { - if (!proc->readDataSpace((void*)(base + reg->getMemOffset()), - reg->getMemSize(), buffer, false)) { - assert(0); - } - } else { - memset(buffer, 0, reg->getMemSize()); - memcpy(buffer, reg->getPtrToRawData(), reg->getDiskSize()); - } - - unsigned long allocSize = reg->getMemSize(); - allocSize += 0x1000; - - Address mutateeBase = aS_->inferiorMalloc(allocSize); - assert(mutateeBase); - - // "Upcast" it to align with a page boundary - Kevin's request - if (proc) { - mutateeBase += proc->getMemoryPageSize(); - mutateeBase -= mutateeBase % proc->getMemoryPageSize(); - } - - aS_->writeDataSpace((void *)mutateeBase, - reg->getMemSize(), - (void *)buffer); - if (aS_->proc() && BPatch_defensiveMode == aS_->proc()->getHybridMode()) { - using namespace SymtabAPI; - PCProcess::PCMemPerm memPerm_; - Region::perm_t reg_rights = reg->getRegionPermissions(); - switch (reg_rights) { - case Region::RP_R: - memPerm_.setR(); // PAGE_READONLY; - break; - case Region::RP_RW: - memPerm_.setR().setW(); // PAGE_READWRITE; - break; - case Region::RP_RX: - memPerm_.setR().setX(); // PAGE_EXECUTE_READ; - break; - case Region::RP_RWX: - memPerm_.setR().setW().setX(); // PAGE_EXECUTE_READWRITE; - break; - default: - assert(0); - } - - PCProcess *proc = aS_->proc(); - assert(proc); - proc->stopProcess(); - proc->changeMemoryProtections(mutateeBase, reg->getMemSize(), memPerm_, false); - } - - Address regionBase = base + reg->getMemOffset(); - - addRegion(regionBase, - reg->getMemSize(), - mutateeBase - regionBase); - - - addedRegions_[reg] = std::make_pair(base + reg->getMemOffset(), mutateeBase); - free(buffer); -} - -void MemoryEmulator::removeRegion(Region *reg, Address base) { - - //cerr << "\t\t Region " << i << ": " << hex - //<< codeRegions[i]->getMemOffset() + obj->codeBase() << " -> " - //<< codeRegions[i]->getMemOffset() + codeRegions[i]->getMemSize() + obj->codeBase() << endl; - - RegionMap::iterator iter = addedRegions_.find(reg); - if (iter == addedRegions_.end()) return; - - // First, nuke our track of the springboards - springboards_.erase(reg); - - // Second, nuke it from the list of regions to copy on a sync - addedRegions_.erase(reg); - - // Deallocate the shadow pages in the mutatee - // -- this is TODO; we mangle the allocation base and therefore can't - // really call inferiorfree on it. - - // Remove the region from the translation map - removeRegion(base + reg->getMemOffset(), reg->getMemSize()); -} - -void MemoryEmulator::addRegion(Address start, unsigned size, Address shift) { - if (size == 0) return; - //debug(); - //cerr << endl; - Address end = start + size; - assert(end > start); - - // Okay. For efficiency, we want to merge this if possible with an existing - // range. We do this because our allocation tends to be contiguous. - // Two options: we're immediately above an existing range or we're immediately - // below. Check both. - - - Address lb, ub; - unsigned long val; - if (memoryMap_.find(start, lb, ub, val)) { - // This is possibly very bad. - if (start != ub) { - if ((start == lb) && - (end == ub) && - (val == shift)) { - return; - } - // Yeah, data inconsistency == bad - assert(0); - } - if (val == shift) { - // Accumulate - memoryMap_.remove(lb); - memoryMap_.insert(lb, end, shift); - return; - } - else { - memoryMap_.insert(start, end, shift); - } - } - else if (memoryMap_.find(end, lb, ub, val)) { - // See the above - if (end != ub) { - fprintf(stderr, "ERROR: adding range 0x%lx -> 0x%lx (0x%lx), found range 0x%lx -> 0x%lx (0x%lx)\n", - start, end, shift, lb, ub, val); - - assert(0); - } - if (val == shift) { - memoryMap_.remove(lb); - memoryMap_.insert(start, ub, shift); - } - else { - memoryMap_.insert(start, end, shift); - } - } - else { - memoryMap_.insert(start, end, shift); - } - - if (shift != (unsigned long) -1) { - reverseMemoryMap_.insert(start + shift, end + shift, shift); - } - //debug(); - return; -} - -void MemoryEmulator::removeRegion(Address addr, unsigned size) { - Address lb = 0, ub = 0; - unsigned long shiftVal; - - cerr << "MemoryEmulator: removing region " << hex << addr << " : " << size << dec << endl; - - //debug(); - //cerr << endl; - - Address lowLB = 0, lowUB = 0, hiLB = 0, hiUB = 0; - - // We are guaranteed to be either our own allocated range or - // coalesced with another range. - if (!memoryMap_.find(addr, lb, ub, shiftVal)) { - return; - } - - if ((lb != 0) && (lb < addr)) { - lowLB = lb; - lowUB = addr; - } - if ((ub != 0) && (ub > (addr + size))) { - hiLB = (addr + size); - hiUB = ub; - } - memoryMap_.remove(lb); - if (lowLB || lowUB) { - memoryMap_.insert(lowLB, lowUB, shiftVal); - } - if (hiLB || hiUB) { - memoryMap_.insert(hiLB, hiUB, shiftVal); - } - - reverseMemoryMap_.remove(addr + shiftVal); - //debug(); -} - -unsigned MemoryEmulator::addrWidth() { - return aS_->getAddressWidth(); -} - -std::pair MemoryEmulator::translate(Address orig) { - // Mimic the translation performed in the RT library - Address lb, ub; - unsigned long val; - if (!memoryMap_.find(orig, lb, ub, val)) { - return std::make_pair(false, 0); - } - if (val == (unsigned long) -1) { - return std::make_pair(true, orig); - } - return std::make_pair(true, orig + val); -} - -std::pair MemoryEmulator::translateBackwards(Address addr) { - // Mimic the translation performed in the RT library - Address lb, ub; - unsigned long val; - if (!reverseMemoryMap_.find(addr, lb, ub, val)) { - return std::make_pair(false, 0); - } - if (val == (unsigned long) -1) { - return std::make_pair(true, addr); - } - return std::make_pair(true, addr - val); -} - -void MemoryEmulator::synchShadowOrig(bool toOrig) -{ - - if (toOrig) { - malware_cerr << "Syncing shadow to orig" << endl; - } - else { - malware_cerr << "Syncing orig to shadow" << endl; - } - - using namespace SymtabAPI; - - for (RegionMap::iterator iter = addedRegions_.begin(); - iter != addedRegions_.end(); ++iter) { - Region * reg = iter->first; - - // We copy "source" (where we're copying from) and "target" (where we're - // copying to). We then select snippets of target (where springboards reside) - // and copy them into source, and then write source into target. - - unsigned char *source = (unsigned char*) malloc(reg->getMemSize()); - unsigned char *target = (unsigned char *) malloc(reg->getMemSize()); - - Address from = 0; - Address to = 0; - if (toOrig) { - from = iter->second.second; - to = iter->second.first; - } else { - from = iter->second.first; - to = iter->second.second; - } - - if (!aS_->readDataSpace((void *)from, - reg->getMemSize(), - source, - false)) - { - assert(0); - } - if (!aS_->readDataSpace((void *)to, - reg->getMemSize(), - target, - false)) - { - assert(0); - } - - std::map::const_iterator sit = springboards_[reg].begin(); - for (; sit != springboards_[reg].end(); sit++) { - - Address fromLB = (Address) target + sit->first; - Address toLB = (Address) source + sit->first; - memcpy((void *)toLB, (void *)fromLB, sit->second); - } - - if (!aS_->writeDataSpace((void *)to, - reg->getMemSize(), - source)) - { - assert(0); - } - free(source); - free(target); - - } - -} - - -void MemoryEmulator::addSpringboard(Region *reg, Address offset, int size) -{ - // Look up whether there is a previous springboard that overlaps with us; - // clearly, it's getting removed. - - std::map >::iterator s_iter = springboards_.find(reg); - if (s_iter == springboards_.end()) { - springboards_[reg][offset] = size; - return; - } - std::map &smap = s_iter->second; - - springboard_cerr << "Inserting SB [" << hex << offset << "," << offset + size << "]" << dec << endl; - - std::map::iterator iter = smap.find(offset); - if (iter == smap.end()) { - smap[offset] = size; - } - else if (size > iter->second) { - smap[offset] = size; - } - // Otherwise keep the current value - springboard_cerr << "\t New value: " << hex << offset << " -> " << smap[offset] + offset << dec << endl; -} - -void MemoryEmulator::removeSpringboards(func_instance * func) -{ - malware_cerr << "untracking springboards from deadfunc " << hex << func->addr() << dec << endl; - - const PatchFunction::Blockset & blocks = func->blocks(); - PatchFunction::Blockset::const_iterator bit = blocks.begin(); - for (; bit != blocks.end(); bit++) { - removeSpringboards(SCAST_BI(*bit)); - } -} - -void MemoryEmulator::removeSpringboards(const block_instance *bbi) -{ - malware_cerr << " untracking springboards from deadblock [" << hex - << bbi->start() << " " << bbi->end() << ")" << dec <llb()->region())->symRegion(); - springboards_[reg].erase(bbi->llb()->start() - reg->getMemOffset()); - if (springboards_[reg].empty()) springboards_.erase(reg); -} - -void MemoryEmulator::debug() const { - if (!dyn_debug_sensitivity) { - return; - } - std::vector elements; - memoryMap_.elements(elements); - cerr << "\t Forward map: " << endl; - for (std::vector::iterator iter = elements.begin(); iter != elements.end(); ++iter) - { - cerr << "\t\t " << hex << "[" << iter->first.first << "," << iter->first.second << "]: " << iter->second << dec << endl; -#if 0 // debug output - if (iter->first.first == 0x40d000) { - Address val; - Address addr = (iter->second + 0x40d84b); - assert(sizeof(Address) == aS_->getAddressWidth()); - Address width = aS_->getAddressWidth(); - for (Address idx=0; idx < 0x40; idx+=width) { - aS_->readDataSpace((void*)(addr+idx), width, &val, true); - cerr << hex << " " << 0x40d84b + idx << "[" << addr+idx << "]: "; - fprintf(stderr,"%2x",((unsigned char*)&val)[3]); - fprintf(stderr,"%2x",((unsigned char*)&val)[2]); - fprintf(stderr,"%2x",((unsigned char*)&val)[1]); - fprintf(stderr,"%2x\n",((unsigned char*)&val)[0]); - } - } -#endif - } - elements.clear(); - cerr << "\t Backwards map: " << endl; - reverseMemoryMap_.elements(elements); - for (std::vector::iterator iter = elements.begin(); iter != elements.end(); ++iter) - { - cerr << "\t\t " << hex << "[" << iter->first.first << "," << iter->first.second << "]: " << iter->second << dec << endl; - } - elements.clear(); - -} - -void MemoryEmulator::addPOPAD(Address addr) -{ - emulatedPOPADs_.insert(addr); -} - -bool MemoryEmulator::isEmulPOPAD(Address addr) -{ - Address orig = -1; - std::vector dontcare1; - baseTramp *dontcare2; - if (!aS_->getAddrInfo(addr, orig, dontcare1, dontcare2)) { - assert(0); - } - return emulatedPOPADs_.end() != emulatedPOPADs_.find(orig); -} diff --git a/dyninstAPI/src/MemoryEmulator/memEmulator.h b/dyninstAPI/src/MemoryEmulator/memEmulator.h deleted file mode 100644 index 422c9162ff..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulator.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#if !defined(cap_mem_emulation) -#include "memEmulatorStub.h" -#else - - - -#if !defined(_MEMORY_EMULATOR_H_) -#define _MEMORY_EMULATOR_H_ - -#include "common/src/IntervalTree.h" -#include "dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.h" -#include "dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h" - -class AddressSpace; -class mapped_object; -class int_variable; - -namespace Dyninst { - namespace SymtabAPI { - class Region; - }; - -class MemoryEmulator { - public: - MemoryEmulator(AddressSpace *addrSpace) - : aS_(addrSpace), mutateeBase_(0) {}; - ~MemoryEmulator() {}; - - void addAllocatedRegion(Address start, unsigned size); - void addRegion(mapped_object *obj); - void addRegion(SymtabAPI::Region *reg, Address base, Address bufferStart, Address bufferEnd); - void update(); - - void removeRegion(mapped_object *obj); - void removeRegion(SymtabAPI::Region *reg, Address base); - void removeRegion(Address start, unsigned size); - - void reprocess(mapped_object *obj); - - std::pair translate(Address addr); - std::pair translateBackwards(Address addr); - - const std::map & getSpringboards(SymtabAPI::Region*) const; - void removeSpringboards(func_instance* deadfunc); - void removeSpringboards(const block_instance* deadBBI); - void addSpringboard(SymtabAPI::Region*, - Address offset,/*from start of region*/ - int size); - void synchShadowOrig(bool toOrig); - - void addPOPAD(Address addr); - bool isEmulPOPAD(Address addr); - - static const int STACK_SHIFT_VAL=256; - - void debug() const; - - private: - void addRegion(Address start, unsigned size, Address newBase); - - - bool findMutateeTable(); - unsigned addrWidth(); - - AddressSpace *aS_; - - // Track what the address space looks like for defensive mode. - typedef IntervalTree MemoryMapTree; - MemoryMapTree memoryMap_; - MemoryMapTree reverseMemoryMap_; - - Address mutateeBase_; - - std::map > springboards_; - - // First address: original base in memory. Second address: shadow base. - typedef std::map > RegionMap; - RegionMap addedRegions_; - - std::map saved; - std::set
emulatedPOPADs_; -}; -}; - -#endif -#endif diff --git a/dyninstAPI/src/MemoryEmulator/memEmulatorStub.h b/dyninstAPI/src/MemoryEmulator/memEmulatorStub.h deleted file mode 100644 index 242dc03c6d..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulatorStub.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#if !defined(MEM_EMULATOR_STUB) -#define MEM_EMULATOR_STUB - -#if defined(cap_mem_emulation) -#error -#endif - -class mapped_object; - -namespace Dyninst { -class MemoryEmulator { - public: - MemoryEmulator(AddressSpace *) {} - void addSpringboard(SymtabAPI::Region *, Address, int) {} - void removeSpringboards(func_instance*) {} - void removeSpringboards(const block_instance*) {} - void addAllocatedRegion(Address, unsigned) {} - void addRegion(mapped_object *) {} - void removeRegion(Address, unsigned) {} - void removeRegion(mapped_object *) {} - void update() {} - void synchShadowOrig(bool) {} - std::pair translate(Address) { return std::make_pair(false, 0); } - std::pair translateBackwards(Address) { return std::make_pair(false, 0); } - static const int STACK_SHIFT_VAL = 0; - void debug() {} - -}; -} - -#endif diff --git a/dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.C b/dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.C deleted file mode 100644 index ef056dcdbc..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.C +++ /dev/null @@ -1,214 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - -#include "dyninstAPI/src/Relocation/Transformers/Transformer.h" -#include "memEmulatorTransformer.h" -#include "dyninstAPI/src/debug.h" -#include "dyninstAPI/src/Relocation/Widgets/Widget.h" -#include "dyninstAPI/src/Relocation/Widgets/InsnWidget.h" -#include "memEmulatorWidget.h" -#include "dyninstAPI/src/instPoint.h" // Memory insn modelling requirement. -#include "dyninstAPI/src/mapped_object.h" -#include "dyninstAPI/h/BPatch_enums.h" -#include -#include "dyninstAPI/src/Relocation/CFG/RelocBlock.h" - -using namespace std; -using namespace Dyninst; -using namespace Relocation; -using namespace InstructionAPI; - - -// Replace all memory accesses to a non-statically-determinable -// location with an emulation sequence -bool MemEmulatorTransformer::process(RelocBlock *rblock, RelocGraph *rgraph) -{ - if (!(rblock->block())) return true; - - // AssignmentConverter is written in terms of parse_func, - // so translate - func_instance *func = rblock->func(); - - WidgetList &elements = rblock->elements(); - - for (WidgetList::iterator e_iter = elements.begin(); - e_iter != elements.end(); ++e_iter) { - // If we're not an instruction then skip... - InsnWidget::Ptr reloc = boost::dynamic_pointer_cast(*e_iter); - if (!reloc) continue; - - relocation_cerr << "Memory emulation considering addr " << hex << reloc->addr() << dec << endl; - - if (BPatch_defensiveMode != func->obj()->hybridMode() || !isSensitive(reloc, func, rblock->block())) { - relocation_cerr << "\t Not sensitive, skipping" << endl; - continue; - } - - if (!canRewriteMemInsn(reloc, func)) { - malware_cerr << "\tUnable to rewrite memory access at "<< hex << reloc->addr() <<": " << reloc->format() << dec << endl; - continue; - } - - Widget::Ptr replacement = createReplacement(reloc, func, rblock->block()); - if (!replacement) return false; - - (*e_iter).swap(replacement); - } - return true; -} - -bool MemEmulatorTransformer::canRewriteMemInsn(InsnWidget::Ptr reloc, - func_instance *func) { - // Let's see if this is an instruction we can rewrite; - // otherwise complain but let it through (for testing purposes) - if (override(reloc)) - return true; - - codeGen tmpGen(1024); - tmpGen.setAddrSpace(func->proc()); // needed by insn::generateMem - - instruction ugly_insn(reloc->insn()->ptr()); - if (!insnCodeGen::generateMem(tmpGen, - ugly_insn, - 0, - 0, - 0, - Null_Register)) { - return false; - } - return true; -} - -bool MemEmulatorTransformer::override(InsnWidget::Ptr reloc) { - unsigned char *buf = (unsigned char *)reloc->insn()->ptr(); - if ((unsigned char) 0xa0 <= buf[0] && - buf[0] <= (unsigned char) 0xa3) { - // Read/write with addr specified in an operand - return true; - } - const InstructionAPI::Instruction::Ptr &insn = reloc->insn(); - - const InstructionAPI::Operation &op = insn->getOperation(); - - switch(op.getID()) { - case e_scasb: - case e_scasd: - case e_scasw: - case e_lodsb: - case e_lodsd: - case e_lodsw: - case e_movsb: - case e_movsd: - case e_movsw: - case e_stosb: - case e_stosd: - case e_stosw: - case e_cmpsb: - case e_cmpsd: - case e_cmpsw: - case e_insb: - case e_insd: - case e_insw: - case e_outsb: - case e_outsd: - case e_outsw: - case e_popad: - return true; - default: - break; - } - return false; -} - -Widget::Ptr MemEmulatorTransformer::createReplacement(InsnWidget::Ptr reloc, - func_instance *func, - block_instance *block) { - // MemEmulators want instPoints. How unreasonable. - instPoint *point = instPoint::preInsn(func, block, reloc->addr(), reloc->insn(), true); - if (!point) return Widget::Ptr(); - - // Replace this instruction with a MemEmulator - Widget::Ptr memE = MemEmulator::create(reloc->insn(), - reloc->addr(), - point); - - return memE; -} - -bool MemEmulatorTransformer::isSensitive(InsnWidget::Ptr reloc, - func_instance *func, - block_instance *block) { - - parse_func *ifunc = func->ifunc(); - Address image_addr = func->addrToOffset(reloc->addr()); - - std::vector assignments; - aConverter.convert(reloc->insn(), - image_addr, - ifunc, - block->llb(), - assignments); - - for (std::vector::const_iterator a_iter = assignments.begin(); - a_iter != assignments.end(); ++a_iter) { - - const std::vector &ins = (*a_iter)->inputs(); - for (std::vector::const_iterator i = ins.begin(); - i != ins.end(); ++i) { - //relocation_cerr << "\t\t Input: " << i->format() << endl; - if (i->contains(Absloc::Heap)) { - return true; - } - if (i->absloc().type() == Absloc::Heap) { - return true; - } - } - // Writes too - //relocation_cerr << "\t\t Output: " << (*a_iter)->out().format() << endl; - if ((*a_iter)->out().contains(Absloc::Heap)) { - return true; - } - if ((*a_iter)->out().absloc().type() == Absloc::Heap) { - return true; - } - } - - return false; -} - -#if 0 -void MemEmulatorTransformer::createTranslator(Register r) { - Widget::Ptr translator = MemEmulatorTranslator::create(r); - RelocBlock::Ptr newRelocBlock = RelocBlock::create(translator); - translators_[r] = newRelocBlock; -}; -#endif diff --git a/dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.h b/dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.h deleted file mode 100644 index 1e65f8ee94..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#if !defined(cap_mem_emulation) -#error -#endif - -#if !defined(_R_T_EMULATE_MEMORY_H_) -#define _R_T_EMULATE_MEMORY_H_ - -#include "dyninstAPI/src/Relocation/Transformers/Transformer.h" -#include "dyninstAPI/src/Relocation/Transformers/Modification.h" -#include "dataflowAPI/h/Absloc.h" // MemEmulator analysis -#include "dataflowAPI/h/AbslocInterface.h" // And more of the same - -class func_instance; - -namespace Dyninst { -namespace Relocation { - -class InsnWidget; - -class MemEmulatorTransformer : public Transformer { - typedef boost::shared_ptr InsnWidgetPtr; - - public: - typedef std::map TranslatorMap; - - virtual bool process(RelocBlock *, RelocGraph *); - - MemEmulatorTransformer() : - aConverter(false, false) {}; - - virtual ~MemEmulatorTransformer() {}; - - private: - - WidgetPtr createReplacement(InsnWidgetPtr reloc, - func_instance *func, block_instance *); - - bool canRewriteMemInsn(InsnWidgetPtr reloc, - func_instance *func); - - bool isSensitive(InsnWidgetPtr reloc, - func_instance *func, - block_instance *block); - - void createTranslator(Register r); - - bool override(InsnWidgetPtr reloc); - - TranslatorMap translators_; - - AssignmentConverter aConverter; - -}; -}; -}; - -#endif diff --git a/dyninstAPI/src/MemoryEmulator/memEmulatorWidget.C b/dyninstAPI/src/MemoryEmulator/memEmulatorWidget.C deleted file mode 100644 index ab0173a561..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulatorWidget.C +++ /dev/null @@ -1,800 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dyninstAPI/src/Relocation/Widgets/Widget.h" -#include "dyninstAPI/src/Relocation/CFG/RelocTarget.h" -#include "dyninstAPI/src/Relocation/Widgets/CFWidget.h" // CFPatch - -// For our horribly horked memory effective address system -// Which I'm not fixing here. -#include "dyninstAPI/h/BPatch_memoryAccess_NP.h" -#include "dyninstAPI/h/BPatch_addressSpace.h" // bpatch_address... you get the picture -#include "dyninstAPI/h/BPatch_point.h" -// Memory hackitude -#include "dyninstAPI/src/emit-x86.h" -#include "dyninstAPI/src/inst-x86.h" - -#include "instructionAPI/h/Instruction.h" -#include "dyninstAPI/src/addressSpace.h" -#include "dyninstAPI/src/debug.h" -#include "dyninstAPI/src/registerSpace.h" -#include "dyninstAPI/src/mapped_object.h" -#include "dyninstAPI/src/Relocation/CodeBuffer.h" -#include "common/src/arch-x86.h" - -#include "memEmulatorWidget.h" - -#include "dyninstAPI/src/RegisterConversion.h" - -#include "boost/tuple/tuple.hpp" -#include "memEmulator.h" - - -using namespace Dyninst; -using namespace Relocation; -using namespace InstructionAPI; - - -MemEmulator::Ptr MemEmulator::create(Instruction::Ptr insn, - Address addr, - instPoint *point) { - MemEmulator::Ptr ptr = MemEmulator::Ptr(new MemEmulator(insn, addr, point)); - return ptr; -} - -const int ESI_SHIFT_REG = REGNUM_EBP; -const int EDI_SHIFT_REG = REGNUM_EBX; - -bool MemEmulator::initialize(const codeGen &templ, const RelocBlock *t) { - // Number chosen arbitrarily - scratch.allocate(128); - scratch.applyTemplate(templ); - - block = t->block(); - - effAddr = Null_Register; - stackOffset = 0; - effAddrSaveOffset = 0; - usesESI = false; - usesEDI = false; - debug = false; - - return true; -} - -/* Block comment ho! - * - * - * We're trying to "emulate" the memory operation. That is, we want to redirect it - * to (or from) a shadow of original memory. In general, this is simple, using the following - * code fragment: - * - * -- EAX if it isn't read by the instruction; else ECX; else EDX. - * -- so we don't stomp on any data the program stores under the stack. - * -- eax, ecx, edx; we save all three since we don't trust liveness. - * -- see the above comment - * -- LEA so we don't harm registers - * -- EAX, and debugging arguments - * -- leaves new pointer in EAX - * - * - * - * - * - * -- via a mov instruction - * - * Now, that's the overview. But this is x86, and things get tricky. We handle the following special cases: - * 1) Push/pop - * 2) Write to (ESP) - * 3) a1-a3 implicit use of EAX - * 4) scas/ins/outs/cmps/stos/movs/lods implicit use of ESI/EDI - * - * 1) Push/pop. I believe we can structure the common code to leave ESP untouched at the memory operation time, - * which means this case is trivially solved. However, we need to be sure to restore effAddr from the right place. - * 2) Write to (ESP). See case 1) - * 3) a1-a3 implicit use of EAX. These are of the form mov eax, [mem] or mov [mem], eax; thus, we _skip_ all of - * the above complexity and just statically translate [mem]. - * 4) Implicit use of ESI/EDI (either or both). First, we need to keep two effective address registers, and we - * need to call translate twice (possibly). Second, these operations modify ESI/EDI, and we want to emulate - * that modification as well. So we do the following: - * 1) shiftESI := translate_shift(ESI) - return is the amount that esi needs to be _shifted_ to be translated. - * 2) shiftEDI := translate_shift(EDI) - * 3) ESI += shiftESI - * 4) EDI += shiftEDI - * 5) Emulate instruction - * 6) ESI -= shiftESI (note: we can't use an LEA for this, thus we sub and have to save flags) - * 7) EDI -= shiftEDI (see above) - */ - -bool MemEmulator::generate(const codeGen &templ, - const RelocBlock *t, - CodeBuffer &buffer) -{ - if (!initialize(templ, t)) return false; - - if (generateViaOverride(buffer)) - return true; - if (generateViaModRM(buffer)) - return true; - - cerr << "Error: failed to emulate memory operation @ " << hex << addr() << dec << ", " << insn()->format() << endl; - unsigned char *tmp = (unsigned char *)insn()->ptr(); - cerr << hex << "\t raw: "; - for (unsigned i = 0; i < insn()->size(); ++i) { - cerr << tmp[i]; - } - cerr << dec << endl; - assert(0); - return false; -} - -bool MemEmulator::generateViaOverride(CodeBuffer &buffer) -{ - // Watch for a0/a1/a2/a3 moves - unsigned char *buf = (unsigned char *)insn_->ptr(); - if ((unsigned char) 0xa0 <= buf[0] && - buf[0] <= (unsigned char) 0xa3) { - if (!generateEAXMove(buf[0], buffer)) - assert(0); - return true; - } - - const InstructionAPI::Operation &op = insn_->getOperation(); - switch(op.getID()) { - case e_scasb: - case e_scasd: - case e_scasw: - case e_lodsb: - case e_lodsd: - case e_lodsw: - case e_stosb: - case e_stosd: - case e_stosw: - case e_movsb: - case e_movsd: - case e_movsw: - case e_cmpsb: - case e_cmpsd: - case e_cmpsw: - case e_insb: - case e_insd: - case e_insw: - case e_outsb: - case e_outsd: - case e_outsw: - if (!generateESI_EDI(buffer)) { - assert(0); - } - return true; - break; - case e_popad: - if (!generatePOPAD(buffer)) { - assert(0); - } - return true; - break; - default: - break; - } - return false; -} - -bool MemEmulator::generateEAXMove(unsigned char opcode, - CodeBuffer &buffer) -{ - // mov [offset], eax - // We hates them. - - Address origTarget; - switch(opcode) { - case 0xa0: - case 0xa1: { - // read from memory - std::set reads; - insn_->getMemoryReadOperands(reads); - assert(reads.size() == 1); - Result res = (*(reads.begin()))->eval(); - assert(res.defined); - origTarget = res.convert
(); - break; - } - case 0xa2: - case 0xa3: { - // write - std::set writes; - insn_->getMemoryWriteOperands(writes); - assert(writes.size() == 1); - Result res = (*(writes.begin()))->eval(); - assert(res.defined); - origTarget = res.convert
(); - break; - } - default: - assert(0); - break; - } - // Map it to the new location - bool valid; Address target; - boost::tie(valid, target) = scratch.addrSpace()->getMemEm()->translate(origTarget); - if (!valid) target = origTarget; - //cerr << "Handling mov EAX, [offset]: opcode " << hex << opcode << ", orig dest " << origTarget << " and translated " << target << dec << endl; - // And emit the insn - assert(insn_->size() == 5); - GET_PTR(buf, scratch); - *buf = (char) opcode; buf++; - int *tmp = (int *)buf; - *tmp = target; tmp++; - buf = (codeBuf_t *)tmp; - SET_PTR(buf, scratch); - buffer.addPIC(scratch, tracker()); - return true; -} - -bool MemEmulator::generateViaModRM(CodeBuffer &buffer) { - // We need a BPatch_something to do the memory handling. If that's - // not present, assume we don't need to emulate this piece of - // memory. - if (!scratch.addrSpace()->up_ptr()) { - buffer.addPIC(insn_->ptr(), insn_->size(), tracker()); - assert(0); - return true; - } - - insertDebugMarker(); - - // Choose a register to hold the effective address - if (!generateModRMInitialize()) return false; - insertDebugMarker(); - // Shift the stack, save registers, calculate original effective address - if (!generateTranslatorSetup()) return false; - copyScratchToCodeBuffer(buffer); - - // Make the call to the translation function - if (!generateTranslatorCall(buffer)) return false; - // Teardown the call saves - insertDebugMarker(); - if (!generateTranslatorTeardown()) return false; - insertDebugMarker(); - - copyScratchToCodeBuffer(buffer); - - return true; -} - -void MemEmulator::insertDebugMarker() { - if (debug || (dyn_debug_trap /*&& addr() > 0xab000 && addr() <0xad000*/)) - scratch.fill(1, codeGen::cgTrap); -} - -bool MemEmulator::generateModRMInitialize() { - // Placeholder for good code design... - - return true; -} - -bool MemEmulator::generateTranslatorSetup() { - // Our job: - // Shift the stack down - // Decide who will hold the effective address - // Save caller-save registers - // Calculate the original effective address - // Save flags - - if (!shiftStack()) return false; - if (!determineEffAddr()) return false; - if (!saveRegisters()) return false; - if (!calculateEffAddr()) return false; - if (!saveFlags()) return false; - - return true; -} - -bool MemEmulator::generateTranslatorCall(CodeBuffer &buffer) { - - // This is easy. We don't know where we are, - // so we have to use the patch mechanic, but that's - // not too bad. - // We also set up the arguments in the patch code so that we - // have access to the current address (for debugging purposes) - - Address target = getTranslatorAddr(false); - if (!target) return false; - buffer.addPatch(new MemEmulatorPatch(effAddr, effAddr, addr_, target), tracker()); - return true; -} - -bool MemEmulator::generateTranslatorTeardown() { - // Restore flags - // Restore registers (except effAddr) - // Shift stack back up - // Emulate memory operation - // Restore effAddr - insertDebugMarker(); - if (!restoreFlags()) return false; - insertDebugMarker(); - if (!restoreRegisters()) return false; - insertDebugMarker(); - if (!restoreStack()) return false; - insertDebugMarker(); - if (!emulateOriginalInstruction()) return false; - if (!restoreEffectiveAddr()) return false; - - return true; -} - -bool MemEmulator::shiftStack() { - ::emitLEA(RealRegister(REGNUM_ESP), RealRegister(Null_Register), 0, -1*MemoryEmulator::STACK_SHIFT_VAL, RealRegister(REGNUM_ESP), scratch); - stackOffset -= MemoryEmulator::STACK_SHIFT_VAL; - return true; -} - -bool MemEmulator::determineEffAddr() { - // We want to use whichever register isn't used by the instruction. - // Technically, _written_ by the instruction. As that would be silly. - - // Theory: we can always use either ECX or EDX, as they're getting saved - // anyway. - - // We can use a register if it's only used for a memory operand. We cannot use - // it if it's directly used, either mov [ptr], reg or mov reg, [ptr]. - // Technically, we could do mov reg, [ptr] so long as we don't restore reg. - // I'm not too worried, though. - - static RegisterAST::Ptr ecx = RegisterAST::Ptr(new RegisterAST(x86::ecx)); - static RegisterAST::Ptr edx = RegisterAST::Ptr(new RegisterAST(x86::edx)); - - bool useECX = true; - bool useEDX = true; - std::vector operands; - insn_->getOperands(operands); - for (unsigned i = 0; i < operands.size(); ++i) { - if (operands[i].readsMemory()) continue; - if (operands[i].writesMemory()) continue; - if (operands[i].isRead(ecx) || operands[i].isWritten(ecx)) useECX = false; - if (operands[i].isRead(edx) || operands[i].isWritten(edx)) useEDX = false; - } - - if (useECX) { - effAddr = REGNUM_ECX; - } - if (useEDX) { - effAddr = REGNUM_EDX; - } - - block->obj()->addEmulInsn(addr(),effAddr); - - return (useECX || useEDX); -} - -bool MemEmulator::saveRegisters() { - // Theoretically we could use liveness to determine - // whether to save a register or not. - // We want to save the effAddr register _first_ to make - // our lives easier. - if (effAddr == REGNUM_ECX) { - push(REGNUM_ECX); - effAddrSaveOffset = stackOffset; - push(REGNUM_EDX); - } - else { - push(REGNUM_EDX); - effAddrSaveOffset = stackOffset; - push(REGNUM_ECX); - } - push(REGNUM_EAX); - - return true; -} - - -bool MemEmulator::calculateEffAddr() { - // Luckily, we have code to do this already. - assert(scratch.addrSpace()); - BPatch_addressSpace *bproc = (BPatch_addressSpace *)scratch.addrSpace()->up_ptr(); - assert(bproc); - - assert(point_); - BPatch_point *bpoint = bproc->findOrCreateBPPoint(NULL, point_, BPatch_locInstruction); - if (bpoint == NULL) { - fprintf(stderr, "ERROR: Unable to find BPatch point for internal point %p/0x%lx\n", - point_, addr_); - return false; - } - const BPatch_memoryAccess *ma = bpoint->getMemoryAccess(); - - const BPatch_addrSpec_NP *start = ma->getStartAddr(0); // Guessing on 0, here... - - // Now that we've done all the background work, we can emit an LEA to grab the - // effective address. - // The stackOffset parameter is a magic "if you used ESP, be sure to take into - // account the fact we movled it". - emitASload(start, effAddr, stackOffset, scratch, true); - - return true; -} - -bool MemEmulator::saveFlags() { - // nice thing is, eax is already saved at this point. So our live, it be easy. - emitSimpleInsn(0x9f, scratch); - emitSaveO(scratch); - - push(REGNUM_EAX); - return true; -} - -bool MemEmulator::restoreFlags() { - pop(REGNUM_EAX); - - emitRestoreO(scratch); - emitSimpleInsn(0x9E, scratch); - - return true; -} - -bool MemEmulator::restoreRegisters() { - // Order needs to match that in saveRegisters - // Also, don't restore over effAddr. Yet. - pop(REGNUM_EAX); - if (effAddr == REGNUM_ECX) - pop(REGNUM_EDX); - else - pop(REGNUM_ECX); - return true; -} - -bool MemEmulator::restoreStack() { - // We track stack depth in the stackOffset - // parameter... - ::emitLEA(RealRegister(REGNUM_ESP), RealRegister(Null_Register), 0, -1*stackOffset, RealRegister(REGNUM_ESP), scratch); - stackOffset = 0; - return true; -} - -using namespace NS_x86; - -bool MemEmulator::emulateOriginalInstruction() { - NS_x86::instruction ugly_insn(insn_->ptr()); - - if (!insnCodeGen::generateMem(scratch, - ugly_insn, - 0, // ignored - 0, // ignored - effAddr, - Null_Register)) - return false; - - // Do we mess with the stack pointer? - if (insn_->getOperation().getID() == e_push) { - stackOffset -= 4; - } - if (insn_->getOperation().getID() == e_pop) { - stackOffset += 4; - } - - return true; -} - -bool MemEmulator::restoreEffectiveAddr() { - // We want to pull it out of wherever it is on the stack - // We could LEA esp down, pop, and back up. But really. - // Instead, use a mov. - int restoreOffset = (effAddrSaveOffset - stackOffset); - - ::emitMovRMToReg(RealRegister(effAddr), RealRegister(REGNUM_ESP), restoreOffset, scratch); - return true; -} - -bool MemEmulator::copyScratchToCodeBuffer(CodeBuffer &buffer) { - // Copy it in and re-initialize the scratch buffer to hold more - // goodies. - if (scratch.used() == 0) return true; - - buffer.addPIC(scratch, tracker()); - - scratch.allocate(128); - return true; -} - -TrackerElement *MemEmulator::tracker() const { - EmulatorTracker *e = new EmulatorTracker(addr_, block, point_->func()); - return e; -} - -bool MemEmulator::push(Register reg) { - ::emitPush(RealRegister(reg), scratch); - stackOffset -= 4; - return true; -} - -bool MemEmulator::pop(Register reg) { - ::emitPop(RealRegister(reg), scratch); - stackOffset += 4; - return true; -} - -// wrap whole thing in check that esp is outside of the stack segment? -bool MemEmulator::generatePOPAD(CodeBuffer &buffer) { - point_->func()->proc()->getMemEm()->addPOPAD(addr()); - scratch.fill(1, codeGen::cgTrap); - buffer.addPIC(scratch, tracker()); - return true; -} - -/* Block quote redux! - * - * We need to: - * 1) Determine if we use ESI, EDI, or both; - * 2) Shift the stack - * 3) Retain a register (ECX) for the "shift" involved in translating ESI - * (that is, tESI = ESI + ECX) - * 4) Do the same for EDI/EDX - * 5) Save caller-saved registers - * 6) Save the flags - * 7) If using ESI, ECX := shift(ESI) - * 8) If using ESI, ESI += ECX - * 9) If using EDI, EDX := shift(EDI) - * 10) If using EDI, EDI += EDX - * 11) Restore flags and EAX. The "EAX" is very important. - * 12) Run the instruction - * 13) Save EAX and flags (again) - * 14) If using ESI, ESI -= ECX - * 15) If using EDI, EDI -= EDX - * 16) Restore EAX and flags - * 17) Restore the stack. - */ - -bool MemEmulator::generateESI_EDI(CodeBuffer &buffer) { - if (!determineESI_EDIUse()) return false; - - insertDebugMarker(); - - if (!shiftStack()) return false; - - if (!saveRegistersESI_EDI()) return false; - - if (!saveFlags()) return false; - - copyScratchToCodeBuffer(buffer); - - if (usesESI && !generateESIShift(buffer)) return false; - if (usesEDI && !generateEDIShift(buffer)) return false; - - if (!saveShiftsAndRestoreRegs()) return false; - - insertDebugMarker(); - if (!emulateOriginalESI_EDI()) return false; - if (!emulateESI_EDIValues()) return false; - if (!restoreAllRegistersESI_EDI()) return false; - if (!restoreStack()) return false; - assert(stackOffset == 0); - insertDebugMarker(); - - copyScratchToCodeBuffer(buffer); - - return true; -} - - -bool MemEmulator::determineESI_EDIUse() { - const InstructionAPI::Operation &op = insn_->getOperation(); - - switch(op.getID()) { - case e_insb: - case e_insd: - case e_insw: - usesEDI = true; - break; - case e_movsb: - case e_movsd: - case e_movsw: - usesESI = true; - usesEDI = true; - break; - case e_outsb: - case e_outsd: - case e_outsw: - usesESI = true; - break; - case e_lodsb: - case e_lodsd: - case e_lodsw: - usesESI = true; - break; - case e_stosb: - case e_stosd: - case e_stosw: - usesEDI = true; - break; - case e_cmpsb: - case e_cmpsw: - case e_cmpsd: - usesESI = true; - usesEDI = true; - break; - case e_scasb: - case e_scasd: - case e_scasw: - usesEDI = true; - break; - default: - assert(0); - break; - } - return true; -} - -bool MemEmulator::saveRegistersESI_EDI() { - // Always save EAX, but save it last - // so that it's easy to access. - - // We use EBX/EBP to hold shift values so that we can restore EA/C/DX pre-instruction - - push(REGNUM_EBX); - push(REGNUM_EBP); - - push(REGNUM_EDX); - push(REGNUM_ECX); - push(REGNUM_EAX); - return true; -} - -bool MemEmulator::generateESIShift(CodeBuffer &buffer) { - Address destination = getTranslatorAddr(true); - if (!destination) return false; - buffer.addPatch(new MemEmulatorPatch(REGNUM_ESI, ESI_SHIFT_REG, addr_, destination), tracker()); - - // Also, set up ESI to have the right value - ::emitLEA(RealRegister(REGNUM_ESI), RealRegister(ESI_SHIFT_REG), 0, 0, RealRegister(REGNUM_ESI), scratch); - copyScratchToCodeBuffer(buffer); - - return true; -} - -bool MemEmulator::generateEDIShift(CodeBuffer &buffer) { - Address destination = getTranslatorAddr(true); - if (!destination) return false; - buffer.addPatch(new MemEmulatorPatch(REGNUM_EDI, EDI_SHIFT_REG, addr_, destination), tracker()); - - ::emitLEA(RealRegister(REGNUM_EDI), RealRegister(EDI_SHIFT_REG), 0, 0, RealRegister(REGNUM_EDI), scratch); - - copyScratchToCodeBuffer(buffer); - - return true; -} - -bool MemEmulator::saveShiftsAndRestoreRegs() { - // Several instructions implicitly use EAX, and the REP prefix can use ECX. - - // Currently the stack looks like this: - // - // EBX - // EBP - // EDX - // ECX - // EAX - // Flags - - // We want it to look like this: - // - // EBX - // EBP - - if (!restoreFlags()) return false; - pop(REGNUM_EAX); - pop(REGNUM_ECX); - pop(REGNUM_EDX); - - return true; -} - -bool MemEmulator::emulateOriginalESI_EDI() { - scratch.copy(insn_->ptr(), insn_->size()); - return true; -} - -bool MemEmulator::emulateESI_EDIValues() { - // We need to: - // EDI -= EDX - // ESI -= ECX - // And "subtract" means "save the flags" - // ... which in turn means "save eax, fool" - push(REGNUM_EAX); - saveFlags(); - - if (usesESI) ::emitSubRegReg(RealRegister(REGNUM_ESI), RealRegister(ESI_SHIFT_REG), scratch); - if (usesEDI) ::emitSubRegReg(RealRegister(REGNUM_EDI), RealRegister(EDI_SHIFT_REG), scratch); - - restoreFlags(); - pop(REGNUM_EAX); - return true; -} - -bool MemEmulator::restoreAllRegistersESI_EDI() { - - pop(REGNUM_EBP); - pop(REGNUM_EBX); - return true; -} - -string MemEmulator::format() const { - stringstream ret; - ret << "MemE(" << insn_->format() - << "," << std::hex << addr_ << std::dec - << ")"; - - return ret.str(); -} - -Address MemEmulator::getTranslatorAddr(bool wantShift) { - if (wantShift) { - // Function lookup time - func_instance *func = scratch.addrSpace()->findOnlyOneFunction("RTtranslateMemoryShift"); - // FIXME for static rewriting; this is a dynamic-only hack for proof of concept. - if (!func) return 0; - // assert(func); - return func->addr(); - } - else { - // Function lookup time - func_instance *func = scratch.addrSpace()->findOnlyOneFunction("RTtranslateMemory"); - // FIXME for static rewriting; this is a dynamic-only hack for proof of concept. - if (!func) return 0; - // assert(func); - return func->addr(); - } -} - -bool MemEmulatorPatch::apply(codeGen &gen, - CodeBuffer *) { - relocation_cerr << "MemEmulatorPatch::apply @ " << hex << gen.currAddr() << dec << endl; - relocation_cerr << "\tSource reg " << source_ << endl; - assert(!gen.bt()); - - // Two debugging assists - ::emitPushImm(gen.currAddr(), gen); - ::emitPushImm(orig_, gen); - // And our argument - ::emitPush(RealRegister(source_), gen); - - // Step 2: call the translator - Address src = gen.currAddr() + 5; - relocation_cerr << "\tCall " << hex << dest_ << ", offset " << dest_ - src << dec << endl; - assert(dest_); - emitCallRel32(dest_ - src, gen); - if (target_ != REGNUM_EAX) - { - ::emitMovRegToReg(RealRegister(target_), RealRegister(REGNUM_EAX), gen); - } - ::emitLEA(RealRegister(REGNUM_ESP), RealRegister(Null_Register), 0, 12, RealRegister(REGNUM_ESP), gen); - - return true; -} - diff --git a/dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h b/dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h deleted file mode 100644 index 853b3e05b6..0000000000 --- a/dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#if !defined(cap_mem_emulation) -#error -#endif - - -#if !defined (_R_E_MEM_EMULATOR_H_) -#define _R_E_MEM_EMULATOR_H_ - -#include "dyninstAPI/src/Relocation/Widgets/Widget.h" -#include "dyninstAPI/src/codegen.h" -#include -class registerSlot; - - -namespace Dyninst { -namespace Relocation { - -class MemEmulatorTranslator; - -class MemEmulator : public Widget { - friend class MemEmulatorTranslator; - typedef std::map TranslatorMap; - public: - typedef boost::shared_ptr Ptr; - - static Ptr create(InstructionAPI::Instruction::Ptr insn, - Address addr, - instPoint *point); - - virtual bool generate(const codeGen &, const RelocBlock *, CodeBuffer &); - - virtual ~MemEmulator() {}; - virtual std::string format() const; - - virtual Address addr() const { return addr_; } - virtual unsigned size() const { return insn_->size(); } - virtual InstructionAPI::Instruction::Ptr insn() const { return insn_; } - - private: - MemEmulator(InstructionAPI::Instruction::Ptr insn, - Address addr, - instPoint *point) - : insn_(insn), - addr_(addr), - point_(point) - {}; - - // Set up the codeGen structures we use to hold code. - bool initialize(const codeGen &templ, const RelocBlock *); - - // Handle a0-a3 implicit EAX uses, or ESI/EDI instructions - bool generateViaOverride(CodeBuffer &buffer); - - // Handle generic MOD/RM using instructions - bool generateViaModRM(CodeBuffer &buffer); - - // Handle a0-a3 implicit EAX moves - bool generateEAXMove(unsigned char opcode, CodeBuffer &buffer); - - // Handle ESI/EDI instructions - bool generateESI_EDI(CodeBuffer &buffer); - - // Handle POPAD instructions - bool generatePOPAD(CodeBuffer &buffer); - - // Drop in a trap for later debugging assistance - void insertDebugMarker(); - - // Initialize mod/rm specific data - bool generateModRMInitialize(); - // Create the pre-call handling for MOD/RM instructions - bool generateTranslatorSetup(); - // Create the call to the translator function - bool generateTranslatorCall(CodeBuffer &buffer); - // Create the teardown code - bool generateTranslatorTeardown(); - - // Move the stack down by a known amount - bool shiftStack(); - // Determine which register we can use for the effective address - bool determineEffAddr(); - // Save eax/ecx/edx - bool saveRegisters(); - // Run the effective address calculation before we modify anything (except the stack pointer, sigh) - bool calculateEffAddr(); - // Save the flags - bool saveFlags(); - - // Restore flags after the call - bool restoreFlags(); - // Restore caller-saved registers (except effAddr) - bool restoreRegisters(); - // Restore the stack - bool restoreStack(); - // Emulate the original instruction using effAddr instead of the original expression - bool emulateOriginalInstruction(); - // And restore the effective address register - bool restoreEffectiveAddr(); - - // ESI/EDI implicit shtuff - bool determineESI_EDIUse(); - bool saveRegistersESI_EDI(); // Almost, but not quite the same as saveRegisters. Yuck. - bool generateESIShift(CodeBuffer &buffer); - bool generateEDIShift(CodeBuffer &buffer); - bool saveShiftsAndRestoreRegs(); - bool emulateOriginalESI_EDI(); - bool emulateESI_EDIValues(); - bool restoreAllRegistersESI_EDI(); - - // Copy code into the CodeBuffer (and reset the scratch codegen) - bool copyScratchToCodeBuffer(CodeBuffer &); - TrackerElement *tracker() const; - bool push(Register); - bool pop(Register); - Address getTranslatorAddr(bool wantShiftFunc); - - - /// Members - Register effAddr; - int stackOffset; - int effAddrSaveOffset; - block_instance *block; - - bool usesESI; - bool usesEDI; - - codeGen scratch; - bool debug; - - InstructionAPI::Instruction::Ptr insn_; - Address addr_; - instPoint *point_; -}; - -struct MemEmulatorPatch : public Patch { - // Put in a call to the RTtranslateMemory - // function - MemEmulatorPatch(Register s, - Register t, - Address o, - Address d) - : source_(s), target_(t), orig_(o), dest_(d) {}; - virtual bool apply(codeGen &gen, CodeBuffer *buf); - virtual unsigned estimate(codeGen &) { return 7; }; - virtual ~MemEmulatorPatch() {}; - - Register source_; - Register target_; - Address orig_; - Address dest_; -}; - -}; -}; -#endif diff --git a/dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h b/dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h index d5b6ddb988..1670545ec3 100644 --- a/dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h +++ b/dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h @@ -35,7 +35,7 @@ class AddressSpace; #include "Transformer.h" -#include "dataflowAPI/h/Absloc.h" // MemEmulator analysis +#include "dataflowAPI/h/Absloc.h" #include "dyninstAPI/src/function.h" diff --git a/dyninstAPI/src/Relocation/Transformers/Movement-analysis.h b/dyninstAPI/src/Relocation/Transformers/Movement-analysis.h index add95fdaa7..d57fc3fa4d 100644 --- a/dyninstAPI/src/Relocation/Transformers/Movement-analysis.h +++ b/dyninstAPI/src/Relocation/Transformers/Movement-analysis.h @@ -34,7 +34,7 @@ #include "Transformer.h" #include "dyninstAPI/src/LinearVariable.h" -#include "dataflowAPI/h/Absloc.h" // MemEmulator analysis +#include "dataflowAPI/h/Absloc.h" #include "dataflowAPI/h/AbslocInterface.h" // And more of the same #include "common/h/Graph.h" // PC-sensitive transformer diff --git a/dyninstAPI/src/Relocation/Widgets/CFWidget-aarch64.C b/dyninstAPI/src/Relocation/Widgets/CFWidget-aarch64.C index 5de3d558cd..ba0fee07ec 100644 --- a/dyninstAPI/src/Relocation/Widgets/CFWidget-aarch64.C +++ b/dyninstAPI/src/Relocation/Widgets/CFWidget-aarch64.C @@ -219,16 +219,3 @@ bool CFPatch::handleTOCUpdate(codeGen &gen) { } */ -bool CFWidget::generateAddressTranslator(CodeBuffer &/*buffer*/, - const codeGen &/*templ*/, - Register &/*reg*/, - const RelocBlock */*trace*/) { -#if !defined(cap_mem_emulation) - return true; -#else - assert(0); - return false; -#endif - -} - diff --git a/dyninstAPI/src/Relocation/Widgets/CFWidget-ppc.C b/dyninstAPI/src/Relocation/Widgets/CFWidget-ppc.C index b9bab37c04..cba4cde2c3 100644 --- a/dyninstAPI/src/Relocation/Widgets/CFWidget-ppc.C +++ b/dyninstAPI/src/Relocation/Widgets/CFWidget-ppc.C @@ -283,18 +283,3 @@ bool CFPatch::handleTOCUpdate(codeGen &gen) { return false; } } - -bool CFWidget::generateAddressTranslator(CodeBuffer & /*buffer*/, - const codeGen & /*templ*/, - Register & /*reg*/, - const RelocBlock * /*trace*/) -{ -#if !defined(cap_mem_emulation) - return true; -#else - assert(0); - return false; -#endif - -} - diff --git a/dyninstAPI/src/Relocation/Widgets/CFWidget-x86.C b/dyninstAPI/src/Relocation/Widgets/CFWidget-x86.C index 0cb91f46ec..caec2b5504 100644 --- a/dyninstAPI/src/Relocation/Widgets/CFWidget-x86.C +++ b/dyninstAPI/src/Relocation/Widgets/CFWidget-x86.C @@ -46,10 +46,6 @@ #include "dyninstAPI/src/inst-x86.h" #include "dyninstAPI/h/BPatch_memoryAccess_NP.h" -#if defined(cap_mem_emulation) -#include "dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h" -#endif - using namespace Dyninst; using namespace Relocation; using namespace InstructionAPI; @@ -293,113 +289,3 @@ bool CFPatch::applyPLT(codeGen &gen, CodeBuffer *) { return true; } - -#if !defined(cap_mem_emulation) -bool CFWidget::generateAddressTranslator(CodeBuffer &,const codeGen &,Register &,const RelocBlock *) { - return true; -} -#else -bool CFWidget::generateAddressTranslator(CodeBuffer &buffer, - const codeGen &templ, - Register ®, - const RelocBlock *trace) -{ - if (!templ.addrSpace()->isMemoryEmulated() || - BPatch_defensiveMode != trace->block()->obj()->hybridMode()) - return true; - - if (insn_->getOperation().getID() == e_ret_near || - insn_->getOperation().getID() == e_ret_far) { - // Oops! - return true; - } - if (!insn_->readsMemory()) { - return true; - } - - BPatch_memoryAccessAdapter converter; - BPatch_memoryAccess *acc = converter.convert(insn_, addr_, false); - if (!acc) { - reg = Null_Register; - return true; - } - - codeGen patch(128); - patch.applyTemplate(templ); - - // TODO: we probably want this in a form that doesn't stomp the stack... - // But we can probably get away with this for now. Check that. - - // step 1: create space on the stack. - ::emitPush(RealRegister(REGNUM_EAX), patch); - - // step 2: save registers that will be affected by the call - ::emitPush(RealRegister(REGNUM_ECX), patch); - ::emitPush(RealRegister(REGNUM_EDX), patch); - ::emitPush(RealRegister(REGNUM_EAX), patch); - - // Step 3: LEA this sucker into ECX. - const BPatch_addrSpec_NP *start = acc->getStartAddr(0); - if (start->getReg(0) == REGNUM_ESP || - start->getReg(1) == REGNUM_ESP) { - cerr << "ERROR: CF insn that uses the stack pointer! " << insn_->format() << endl; - } - - int stackShift = -16; - // If we are a call _instruction_ but isCall is false, then we've got an extra word - // on the stack from an emulated return address - if (!isCall_ && insn_->getCategory() == c_CallInsn) stackShift -= 4; - - emitASload(start, REGNUM_ECX, stackShift, patch, true); - - // Step 4: save flags post-LEA - emitSimpleInsn(0x9f, patch); - emitSaveO(patch); - ::emitPush(RealRegister(REGNUM_EAX), patch); - - // This might look a lot like a memEmulatorWidget. That's, well, because it - // is. - buffer.addPIC(patch, tracker(trace)); - - // Where are we going? - func_instance *func = templ.addrSpace()->findOnlyOneFunction("RTtranslateMemory"); - // FIXME for static rewriting; this is a dynamic-only hack for proof of concept. - assert(func); - - // Now we start stealing from memEmulatorWidget. We need to call our translation function, - // which means a non-PIC patch to the CodeBuffer. I don't feel like rewriting everything, - // so there we go. - buffer.addPatch(new MemEmulatorPatch(REGNUM_ECX, REGNUM_ECX, addr_, func->addr()), - tracker(trace)); - patch.setIndex(0); - - // Restore flags - ::emitPop(RealRegister(REGNUM_EAX), patch); - emitRestoreO(patch); - emitSimpleInsn(0x9E, patch); - ::emitPop(RealRegister(REGNUM_EAX), patch); - ::emitPop(RealRegister(REGNUM_EDX), patch); - - // ECX now holds the pointer to the destination... - // Dereference - ::emitMovRMToReg(RealRegister(REGNUM_ECX), - RealRegister(REGNUM_ECX), - 0, - patch); - - // ECX now holds the _actual_ destination, so move it on to the stack. - // We've got ECX saved - ::emitMovRegToRM(RealRegister(REGNUM_ESP), - 1*4, - RealRegister(REGNUM_ECX), - patch); - ::emitPop(RealRegister(REGNUM_ECX), patch); - // And tell our people to use the top of the stack - // for their work. - // TODO: trust liveness and leave this in a register. - - buffer.addPIC(patch, tracker(trace)); - reg = REGNUM_ESP; - return true; -} -#endif diff --git a/dyninstAPI/src/Relocation/Widgets/CFWidget.C b/dyninstAPI/src/Relocation/Widgets/CFWidget.C index e1b2e6e1ca..8c6b8efccc 100644 --- a/dyninstAPI/src/Relocation/Widgets/CFWidget.C +++ b/dyninstAPI/src/Relocation/Widgets/CFWidget.C @@ -38,14 +38,6 @@ #include "dyninstAPI/src/inst-x86.h" #include "dyninstAPI/src/debug.h" -#if defined(cap_mem_emulation) -#include "dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h" -#include "dyninstAPI/src/BPatch_memoryAccessAdapter.h" -#include "dyninstAPI/h/BPatch_memoryAccess_NP.h" -#include "dyninstAPI/src/MemoryEmulator/memEmulatorWidget.h" -#include "dyninstAPI/src/registerSpace.h" -#endif - #include "../dyninstAPI/src/debug.h" #include "../CodeTracker.h" @@ -133,7 +125,7 @@ CFWidget::CFWidget(InstructionAPI::Instruction insn, Address addr) : } -bool CFWidget::generate(const codeGen &templ, +bool CFWidget::generate(const codeGen &, const RelocBlock *trace, CodeBuffer &buffer) { @@ -269,10 +261,7 @@ bool CFWidget::generate(const codeGen &templ, } case Indirect: { Register reg = Null_Register; /* = originalRegister... */ - // Originally for use in helping with jump tables, I'm taking - // this for the memory emulation effort. Huzzah! - if (!generateAddressTranslator(buffer, templ, reg, trace)) - return false; + // If this is an indirect tail call, we still treat it // as an indirect call if (isCall_ || trace->block()->llb()->isIndirectTailCallBlock()) { diff --git a/dyninstAPI/src/Relocation/Widgets/CFWidget.h b/dyninstAPI/src/Relocation/Widgets/CFWidget.h index e9a4cd714a..d903a1f143 100644 --- a/dyninstAPI/src/Relocation/Widgets/CFWidget.h +++ b/dyninstAPI/src/Relocation/Widgets/CFWidget.h @@ -187,12 +187,6 @@ class CFWidget : public Widget { InstructionAPI::Instruction insn, const RelocBlock *trace, Address origAddr); - - bool generateAddressTranslator(CodeBuffer &buffer, - const codeGen &templ, - Register ®, - const RelocBlock *trace); - }; struct CFPatch : public Patch { diff --git a/dyninstAPI/src/addressSpace.C b/dyninstAPI/src/addressSpace.C index 466219a9dc..022d8c2308 100644 --- a/dyninstAPI/src/addressSpace.C +++ b/dyninstAPI/src/addressSpace.C @@ -50,7 +50,6 @@ #include "Relocation/Transformers/Include.h" #include "Relocation/CodeTracker.h" -#include "MemoryEmulator/memEmulator.h" #include "parseAPI/h/CodeObject.h" #include @@ -89,20 +88,8 @@ AddressSpace::AddressSpace () : up_ptr_(NULL), costAddr_(0), installedSpringboards_(new Relocation::InstalledSpringboards()), - memEmulator_(NULL), - emulateMem_(false), - emulatePC_(false), delayRelocation_(false) { -#if 0 - // Disabled for now; used by defensive mode - if ( getenv("DYNINST_EMULATE_MEMORY") ) { - printf("emulating memory & pc\n"); - memEmulator_ = new MemoryEmulator(this); - emulateMem_ = true; - emulatePC_ = true; - } -#endif // Historically, we only use SIGTRAP as the signal for tramopline. // However, SIGTRAP is always intercepted by GDB, causing it is // almost impossible to debug through signal trampolines. @@ -116,8 +103,6 @@ AddressSpace::AddressSpace () : } AddressSpace::~AddressSpace() { - if (memEmulator_) - delete memEmulator_; if (mgr_) static_cast(mgr_->as())->removeAddrSpace(this); @@ -235,10 +220,6 @@ void AddressSpace::copyAddressSpace(AddressSpace *parent) { func_instance *to = findFunction(SCAST_FI(iter->second.first)->ifunc()); fwm[from] = std::make_pair(to, iter->second.second); } - - if (memEmulator_) assert(0 && "FIXME!"); - emulateMem_ = parent->emulateMem_; - emulatePC_ = parent->emulatePC_; } void AddressSpace::deleteAddressSpace() { @@ -271,9 +252,6 @@ void AddressSpace::deleteAddressSpace() { // up_ptr_ is untouched costAddr_ = 0; - - if (memEmulator_) delete memEmulator_; - memEmulator_ = NULL; } @@ -396,10 +374,6 @@ void AddressSpace::addHeap(heapItem *h) { std::sort(heap_.heapFree.begin(), heap_.heapFree.end(), ptr_fun(heapItemLessByAddr)); heap_.totalFreeMemAvailable += h2->length; - - if (h->dynamic) { - addAllocatedRegion(h->addr, h->length); - } } void AddressSpace::initializeHeap() { @@ -1711,8 +1685,6 @@ bool AddressSpace::relocate() { modFuncs = actualModFuncs; } - addModifiedRegion(iter->first); - Address middle = (iter->first->codeAbs() + (iter->first->imageSize() / 2)); if (!relocateInt(iter->second.begin(), iter->second.end(), middle)) { @@ -1724,7 +1696,6 @@ bool AddressSpace::relocate() { - updateMemEmulator(); modifiedFunctions_.clear(); @@ -1876,13 +1847,6 @@ bool AddressSpace::transform(CodeMover::Ptr cm) { cm->transform(pc); } -#if defined(cap_mem_emulation) - if (emulateMem_) { - MemEmulatorTransformer m; - cm->transform(m); - } -#endif - // Add instrumentation relocation_cerr << "Inst transformer" << endl; Instrumenter i; @@ -1996,17 +1960,6 @@ bool AddressSpace::patchCode(CodeMover::Ptr cm, // HACK: code modification will make this happen... return false; } - - mapped_object *obj = findObject(iter->startAddr()); - if (obj && runtime_lib.end() == runtime_lib.find(obj)) { - Address objBase = obj->codeBase(); - SymtabAPI::Region * reg = obj->parse_img()->getObject()-> - findEnclosingRegion(iter->startAddr() - objBase); - if (memEmulator_) - memEmulator_->addSpringboard(reg, - iter->startAddr() - objBase - reg->getMemOffset(), - iter->used()); - } } return true; @@ -2156,23 +2109,6 @@ void AddressSpace::addInstrumentationInstance(baseTramp *bt, instrumentationInstances_[bt].insert(a); } -void AddressSpace::addAllocatedRegion(Address start, unsigned size) { - if (memEmulator_) memEmulator_->addAllocatedRegion(start, size); -} - -void AddressSpace::addModifiedRegion(mapped_object *obj) { - if (memEmulator_) memEmulator_->addRegion(obj); - return; -} - -void AddressSpace::updateMemEmulator() { - if (memEmulator_) memEmulator_->update(); -} - -MemoryEmulator * AddressSpace::getMemEm() { - return memEmulator_; -} - void updateSrcListAndVisited(ParseAPI::Edge* e, std::list& srcList, std::set& visited) diff --git a/dyninstAPI/src/addressSpace.h b/dyninstAPI/src/addressSpace.h index f00e04a4ef..e0639dfa4f 100644 --- a/dyninstAPI/src/addressSpace.h +++ b/dyninstAPI/src/addressSpace.h @@ -88,7 +88,6 @@ class trampTrapMappings; class baseTramp; namespace Dyninst { - class MemoryEmulator; namespace InstructionAPI { class Instruction; @@ -485,11 +484,6 @@ class AddressSpace : public InstructionSource { void addModifiedFunction(func_instance *func); void addModifiedBlock(block_instance *block); - void updateMemEmulator(); - bool isMemoryEmulated() { return emulateMem_; } - bool emulatingPC() { return emulatePC_; } - MemoryEmulator *getMemEm(); - bool delayRelocation() const; protected: @@ -552,14 +546,6 @@ class AddressSpace : public InstructionSource { // FuncModMap functionReplacements_; // FuncModMap functionWraps_; - void addAllocatedRegion(Address start, unsigned size); - void addModifiedRegion(mapped_object *obj); - - MemoryEmulator *memEmulator_; - - bool emulateMem_; - bool emulatePC_; - bool delayRelocation_; std::map wrappedFunctionWorklist_; diff --git a/dyninstAPI/src/dynProcess.C b/dyninstAPI/src/dynProcess.C index 31a77cb3a0..ddef4e343b 100644 --- a/dyninstAPI/src/dynProcess.C +++ b/dyninstAPI/src/dynProcess.C @@ -46,7 +46,6 @@ #include "common/src/pathName.h" #include "PCErrors.h" -#include "MemoryEmulator/memEmulator.h" #include #include "symtabAPI/h/SymtabReader.h" @@ -2203,12 +2202,6 @@ bool PCProcess::getOverwrittenBlocks // 1. Read the modified page in from memory Address readAddr = curPageAddr; - if (isMemoryEmulated()) { - bool valid = false; - boost::tie(valid,readAddr) = getMemEm()->translate(curPageAddr); - cerr << "\t\t Reading from shadow page " << hex << readAddr << " instead of original " << curPageAddr << endl; - assert(valid); - } readTextSpace((void*)readAddr, MEM_PAGE_SIZE, memVersion); // 2. build overwritten region list by comparing shadow, memory diff --git a/dyninstAPI/src/function.C b/dyninstAPI/src/function.C index d9bc6e92a3..7ca018b1df 100644 --- a/dyninstAPI/src/function.C +++ b/dyninstAPI/src/function.C @@ -38,7 +38,6 @@ #include "mapped_object.h" #include "mapped_module.h" #include "InstructionDecoder.h" -#include "MemoryEmulator/memEmulator.h" #include "Relocation/Transformers/Movement-analysis.h" #include "PatchMgr.h" // Scope diff --git a/dyninstAPI/src/hybridCallbacks.C b/dyninstAPI/src/hybridCallbacks.C index cda52f88ed..74b0d27ecf 100644 --- a/dyninstAPI/src/hybridCallbacks.C +++ b/dyninstAPI/src/hybridCallbacks.C @@ -37,7 +37,6 @@ #include "instPoint.h" #include "function.h" #include "dynProcess.h" -#include "MemoryEmulator/memEmulator.h" #include "PatchModifier.h" #include "BPatch_image.h" #include "mapped_object.h" @@ -56,11 +55,6 @@ void HybridAnalysis::synchShadowOrigCB(BPatch_point *point, bool toOrig) mal_printf("in synch callback for point 0x%lx toOrig=%d\n", (Address)point->getAddress(), (int) (long) toOrig); - - proc()->lowlevel_process()->getMemEm()->synchShadowOrig - ((bool) toOrig); - - std::vector *mods = proc()->getImage()->getModules(); // fix up page rights so that the program can proceed @@ -369,8 +363,6 @@ void HybridAnalysis::virtualFreeCB(BPatch_point *, void *t) { if (!bpfunc) continue; PatchAPI::PatchModifier::remove(bpfunc->lowlevel_func()); } - - proc()->lowlevel_process()->getMemEm()->removeRegion(virtualFreeAddr_, virtualFreeSize_); // And nuke the RT cache proc()->lowlevel_process()->proc()->flushAddressCache_RT(virtualFreeAddr_, virtualFreeSize_); diff --git a/dyninstAPI/src/hybridInstrumentation.C b/dyninstAPI/src/hybridInstrumentation.C index 446ac589ce..19a8d39494 100644 --- a/dyninstAPI/src/hybridInstrumentation.C +++ b/dyninstAPI/src/hybridInstrumentation.C @@ -41,7 +41,6 @@ #include "debug.h" #include "dynProcess.h" #include "mapped_object.h" -#include "MemoryEmulator/memEmulator.h" #include "mapped_module.h" #include #include @@ -153,44 +152,6 @@ bool HybridAnalysis::init() proc()->finalizeInsertionSet(false); // Done instrumenting VirtualFree - - if (proc()->lowlevel_process()->isMemoryEmulated()) { - // read in the list of whitelisted Windows API functions (those that - // don't use pointers) so we save time by not to synchronizing around - // them - char *dyn_root = getenv("DYNINST_ROOT"); - if (!dyn_root) { - fprintf(stderr, "ERROR: DYNINST_ROOT environment variable was not " - "declared, couldn't find the list of non-pointer Windows API " - "functions, will synchronize memory at all inter-library calls" - " %s[%d]\n",FILE__,__LINE__); - } - else { - string fname = string(dyn_root) + "\\dyninst\\dyninstAPI\\nosynchfuncs.txt"; - ifstream nsf_file(fname.c_str()); - if ( ! nsf_file.is_open() ) { - fprintf(stderr, "ERROR: failed to open file %s, which should " - "contain the list of non-pointer Windows API functions, " - "will synchronize memory at all inter-library calls " - "%s[%d]\n",fname.c_str(),FILE__,__LINE__); - } - else { - std::string curfunc; - while (nsf_file.good()) { - getline(nsf_file, curfunc); - skipShadowFuncs_.insert(curfunc); - } - } - } - skipShadowFuncs_.insert("GetCurrentProcessId"); - skipShadowFuncs_.insert("VirtualAlloc"); - skipShadowFuncs_.insert("VirtualFree"); - skipShadowFuncs_.insert("GetCurrentThreadId"); - skipShadowFuncs_.insert("GetLocalTime"); - skipShadowFuncs_.insert("LocalAlloc"); - skipShadowFuncs_.insert("TlsAlloc"); - skipShadowFuncs_.insert("TlsSetValue"); - } #endif //mal_printf(" pre-inst "); proc()->printKTimer(); @@ -362,12 +323,6 @@ bool HybridAnalysis::instrumentFunction(BPatch_function *func, assert(proc()); assert(proc()->lowlevel_process()); - if (proc()->lowlevel_process()->isMemoryEmulated() && - BPatch_defensiveMode == func->lowlevel_func()->obj()->hybridMode()) - { // we have to relocate all functions to emulate their memory accesses - proc()->lowlevel_process()->addModifiedFunction(func->lowlevel_func()); - } - if (instrumentedFuncs->end() == instrumentedFuncs->find(func)) { (*instrumentedFuncs)[func] = new std::map(); @@ -634,7 +589,7 @@ bool HybridAnalysis::instrumentFunction(BPatch_function *func, } // close insertion set - if (proc()->lowlevel_process()->isMemoryEmulated() || pointCount) { + if (pointCount) { mal_printf("instrumented %d points in function at %p\n", pointCount, func->getBaseAddr()); if (useInsertionSet) { @@ -682,40 +637,6 @@ void HybridAnalysis::removeInstrumentation(BPatch_function *func, // 1. Remove elements from instrumentedFuncs if (instrumentedFuncs->end() != instrumentedFuncs->find(func)) { - if (proc()->lowlevel_process()->isMemoryEmulated()) { - map::iterator - pit = (*instrumentedFuncs)[func]->begin(); - for (; pit != (*instrumentedFuncs)[func]->end(); pit++) { - if (synchMap_pre_.end() != synchMap_pre_.find(pit->first)) - { - SynchHandle *shandle = synchMap_pre_[pit->first]; - // Note: the points in this snippet handle may have been deleted, and thus - // should not be dereferenced; use them only as key values in maps. - - synchMap_pre_.erase(shandle->prePt_); - /* - // Don't remove an instrumentation point that we haven't specifically found; - // it might be in a different function. - synchMap_post_.erase(shandle->postPt_); - */ - delete shandle; - } - else if (synchMap_post_.end() != synchMap_post_.find(pit->first)) - { - SynchHandle *shandle = synchMap_post_[pit->first]; - // Note: the points in this snippet handle may have been deleted, and thus - // should not be dereferenced; use them only as key values in maps. - - /* - // Do not remove an instrumentation point that we haven't specifically found; - // it might be in a different function. - synchMap_pre_.erase(shandle->prePt_); - */ - synchMap_post_.erase(shandle->postPt_); - delete shandle; - } - } - } (*instrumentedFuncs)[func]->clear(); delete (*instrumentedFuncs)[func]; instrumentedFuncs->erase(func); diff --git a/dyninstAPI/src/hybridOverwrites.C b/dyninstAPI/src/hybridOverwrites.C index 45cd5070f5..e670053028 100644 --- a/dyninstAPI/src/hybridOverwrites.C +++ b/dyninstAPI/src/hybridOverwrites.C @@ -46,7 +46,6 @@ #include "instPoint.h" #include "mapped_object.h" #include "mapped_module.h" -#include "MemoryEmulator/memEmulator.h" using namespace Dyninst; @@ -1321,9 +1320,6 @@ void HybridAnalysisOW::overwriteAnalysis(BPatch_point *point, void *loopID_) proc()->finalizeInsertionSet(false); proc()->protectAnalyzedCode(); malware_cerr << "overWriteAnalysis returns" << endl; - - proc()->lowlevel_process()->getMemEm()->debug(); - } #endif diff --git a/dyninstAPI/src/mapped_object.C b/dyninstAPI/src/mapped_object.C index b6d99e8826..ad6acf2529 100644 --- a/dyninstAPI/src/mapped_object.C +++ b/dyninstAPI/src/mapped_object.C @@ -46,7 +46,6 @@ #include "InstructionDecoder.h" #include "Parsing.h" #include "instPoint.h" -#include "MemoryEmulator/memEmulator.h" #include #include "BPatch_image.h" #include "PatchCFG.h" @@ -1327,11 +1326,6 @@ void mapped_object::expandCodeBytes(SymtabAPI::Region *reg) // 1. copy memory into regBuf Address readAddr = regStart + codeBase(); - if (proc()->isMemoryEmulated()) { - bool valid = false; - boost::tie(valid, readAddr) = proc()->getMemEm()->translate(readAddr); - assert(valid); - } if (!proc()->readDataSpace((void*)readAddr, copySize, regBuf, @@ -1344,8 +1338,6 @@ void mapped_object::expandCodeBytes(SymtabAPI::Region *reg) mal_printf("EXTEND_CB: copied to [%lx %lx)\n", codeBase()+regStart, codeBase()+regStart+copySize); - if ( ! proc()->isMemoryEmulated() ) { - // 2. copy code bytes back into the regBuf to wipe out instrumentation // and set regBuf to be the data for the region @@ -1378,7 +1370,6 @@ void mapped_object::expandCodeBytes(SymtabAPI::Region *reg) } mal_printf("Expand region: %lx blocks copied back into mapped file\n", analyzedBlocks.size()); - } if (reg->isDirty()) { // if isDirty is true, the pointer was created via malloc @@ -1410,7 +1401,6 @@ void mapped_object::expandCodeBytes(SymtabAPI::Region *reg) // 2. copy overwritten regions into the mapped objects void mapped_object::updateCodeBytes(const list > &owRanges) { - bool memEmulation = proc()->isMemoryEmulated(); // 1. use other update functions to update non-code areas of mapped files, // expanding them if we wrote in un-initialized memory using namespace SymtabAPI; @@ -1447,11 +1437,6 @@ void mapped_object::updateCodeBytes(const list > &owRanges for(rIter = owRanges.begin(); rIter != owRanges.end(); rIter++) { Address readAddr = rIter->first; - if (memEmulation) { - bool valid = false; - boost::tie(valid, readAddr) = proc()->getMemEm()->translate(readAddr); - assert(valid); - } Region *reg = parse_img()->getObject()->findEnclosingRegion ( (*rIter).first - baseAddress ); @@ -1518,11 +1503,6 @@ void mapped_object::updateCodeBytes(SymtabAPI::Region * symReg) if (prevEndAddr < curB->start()) { // update the mapped file Address readAddr = prevEndAddr + base; - if (proc()->isMemoryEmulated()) { - bool valid = false; - boost::tie(valid, readAddr) = proc()->getMemEm()->translate(readAddr); - assert(valid); - } if (!proc()->readDataSpace( (void*)readAddr, curB->start() - prevEndAddr, @@ -1550,11 +1530,6 @@ void mapped_object::updateCodeBytes(SymtabAPI::Region * symReg) // (will read in whole region if there are no ranges in the region) if (prevEndAddr < regStart + symReg->getDiskSize()) { Address readAddr = prevEndAddr + base; - if (proc()->isMemoryEmulated()) { - bool valid = false; - boost::tie(valid, readAddr) = proc()->getMemEm()->translate(readAddr); - assert(valid); - } if (!proc()->readDataSpace( (void*)readAddr, regStart + symReg->getDiskSize() - prevEndAddr, @@ -1632,12 +1607,6 @@ bool mapped_object::isUpdateNeeded(Address entry) ? comparison_size : page_size; regBuf = malloc(comparison_size); Address readAddr = entry; - if (proc()->isMemoryEmulated()) { - bool valid = false; - Address translated = 0; - boost::tie(valid, translated) = proc()->getMemEm()->translate(readAddr); - if (valid) readAddr = translated; - } // mal_printf("%s[%d] Comparing %lx bytes starting at %lx\n", // FILE__,__LINE__,comparison_size,entry); @@ -1682,11 +1651,6 @@ bool mapped_object::isExpansionNeeded(Address entry) // see if the first few bytes have been updated Address compareStart = base + reg->getMemOffset() + reg->getDiskSize(); - if (proc()->isMemoryEmulated()) { - bool valid = false; - boost::tie(valid, compareStart) = proc()->getMemEm()->translate(compareStart); - assert(valid); - } unsigned compareSize = InstructionAPI::InstructionDecoder::maxInstructionLength; Address uninitSize = reg->getMemSize() - reg->getDiskSize(); @@ -1772,10 +1736,6 @@ bool mapped_object::updateCodeBytesIfNeeded(Address entry) } void mapped_object::remove(func_instance *func) { - - if (as()->isMemoryEmulated()) { - as()->getMemEm()->removeSpringboards(func); - } // clear out module- and BPatch-level data structures BPatch_addressSpace* bpAS = (BPatch_addressSpace*)proc()->up_ptr(); @@ -1842,9 +1802,6 @@ void mapped_object::remove(instPoint *point) // does not delete void mapped_object::destroy(PatchAPI::PatchBlock *b) { calleeNames_.erase(SCAST_BI(b)); - if (as()->isMemoryEmulated()) { - as()->getMemEm()->removeSpringboards(SCAST_BI(b)); - } } // does not delete diff --git a/dyninstAPI/src/pcEventHandler.C b/dyninstAPI/src/pcEventHandler.C index e97662d91f..43690abda1 100644 --- a/dyninstAPI/src/pcEventHandler.C +++ b/dyninstAPI/src/pcEventHandler.C @@ -36,7 +36,6 @@ #include "registerSpace.h" #include "RegisterConversion.h" #include "function.h" -#include "MemoryEmulator/memEmulator.h" #include "dynThread.h" #include "Mailbox.h" @@ -460,16 +459,6 @@ bool PCEventHandler::handleSignal(EventSignal::const_ptr ev, PCProcess *evProc) Address addr = ev->getAddress(); mapped_object* obj = evProc->findObject(addr); - // retry finding object by its original address. - if (obj == NULL && evProc->isMemoryEmulated()) { - std::pair trans = - evProc->getMemEm()->translateBackwards(addr); - if (trans.first) { - addr = trans.second; - obj = evProc->findObject(addr); - } - } - // change permissions if we can find this originally writable region if (obj != NULL) { SymtabAPI::Region* reg = diff --git a/dyninstAPI/src/pdwinnt.C b/dyninstAPI/src/pdwinnt.C index 5eee0bb55e..13e520070d 100644 --- a/dyninstAPI/src/pdwinnt.C +++ b/dyninstAPI/src/pdwinnt.C @@ -46,7 +46,6 @@ #include "dyninstAPI/src/inst-x86.h" #include "dyninstAPI/src/registerSpace.h" #include "image.h" -#include "MemoryEmulator/memEmulator.h" #include #include "dyninstAPI/src/ast.h" @@ -174,29 +173,6 @@ void PCProcess::changeMemoryProtections(Address addr, size_t size, rights, oldRights)) { mal_printf("ERROR: failed to set access rights " "for page %lx, %s[%d]\n", addr, FILE__, __LINE__); - } else if (isMemoryEmulated() && setShadow) { - Address shadowAddr = 0; - PCMemPerm shadowRights; - bool valid = false; - boost::tie(valid, shadowAddr) = getMemEm()->translate(idx); - if (!valid) { - mal_printf("WARNING: set access rights on page %lx that has " - "no shadow %s[%d]\n",addr,FILE__,__LINE__); - } else { - if(!pcProc_->setMemoryAccessRights(shadowAddr, pageSize, - rights, shadowRights)) { - mal_printf("ERROR: failed to set access rights " - "for page %lx, %s[%d]\n", - shadowAddr, FILE__, __LINE__); - } - - if (shadowRights != oldRights) { - mal_printf("WARNING: shadow page[%lx] rights %s did not " - "match orig-page [%lx] rights %s\n", - shadowAddr, shadowRights.getPermName().c_str(), - addr, oldRights.getPermName().c_str()); - } - } } } } diff --git a/dyninstAPI_RT/CMakeLists.txt b/dyninstAPI_RT/CMakeLists.txt index 5d61411a78..983a5ab8da 100644 --- a/dyninstAPI_RT/CMakeLists.txt +++ b/dyninstAPI_RT/CMakeLists.txt @@ -14,7 +14,6 @@ include_directories ( set (SRC_LIST src/RTcommon.c - src/RTmemEmulator.c ) if (PLATFORM MATCHES freebsd) diff --git a/dyninstAPI_RT/h/dyninstAPI_RT.h b/dyninstAPI_RT/h/dyninstAPI_RT.h index 0c14df3c92..f5f8cda93e 100644 --- a/dyninstAPI_RT/h/dyninstAPI_RT.h +++ b/dyninstAPI_RT/h/dyninstAPI_RT.h @@ -244,7 +244,5 @@ struct MemoryMapper64 { DLLEXPORT extern struct MemoryMapper RTmemoryMapper; -extern int RTuntranslatedEntryCounter; - #include "dyninstRTExport.h" #endif /* _DYNINSTAPI_RT_H */ diff --git a/dyninstAPI_RT/src/RTcommon.c b/dyninstAPI_RT/src/RTcommon.c index 7454d5821f..14695126cb 100644 --- a/dyninstAPI_RT/src/RTcommon.c +++ b/dyninstAPI_RT/src/RTcommon.c @@ -171,8 +171,6 @@ void DYNINSTBaseInit() #endif DYNINST_unlock_tramp_guard(); DYNINSThasInitialized = 1; - - RTuntranslatedEntryCounter = 0; } /** diff --git a/dyninstAPI_RT/src/RTmemEmulator.c b/dyninstAPI_RT/src/RTmemEmulator.c deleted file mode 100644 index 8699fad15b..0000000000 --- a/dyninstAPI_RT/src/RTmemEmulator.c +++ /dev/null @@ -1,170 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "dyninstAPI_RT/h/dyninstAPI_RT.h" -#include "dyninstAPI_RT/src/RTcommon.h" -#include -#include -#include -#include - -#if defined (__GNUC__) -#include -#define FAST_CALL __attribute__((fastcall)) -#elif defined (os_windows) -#define FAST_CALL __fastcall -#endif - -/* Code to assist in remapping memory operations that were affected - * by our instrumentation */ - -extern void DYNINST_stopThread(void *, void *, void *, void *); - -#if _MSC_VER -struct MemoryMapper RTmemoryMapper = {0, 0, 0, 0 }; -#else -struct MemoryMapper RTmemoryMapper = {0, 0, 0, 0, {{0}} }; -#endif -extern FILE *stOut; - -//#define DEBUG_MEM_EM - -unsigned long RTtranslateMemory(unsigned long input, unsigned long origAddr, unsigned long currAddr) { - /* Standard nonblocking synchronization construct */ - int index; - int min; - int max; - volatile int guard2; - (void)origAddr; /* unused parameter */ - (void)currAddr; /* unused parameter */ - - do { - guard2 = RTmemoryMapper.guard2; - min = 0; - max = (RTmemoryMapper.size - 1); - do { - index = min + ((max - min) / 2); - if (input >= RTmemoryMapper.elements[index].lo) { - /* Either correct or too low */ - if (input < RTmemoryMapper.elements[index].hi) { - break; - } - else { - min = index + 1; - } - } - else { - /* Too high */ - max = index - 1; - } - } while (min <= max); - } while (guard2 != RTmemoryMapper.guard1); - - if (min <= max) { - if (RTmemoryMapper.elements[index].shift == -1) { - return 0; - } - else { - return input + RTmemoryMapper.elements[index].shift; - } - } - else { - return input; - } - return 0; -} - -unsigned long RTtranslateMemoryShift(unsigned long input, unsigned long origAddr, unsigned long currAddr) { - /* Standard nonblocking synchronization construct */ - int index; - int min; - int max; - volatile int guard2; - (void)origAddr; /* unused parameter */ - (void)currAddr; /* unused parameter */ - - do { - guard2 = RTmemoryMapper.guard2; - min = 0; - max = (RTmemoryMapper.size - 1); - do { - index = min + ((max - min) / 2); - if (input >= RTmemoryMapper.elements[index].lo) { - /* Either correct or too low */ - if (input < RTmemoryMapper.elements[index].hi) { - break; - } - else { - min = index + 1; - } - } - else { - /* Too high */ - max = index - 1; - } - } while (min <= max); - } while (guard2 != RTmemoryMapper.guard1); - - if (min <= max) { - if (RTmemoryMapper.elements[index].shift == -1) { - fflush(stOut); - return -1 * input; - } - else { - return RTmemoryMapper.elements[index].shift; - } - } - else { - return 0; - } - return 0; -} - -int RTuntranslatedEntryCounter; -extern void DYNINST_stopThread (void * pointAddr, void *callBackID, void *flags, void *calculation); - -void RThandleShadow(void *direction, void *pointAddr, void *callbackID, void *flags, void *calculation) { - (void)calculation; /* unused parameter */ - if ((int)((long) direction) == 1) { - if (RTuntranslatedEntryCounter == 0) { - // Entering a system call... - DYNINST_stopThread(pointAddr, callbackID, flags, (void *)1); - } - RTuntranslatedEntryCounter++; - } - else { - if (RTuntranslatedEntryCounter > 0) { - RTuntranslatedEntryCounter--; - } - if (RTuntranslatedEntryCounter == 0) { - DYNINST_stopThread(pointAddr, callbackID, flags, (void *)0); - } - } -} diff --git a/parseAPI/src/StackTamperVisitor.h b/parseAPI/src/StackTamperVisitor.h index b30c374161..4bcb563175 100644 --- a/parseAPI/src/StackTamperVisitor.h +++ b/parseAPI/src/StackTamperVisitor.h @@ -35,7 +35,7 @@ #include #include -#include "dataflowAPI/h/Absloc.h" // MemEmulator analysis +#include "dataflowAPI/h/Absloc.h" #include "dataflowAPI/h/AbslocInterface.h" // And more of the same #include "dataflowAPI/h/SymEval.h" // Variable class #include "common/h/DynAST.h" From 780d7d1246c405f51a58c8945b3dd25876d73e74 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 9 Nov 2021 21:48:09 -0600 Subject: [PATCH 037/505] Remove PCProcess::getDeadCode This was disabled by ab24c9bf0 in 2012. Because it was replaced with an 'assert(0)', it's safe to say no one has used it since it was disabled. --- dyninstAPI/src/BPatch_process.C | 2 - dyninstAPI/src/dynProcess.C | 179 -------------------------------- dyninstAPI/src/dynProcess.h | 7 -- 3 files changed, 188 deletions(-) diff --git a/dyninstAPI/src/BPatch_process.C b/dyninstAPI/src/BPatch_process.C index 2085a51984..cad51d86c0 100644 --- a/dyninstAPI/src/BPatch_process.C +++ b/dyninstAPI/src/BPatch_process.C @@ -1501,12 +1501,10 @@ void BPatch_process::overwriteAnalysisUpdate /*2. remove dead code from the analysis */ - // identify the dead code (see getDeadCode for its parameter definitions) std::set delBlocks; std::map > elimMap; std::list deadFuncs; std::map newFuncEntries; - llproc->getDeadCode(owBBIs,delBlocks,elimMap,deadFuncs,newFuncEntries); // remove instrumentation from affected funcs beginInsertionSet(); diff --git a/dyninstAPI/src/dynProcess.C b/dyninstAPI/src/dynProcess.C index ddef4e343b..a34026dda1 100644 --- a/dyninstAPI/src/dynProcess.C +++ b/dyninstAPI/src/dynProcess.C @@ -2276,185 +2276,6 @@ void PCProcess::updateCodeBytes assert(objRanges.size() <= 1); //o/w analysis code may not be prepared for other cases } -#if 0 -static void otherFuncBlocks(func_instance *func, - const set &blks, - set &otherBlks) -{ - const func_instance::BlockSet &allBlocks = - func->blocks(); - for (func_instance::BlockSet::const_iterator bit = - allBlocks.begin(); - bit != allBlocks.end(); - bit++) - { - if (blks.end() == blks.find((*bit))) { - otherBlks.insert((*bit)); - } - } -} -#endif - -/* Summary - * Given a list of overwritten blocks, find blocks that are unreachable, - * functions that have been overwritten at their entry points and can go away, - * and new function entry for functions that are being overwritten while still - * executing - * - * variables - * f: the overwritten function - * ow: the set of overwritten blocks - * ex: the set of blocks that are executing on the call stack that were not overwritten - * - * primitives - * R(b,s): yields set of reachable blocks for collection of blocks b, starting - * at seed blocks s. - * B(f): the blocks pertaining to function f - * EP(f): the entry point of function f - * F(b): functions containing block b - * - * calculations - * Elim(f): the set of blocks to eliminate from function f. - * Elim(f) = B(f) - R( B(f)-ow , EP(f) ) - * New(f): new function entry candidates for f's surviving blocks. - * If EB(f) not in ow(f), empty set - * Else, all blocks b such that ( b in ex AND e in Elim(f) ) - * Eliminate New(f) elements that have ancestors in New(f) - * Del(f): A block can be deleted altogether if - * forall f in F(b): B(F) - R( B(f) - ow , New(f) U (EP(f) \ ow(f)) U (ex(f) intersect Elim(f)) ), - * b is not in the resulting set. In other words, b is not - * reachable from non-overwritten blocks in the functions in - * which it appears, seeded at new entry points and original - * non-overwritten entry points to the function, and at f's - * executing blocks if these will be deleted from the - * function (they constitute an entry point into the function - * even if they've been overwritten). - * DeadF: the set of functions that have no executing blocks - * and were overwritten in their entry blocks - * EP(f) in ow(f) AND ex(f) is empty - */ -bool PCProcess::getDeadCode -( const std::list & /*owBlocks*/, // input - std::set & /*delBlocks*/, //output: Del(for all f) - std::map > & /*elimMap*/, //output: elimF - std::list & /*deadFuncs*/, //output: DeadF - std::map & /*newFuncEntries*/) //output: newF -{ - assert(0 && "TODO"); - return false; -#if 0 - // do a stackwalk to see which functions are currently executing - std::vector > stacks; - std::vector
pcs; - if (!walkStacks(stacks)) { - inst_printf("%s[%d]: walkStacks failed\n", FILE__, __LINE__); - return false; - } - for (unsigned i = 0; i < stacks.size(); ++i) { - std::vector &stack = stacks[i]; - for (unsigned int j = 0; j < stack.size(); ++j) { - Address origPC = 0; - vector dontcare1; - baseTramp *dontcare2 = NULL; - getAddrInfo(stack[j].getPC(), origPC, dontcare1, dontcare2); - pcs.push_back( origPC ); - } - } - - // group blocks by function - std::map > deadMap; - std::set deadEntryFuncs; - std::set
owBlockAddrs; - for (list::const_iterator bIter=owBlocks.begin(); - bIter != owBlocks.end(); - bIter++) - { - deadMap[(*bIter)->func()].insert(*bIter); - owBlockAddrs.insert((*bIter)->start()); - if ((*bIter)->llb() == (*bIter)->func()->ifunc()->entry()) { - deadEntryFuncs.insert((*bIter)->func()); - } - } - - // for each modified function, calculate ex, ElimF, NewF, DelF - for (map >::iterator fit = deadMap.begin(); - fit != deadMap.end(); - fit++) - { - - // calculate ex(f) - set execBlocks; - for (unsigned pidx=0; pidx < pcs.size(); pidx++) { - std::set candidateBlocks; - fit->first->findBlocksByAddr(pcs[pidx], candidateBlocks); - for (std::set::iterator cb_iter = candidateBlocks.begin(); - cb_iter != candidateBlocks.end(); ++cb_iter) { - block_instance *exB = *cb_iter; - if (exB && owBlockAddrs.end() == owBlockAddrs.find( - exB->start())) - { - execBlocks.insert(exB); - } - } - } - - // calculate DeadF: EP(f) in ow and EP(f) not in ex - if ( 0 == execBlocks.size() ) { - set::iterator eb = fit->second.find( - fit->first->entryBlock()); - if (eb != fit->second.end()) { - deadFuncs.push_back(fit->first); - continue;// treated specially, don't need elimF, NewF or DelF - } - } - - // calculate elimF - set keepF; - list seedBs; - seedBs.push_back(fit->first->entryBlock()); - fit->first->getReachableBlocks(fit->second, seedBs, keepF); - otherFuncBlocks(fit->first, keepF, elimMap[fit->first]); - - // calculate NewF - if (deadEntryFuncs.end() != deadEntryFuncs.find(fit->first)) { - for (set::iterator bit = execBlocks.begin(); - bit != execBlocks.end(); - bit++) - { - if (elimMap[fit->first].end() != - elimMap[fit->first].find(*bit)) - { - newFuncEntries[fit->first] = *bit; - break; // just need one candidate - } - } - } - - // calculate Del(f) - seedBs.clear(); - if (deadEntryFuncs.end() == deadEntryFuncs.find(fit->first)) { - seedBs.push_back(fit->first->entryBlock()); - } - else if (newFuncEntries.end() != newFuncEntries.find(fit->first)) { - seedBs.push_back(newFuncEntries[fit->first]); - } - for (set::iterator xit = execBlocks.begin(); - xit != execBlocks.end(); - xit++) - { - if (elimMap[fit->first].end() != elimMap[fit->first].find(*xit)) { - seedBs.push_back(*xit); - } - } - keepF.clear(); - fit->first->getReachableBlocks(fit->second, seedBs, keepF); - otherFuncBlocks(fit->first, keepF, delBlocks); - - } - - return true; -#endif -} // will flush addresses of all addresses in the specified range, if the // range is null, flush all addresses from the cache. Also flush diff --git a/dyninstAPI/src/dynProcess.h b/dyninstAPI/src/dynProcess.h index 34585aae6b..ecd07c3ac3 100644 --- a/dyninstAPI/src/dynProcess.h +++ b/dyninstAPI/src/dynProcess.h @@ -232,13 +232,6 @@ class PCProcess : public AddressSpace { std::list >& overwrittenRegions,//output std::list &writtenBBIs);//output - bool getDeadCode - ( const std::list &owBlocks, // input - std::set &delBlocks, //output: Del(for all f) - std::map > &elimMap, //output: elimF - std::list &deadFuncs, //output: DeadF - std::map &newFuncEntries); //output: newF - // synch modified mapped objects with current memory contents mapped_object *createObjectNoFile(Address addr); void updateCodeBytes( const std::list > &owRegions); From b054059fc4b51e496f76db61af077d7e0dc45c74 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 9 Nov 2021 21:50:29 -0600 Subject: [PATCH 038/505] Remove thread registration functions from PCProcess These were disabled in 2015 by 0e791cce8. --- dyninstAPI/src/dynProcess.C | 106 ------------------------------------ 1 file changed, 106 deletions(-) diff --git a/dyninstAPI/src/dynProcess.C b/dyninstAPI/src/dynProcess.C index a34026dda1..36879e3919 100644 --- a/dyninstAPI/src/dynProcess.C +++ b/dyninstAPI/src/dynProcess.C @@ -1364,112 +1364,6 @@ bool PCProcess::removeThread(dynthread_t tid) { } extern Address getVarAddr(PCProcess *proc, std::string str); -#if 0 -bool PCProcess::registerThread(PCThread *thread) { - - Address tid = (Address) thread->getTid(); - Address index = thread->getIndex(); - - Address tmp = 0; - unsigned ptrsize = getAddressWidth(); - - if (tid == (Address) -1) return true; - if (index == (Address) -1) return true; - - if (!initializeRegisterThread()) { - startup_printf("%s[%d]: initializeRegisterThread failed\n", - FILE__, __LINE__); - - return false; - } - // Must match the "hash" algorithm used in the RT lib - int working = (tid % thread_hash_size); - while(1) { - tmp = 0; - if (!readDataWord(( void *)(thread_hash_indices + (working * ptrsize)), ptrsize, &tmp, false)) { - startup_printf("%s[%d]: Failed to read index slot, base 0x%lx, active 0x%lx\n", FILE__, __LINE__, - thread_hash_indices, thread_hash_indices + (working * ptrsize)); - return false; - } - startup_printf("%s[%d]: value of tid in slot %p is 0x%lx\n", - FILE__, __LINE__, thread_hash_indices + (working * ptrsize), tmp); - if (ptrsize == 4 && tmp == 0xffffffff) { - int index_int = (int) index; - int tid_int = (int) tid; - startup_printf("%s[%d]: writing %d to %p and 0x%x to %p\n", - FILE__, __LINE__, index_int, thread_hash_indices + (working * ptrsize), - tid_int, thread_hash_tids + (working * ptrsize)); - writeDataWord(( void *)(thread_hash_indices + (working * ptrsize)), ptrsize, &index_int); - writeDataWord(( void *)(thread_hash_tids + (working * ptrsize)), ptrsize, &tid_int); - break; - } - else if (ptrsize == 8 && tmp == (Address)-1) { - writeDataWord(( void *)(thread_hash_indices + (working * ptrsize)), ptrsize, &index); - writeDataWord(( void *)(thread_hash_tids + (working * ptrsize)), ptrsize, &tid); - break; - } - working++; - if (working == thread_hash_size) working = 0; - if (working == (int) (tid % thread_hash_size)) { - startup_printf("%s[%d]: Failed to find empty tid slot\n", FILE__, __LINE__); - return false; - } - } - return true; -} -bool PCProcess::unregisterThread(PCThread *thread) { - return true; - Address tid = (Address) thread->getTid(); - Address index = thread->getIndex(); - Address tmp = 0; - - unsigned ptrsize = getAddressWidth(); - if (tid == (Address) -1) return true; - if (index == (Address) -1) return true; - - initializeRegisterThread(); - - // Must match the "hash" algorithm used in the RT lib - int working = tid % thread_hash_size; - while(1) { - tmp = 0; - if (!readDataWord((void *)(thread_hash_tids + (working * ptrsize)), ptrsize, &tmp, false)) return false; - if (tmp == tid) { - // Zero it out - tmp = (Address) -1; - writeDataWord(( void *)(thread_hash_indices + (working * ptrsize)), ptrsize, &tmp); - break; - } - working++; - if (working == thread_hash_size) working = 0; - if (working == (int) (tid % thread_hash_size)) return false; - } - return true; -} - -bool PCProcess::initializeRegisterThread() { -// if (thread_hash_tids) return true; - - unsigned ptrsize = getAddressWidth(); - - Address tidPtr = getVarAddr(this, "DYNINST_thread_hash_tids"); - if (!tidPtr) return false; - Address indexPtr = getVarAddr(this, "DYNINST_thread_hash_indices"); - if (!indexPtr) return false; - Address sizePtr = getVarAddr(this, "DYNINST_thread_hash_size"); - if (!sizePtr) return false; - - if (!readDataWord((const void *)tidPtr, ptrsize, &thread_hash_tids, false)) return false; - - if (!readDataWord((const void *)indexPtr, ptrsize, &thread_hash_indices, false)) return false; - - if (!readDataWord((const void *)sizePtr, sizeof(int), &thread_hash_size, false)) return false; - - return true; -} -#endif - - void PCProcess::addThread(PCThread *thread) { pair::iterator, bool> result; result = threadsByTid_.insert(make_pair(thread->getTid(), thread)); From ed7cba87686cd6e3bec30e68129630bfe71cb9bc Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 9 Nov 2021 21:51:53 -0600 Subject: [PATCH 039/505] Remove unregisterTrapMapping from PCProcess This was disabled in 2013 by fce999f48. --- dyninstAPI/src/dynProcess.h | 1 - 1 file changed, 1 deletion(-) diff --git a/dyninstAPI/src/dynProcess.h b/dyninstAPI/src/dynProcess.h index ecd07c3ac3..fba8e1bd78 100644 --- a/dyninstAPI/src/dynProcess.h +++ b/dyninstAPI/src/dynProcess.h @@ -282,7 +282,6 @@ class PCProcess : public AddressSpace { virtual bool multithread_capable(bool ignoreIfMtNotSet = false); // platform-specific virtual bool multithread_ready(bool ignoreIfMtNotSet = false); virtual bool needsPIC(); - //virtual bool unregisterTrapMapping(Address from); virtual void addTrap(Address from, Address to, codeGen &gen); virtual void removeTrap(Address from); From 6eb87220db3ab02f3ced5a6748a13222cc449b37 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 10 Nov 2021 13:04:42 -0600 Subject: [PATCH 040/505] Remove AddressSpace::causeTemplateInstantiations (#1149) This was removed by 47c4dfe96 in 2010. Co-authored-by: Tim Haines --- dyninstAPI/src/addressSpace.C | 3 --- dyninstAPI/src/addressSpace.h | 2 -- 2 files changed, 5 deletions(-) diff --git a/dyninstAPI/src/addressSpace.C b/dyninstAPI/src/addressSpace.C index 022d8c2308..3b4cf9eba7 100644 --- a/dyninstAPI/src/addressSpace.C +++ b/dyninstAPI/src/addressSpace.C @@ -1965,9 +1965,6 @@ bool AddressSpace::patchCode(CodeMover::Ptr cm, return true; } -void AddressSpace::causeTemplateInstantiations() { -} - void AddressSpace::getRelocAddrs(Address orig, block_instance *block, func_instance *func, diff --git a/dyninstAPI/src/addressSpace.h b/dyninstAPI/src/addressSpace.h index e0639dfa4f..6a79d2a36e 100644 --- a/dyninstAPI/src/addressSpace.h +++ b/dyninstAPI/src/addressSpace.h @@ -463,8 +463,6 @@ class AddressSpace : public InstructionSource { RelocInfo &relocInfo); // defensive mode code // - void causeTemplateInstantiations(); - // Debugging method bool inEmulatedCode(Address addr); From e672765f31dfaf5bcfa69ab4b7681de8657daf47 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 10 Nov 2021 21:00:37 -0600 Subject: [PATCH 041/505] Improve docs for lookup functions in CodeObject (#1147) Add wording to improve clarity about when a CodeRegion is strictly needed when using the lookup functions. Co-authored-by: Tim Haines --- parseAPI/doc/API/CodeObject.tex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/parseAPI/doc/API/CodeObject.tex b/parseAPI/doc/API/CodeObject.tex index 52325cfa54..a1bda62143 100644 --- a/parseAPI/doc/API/CodeObject.tex +++ b/parseAPI/doc/API/CodeObject.tex @@ -92,6 +92,15 @@ \subsection{Class CodeObject} \end{apient} \apidesc{Speculatively parse the indicated region of the binary using the specified technique to find likely function entry points, enabled on the x86 and x86-64 platforms.} +\fbox{\begin{minipage}[t]{1\columnwidth}% +\begin{center}{\textbf{A note on using the lookup functions}}\end{center}\\ +When parsing binary objects such as .o files and static libraries which may have multiple +\texttt{CodeRegion} objects that overlap in the address space, the \texttt{CodeRegion} argument +\textit{must} be passed. For executable binaries and shared libraries that are fully linked, there +is no ambiguity, and {\scshape null} can be passed. The only exception is \texttt{findFuncsByBlock} +which always requires a valid \texttt{CodeRegion}.% +\end{minipage}} + \begin{apient} Function * findFuncByEntry(CodeRegion * cr, Address entry) From 98248b4deef459f8f890f35ab5f97ab938451ba4 Mon Sep 17 00:00:00 2001 From: John M Mellor-Crummey Date: Sun, 11 Jul 2021 22:16:26 -0500 Subject: [PATCH 042/505] first draft of support for nvidia enhanced line maps --- symtabAPI/src/Object-elf.C | 155 ++++++++++++++++++++++++++++++++----- 1 file changed, 136 insertions(+), 19 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 1f1f242ce5..e41ff640f9 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -47,6 +47,8 @@ #include "dwarfWalker.h" +#include "Object-elf.h" + using namespace Dyninst; using namespace Dyninst::SymtabAPI; using namespace Dyninst::DwarfDyninst; @@ -3357,7 +3359,9 @@ class open_statement { end_addr = noAddress(); line_number = 0; column_number = 0; - } + context = 0; + funcname_offset = 0; + }; bool sameFileLineColumn(const open_statement &rhs) { return ((string_table_index == rhs.string_table_index) && (line_number == rhs.line_number) && @@ -3369,12 +3373,31 @@ class open_statement { end_addr = rhs.end_addr; line_number = rhs.line_number; column_number = rhs.column_number; - } + context = rhs.context; + funcname_offset = rhs.funcname_offset; + }; friend std::ostream& operator<<(std::ostream& os, const open_statement& st) { - os << hex << st.start_addr << " " << st.end_addr << " line:" - << dec << st.line_number << " file:" << st.string_table_index << " col:" << st.column_number << std::endl; + st.dump(os, 0, true); return os; + }; + const char * str(Region *r, unsigned int offset) const { + return ((char *) r->getPtrToRawData()) + offset; + }; + void dump(std::ostream& os, Region *debug_str, bool addrRange) const { + // unsigned int o = 0x2868; + // unsigned int o = 0x2868 + 0x500; + unsigned int o = 0x2868 + 0x700; + if (addrRange) os << "[" << hex << start_addr - o << ", " << end_addr - o << "]"; + else os << "inlined at"; + os << " file:" << string_table_index; + os << " line:" << dec << line_number; + os << " col:" << column_number; + if (context) { + os << " context " << context; + os << " function name " << str(debug_str, funcname_offset); + } + os << std::endl; } public: Dwarf_Word string_table_index; @@ -3382,6 +3405,8 @@ class open_statement { Dwarf_Addr end_addr; int line_number; int column_number; + unsigned int context; + unsigned int funcname_offset; }; @@ -3564,8 +3589,46 @@ void Object::parseLineInfoForCU(Dwarf_Die cuDIE, LineInformation* li_for_module) } -LineInformation* Object::parseLineInfoForObject(StringTablePtr strings_) +void +dumpLineContext +( + Region *debug_str, + open_statement &saved_statement, + vector &inline_context ) { + cout << "--" << endl; + saved_statement.dump(cout, debug_str, true); + if (inline_context.size()) { + for (unsigned int i = inline_context.size(); i > 0; i--) { + inline_context[i -1].dump(cout, debug_str, false); + } + } +} + +bool +replaceInlineContext +( + vector &inline_context, + open_statement &saved_statement +) { + if (saved_statement.context) { + for (unsigned int i = 0; i < inline_context.size(); i++) { + if (inline_context[i].context == saved_statement.context) { + inline_context.erase(inline_context.begin() + i, inline_context.end()); + return true; + } + } + } + return false; +} + + +LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) +{ + Region *debug_str; + std::string debug_str_secname = ".debug_str"; + bool has_debug_str = associated_symtab->findRegion(debug_str, debug_str_secname); + if (li_for_object) { // The line information for this object has been parsed. return li_for_object; @@ -3626,9 +3689,11 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings_) Offset baseAddr = getBaseAddress(); - /* Iterate over this CU's source lines. */ - open_statement current_line; + /* Iterate over this object's source lines. */ + open_statement saved_statement; open_statement current_statement; + + vector inline_context; for(size_t i = 0; i < lineCount; i++ ) { auto line = dwarf_onesrcline(lineBuffer, i); @@ -3698,21 +3763,73 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings_) cout << "dwarf_linebeginstatement failed" << endl; continue; } - if (current_line.uninitialized()) { - current_line = current_statement; + + status = dwarf_linecontext(line, ¤t_statement.context); + if(status != 0) { + cout << "dwarf_linecontext failed" << endl; + continue; + } + + status = dwarf_linefunctionname(line, ¤t_statement.funcname_offset); + if(status != 0) { + cout << "dwarf_linefunctionname failed" << endl; + continue; + } + + if (saved_statement.uninitialized()) { + saved_statement = current_statement; } else { - current_line.end_addr = current_statement.start_addr; - if (!current_line.sameFileLineColumn(current_statement) || - isEndOfSequence) { - li_for_object->addLine((unsigned int)(current_line.string_table_index), - (unsigned int)(current_line.line_number), - (unsigned int)(current_line.column_number), - current_line.start_addr, current_line.end_addr); - current_line = current_statement; - } + bool pushed = false; + saved_statement.end_addr = current_statement.start_addr; + // need to be comparing saved with prev not current with saved + if (1 || current_statement.context != saved_statement.context) { + // if (current_statement.context) { + if (saved_statement.context || current_statement.context) { + // if current_statement has a non-zero context, then saved_statement + // is part of the inlined_at context for the saved_statement. there + // are two cases to consider: + // 1) if the context of saved_statement is the same as the context of + // a statement that is already part of the inlined context, then update + // the matching item in the inlined context with saved_statement and + // remove any nested items. + // 2) if saved_statement.context doesn't match anything already in the + // inlined context, add it to the end. + + bool replaced = replaceInlineContext(inline_context, saved_statement); + + if (current_statement.start_addr != saved_statement.start_addr) + dumpLineContext(debug_str, saved_statement, inline_context); + + // if (!replaced) inline_context.push_back(saved_statement); + inline_context.push_back(saved_statement); + + pushed = true; + } + } + if ((!saved_statement.sameFileLineColumn(current_statement) || + isEndOfSequence)) { + // if we didn't add saved_statement to the inlined context, then + // the context for the saved_statement needs to be emitted. + if (!pushed) { + dumpLineContext(debug_str, saved_statement, inline_context); + } + + li_for_object->addLine((unsigned int)(saved_statement.string_table_index), + (unsigned int)(saved_statement.line_number), + (unsigned int)(saved_statement.column_number), + saved_statement.start_addr, saved_statement.end_addr); + + // a statement with context 0 clears all inlined context. remove all + // inlined context entries in the vector. + if (current_statement.context == 0) { + inline_context.resize(0); + } + + saved_statement = current_statement; + } } if (isEndOfSequence) { - current_line.reset(); + saved_statement.reset(); } } } From dc45b755e00867ebe3fef4c22bab3c470b6adacf Mon Sep 17 00:00:00 2001 From: John M Mellor-Crummey Date: Mon, 12 Jul 2021 10:54:15 -0500 Subject: [PATCH 043/505] cleaning up code for ingesting nvidia extended linemaps --- symtabAPI/src/Object-elf.C | 155 ++++++++++++++++++++----------------- 1 file changed, 86 insertions(+), 69 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index e41ff640f9..36952f6089 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3385,19 +3385,20 @@ class open_statement { return ((char *) r->getPtrToRawData()) + offset; }; void dump(std::ostream& os, Region *debug_str, bool addrRange) const { - // unsigned int o = 0x2868; - // unsigned int o = 0x2868 + 0x500; - unsigned int o = 0x2868 + 0x700; - if (addrRange) os << "[" << hex << start_addr - o << ", " << end_addr - o << "]"; - else os << "inlined at"; - os << " file:" << string_table_index; - os << " line:" << dec << line_number; - os << " col:" << column_number; - if (context) { - os << " context " << context; - os << " function name " << str(debug_str, funcname_offset); - } - os << std::endl; + // to facilitate comparison with nvdisasm output, where each function starts at 0, + // set o to an offset that makes a function of interest report addresses that + // match its unrelocated offsets reported by nvdisasm + unsigned int o = 0; + if (addrRange) os << "[" << hex << start_addr - o << ", " << end_addr - o << "]"; + else os << " inlined at"; + os << " file:" << string_table_index; + os << " line:" << dec << line_number; + os << " col:" << column_number; + if (context) { + os << " context " << context; + os << " function name " << str(debug_str, funcname_offset); + } + os << std::endl; } public: Dwarf_Word string_table_index; @@ -3590,12 +3591,13 @@ void Object::parseLineInfoForCU(Dwarf_Die cuDIE, LineInformation* li_for_module) void -dumpLineContext +dumpLineWithInlineContext ( Region *debug_str, - open_statement &saved_statement, - vector &inline_context ) { - cout << "--" << endl; + open_statement &saved_statement, + vector &inline_context +) +{ saved_statement.dump(cout, debug_str, true); if (inline_context.size()) { for (unsigned int i = inline_context.size(); i > 0; i--) { @@ -3604,22 +3606,50 @@ dumpLineContext } } -bool -replaceInlineContext + +void +recordLine +( + LineInformation *li_for_object, + Region *debug_str, + open_statement &saved_statement, + vector &inline_context +) +{ + // record line map entry + li_for_object->addLine((unsigned int)(saved_statement.string_table_index), + (unsigned int)(saved_statement.line_number), + (unsigned int)(saved_statement.column_number), + saved_statement.start_addr, saved_statement.end_addr); + + // record inline context, if any + if (inline_context.size()) { + for (unsigned int i = inline_context.size(); i > 0; i--) { + // record inline context for inline_context[i -1] + } + } + + dumpLineWithInlineContext(debug_str, saved_statement, inline_context); +} + + +void +deleteAnyMatchingInlinedContext ( vector &inline_context, open_statement &saved_statement -) +) { - if (saved_statement.context) { + unsigned int c = saved_statement.context; + if (c) { for (unsigned int i = 0; i < inline_context.size(); i++) { - if (inline_context[i].context == saved_statement.context) { + if (inline_context[i].context == c) { + // delete the entry matching c and any nexted entries inline_context.erase(inline_context.begin() + i, inline_context.end()); - return true; + return; } } } - return false; } @@ -3633,8 +3663,8 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) // The line information for this object has been parsed. return li_for_object; } - li_for_object = new LineInformation(); - li_for_object->setStrings(strings_); + li_for_object = new LineInformation(); + li_for_object->setStrings(strings); /* Initialize libdwarf. */ Dwarf **dbg_ptr = dwarf->type_dbg(); if (!dbg_ptr) return li_for_object; @@ -3696,7 +3726,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) vector inline_context; for(size_t i = 0; i < lineCount; i++ ) { - auto line = dwarf_onesrcline(lineBuffer, i); + auto line = dwarf_onesrcline(lineBuffer, i); /* Acquire the line number, address, source, and end of sequence flag. */ status = dwarf_lineno(line, ¤t_statement.line_number); @@ -3723,7 +3753,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) if (result) current_statement.start_addr = new_lineAddr; } - + //status = dwarf_line_srcfileno(line, ¤t_statement.string_table_index); const char * file_name = dwarf_linesrc(line, NULL, NULL); if ( !file_name ) { @@ -3736,9 +3766,9 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) int index = -1; for(size_t idx = offset; idx < strings->size(); ++idx) { - if((*strings)[idx].str==file_name_str) - { - index = idx; + if((*strings)[idx].str==file_name_str) + { + index = idx; break; } } @@ -3781,47 +3811,34 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) } else { bool pushed = false; saved_statement.end_addr = current_statement.start_addr; - // need to be comparing saved with prev not current with saved - if (1 || current_statement.context != saved_statement.context) { - // if (current_statement.context) { - if (saved_statement.context || current_statement.context) { - // if current_statement has a non-zero context, then saved_statement - // is part of the inlined_at context for the saved_statement. there - // are two cases to consider: - // 1) if the context of saved_statement is the same as the context of - // a statement that is already part of the inlined context, then update - // the matching item in the inlined context with saved_statement and - // remove any nested items. - // 2) if saved_statement.context doesn't match anything already in the - // inlined context, add it to the end. - - bool replaced = replaceInlineContext(inline_context, saved_statement); - - if (current_statement.start_addr != saved_statement.start_addr) - dumpLineContext(debug_str, saved_statement, inline_context); - - // if (!replaced) inline_context.push_back(saved_statement); - inline_context.push_back(saved_statement); - - pushed = true; - } - } + if (saved_statement.context || current_statement.context) { + // if saved_statement.context is non-zero, we need to remove any previously + // recorded inlined context that matches saved_statement.context or is + // nexted inside the matching context + deleteAnyMatchingInlinedContext(inline_context, saved_statement); + + // record saved_statement and its inlining context if any addresses fall + // between saved_statement and current_statement. + if (current_statement.start_addr != saved_statement.start_addr) + recordLine (li_for_object, debug_str, saved_statement, inline_context); + + // record saved_statement as inlined context for current_statement` + inline_context.push_back(saved_statement); + + pushed = true; + } if ((!saved_statement.sameFileLineColumn(current_statement) || isEndOfSequence)) { - // if we didn't add saved_statement to the inlined context, then - // the context for the saved_statement needs to be emitted. - if (!pushed) { - dumpLineContext(debug_str, saved_statement, inline_context); - } - li_for_object->addLine((unsigned int)(saved_statement.string_table_index), - (unsigned int)(saved_statement.line_number), - (unsigned int)(saved_statement.column_number), - saved_statement.start_addr, saved_statement.end_addr); + if (!pushed) { + // we didn't add saved_statement to the inlined context of current_statement, + // so a line map entry for saved_statement needs to be recorded + recordLine (li_for_object, debug_str, saved_statement, inline_context); + } - // a statement with context 0 clears all inlined context. remove all - // inlined context entries in the vector. if (current_statement.context == 0) { + // a line map statement with context 0 clears all inlined context. + // remove all inlined context entries in the vector. inline_context.resize(0); } @@ -3831,7 +3848,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) if (isEndOfSequence) { saved_statement.reset(); } - } + } } return li_for_object; } @@ -3913,7 +3930,7 @@ bool Object::convertDebugOffset(Offset off, Offset &new_off) int hi = DebugSectionMap.size(); if (hi == 0) { - // DebugSectionMap is empty; handle this case separately + // DebugSectionMap is empty; handle this case separately DbgSectionMapSorted = true; return true; } From 0f9750a9e4b03b958b1fa76516aec1432a0a7739 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 20 Jul 2021 10:48:18 -0500 Subject: [PATCH 044/505] Start to construct inlining call chains using Nvidia's extended line map --- symtabAPI/h/Function.h | 1 + symtabAPI/h/Symtab.h | 1 + symtabAPI/src/Object-elf.C | 153 +++++++++++++++++----------------- symtabAPI/src/Object-elf.h | 84 +++++++++++++++++++ symtabAPI/src/Symtab-lookup.C | 10 +-- 5 files changed, 167 insertions(+), 82 deletions(-) diff --git a/symtabAPI/h/Function.h b/symtabAPI/h/Function.h index 231db3ea23..037382966c 100644 --- a/symtabAPI/h/Function.h +++ b/symtabAPI/h/Function.h @@ -192,6 +192,7 @@ class SYMTAB_EXPORT InlinedFunction : public FunctionBase { friend class Symtab; friend class DwarfWalker; + friend class Object; protected: InlinedFunction(FunctionBase *parent); ~InlinedFunction(); diff --git a/symtabAPI/h/Symtab.h b/symtabAPI/h/Symtab.h index 84788b3e28..71e3a338c9 100644 --- a/symtabAPI/h/Symtab.h +++ b/symtabAPI/h/Symtab.h @@ -105,6 +105,7 @@ class SYMTAB_EXPORT Symtab : public LookupInterface, friend class emitWin; friend class Aggregate; friend class relocationEntry; + friend class Object; public: diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 36952f6089..36d1472374 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -2484,7 +2484,8 @@ Object::Object(MappedFile *mf_, bool, void (*err_func)(const char *), EEL(false), did_open(false), obj_type_(obj_Unknown), DbgSectionMapSorted(false), - soname_(NULL) + soname_(NULL), + containingFunc(nullptr) { li_for_object = NULL; @@ -3346,71 +3347,6 @@ const char *Object::interpreter_name() const { return interpreter_name_; } -class open_statement { - public: - open_statement() { reset(); } - Dwarf_Addr noAddress() { return (Dwarf_Addr) ~0; } - bool uninitialized() { - return start_addr == noAddress(); - } - void reset() { - string_table_index = -1; - start_addr = noAddress(); - end_addr = noAddress(); - line_number = 0; - column_number = 0; - context = 0; - funcname_offset = 0; - }; - bool sameFileLineColumn(const open_statement &rhs) { - return ((string_table_index == rhs.string_table_index) && - (line_number == rhs.line_number) && - (column_number == rhs.column_number)); - } - void operator=(const open_statement &rhs) { - string_table_index = rhs.string_table_index; - start_addr = rhs.start_addr; - end_addr = rhs.end_addr; - line_number = rhs.line_number; - column_number = rhs.column_number; - context = rhs.context; - funcname_offset = rhs.funcname_offset; - }; - friend std::ostream& operator<<(std::ostream& os, const open_statement& st) - { - st.dump(os, 0, true); - return os; - }; - const char * str(Region *r, unsigned int offset) const { - return ((char *) r->getPtrToRawData()) + offset; - }; - void dump(std::ostream& os, Region *debug_str, bool addrRange) const { - // to facilitate comparison with nvdisasm output, where each function starts at 0, - // set o to an offset that makes a function of interest report addresses that - // match its unrelocated offsets reported by nvdisasm - unsigned int o = 0; - if (addrRange) os << "[" << hex << start_addr - o << ", " << end_addr - o << "]"; - else os << " inlined at"; - os << " file:" << string_table_index; - os << " line:" << dec << line_number; - os << " col:" << column_number; - if (context) { - os << " context " << context; - os << " function name " << str(debug_str, funcname_offset); - } - os << std::endl; - } - public: - Dwarf_Word string_table_index; - Dwarf_Addr start_addr; - Dwarf_Addr end_addr; - int line_number; - int column_number; - unsigned int context; - unsigned int funcname_offset; -}; - - void Object::parseLineInfoForCU(Dwarf_Die cuDIE, LineInformation* li_for_module) { /* Acquire this CU's source lines. */ @@ -3608,28 +3544,91 @@ dumpLineWithInlineContext void -recordLine +Object::recordLine ( LineInformation *li_for_object, Region *debug_str, open_statement &saved_statement, - vector &inline_context + vector &inline_context, + Symtab* associated_symtab ) -{ +{ // record line map entry li_for_object->addLine((unsigned int)(saved_statement.string_table_index), (unsigned int)(saved_statement.line_number), (unsigned int)(saved_statement.column_number), - saved_statement.start_addr, saved_statement.end_addr); - + saved_statement.start_addr, saved_statement.end_addr); // record inline context, if any if (inline_context.size()) { - for (unsigned int i = inline_context.size(); i > 0; i--) { - // record inline context for inline_context[i -1] + + // We only do a lookup when the current function does not contain the current range + if (containingFunc == nullptr || + containingFunc->getOffset() >= saved_statement.start_addr || + containingFunc->getOffset() + containingFunc->getSize() < saved_statement.start_addr) { + + associated_symtab->getContainingFunction(saved_statement.start_addr, containingFunc); + if (containingFunc == nullptr) { + fprintf(stderr, "Cannot find function contains range [%lx, %lx)\n", saved_statement.start_addr, saved_statement.end_addr); + assert(0); + } + } + + FunctionBase* cur = static_cast(containingFunc); + FunctionBase* outer_most = cur; + StringTablePtr strings(li_for_object->getStrings()); + const char* func_name_table = static_cast(debug_str->getPtrToRawData()); + + // Record all inline call sites + for (unsigned int i = 0; i < inline_context.size() - 1; ++i) { + cur = recordAnInlinedFunction( + inline_context[i], + inline_context[i + 1], + strings, + cur, + func_name_table, + saved_statement.start_addr, + saved_statement.end_addr); } + recordAnInlinedFunction( + *(inline_context.rbegin()), + saved_statement, + strings, + cur, + func_name_table, + saved_statement.start_addr, + saved_statement.end_addr); + + associated_symtab->addFunctionRange(outer_most, 0); } - dumpLineWithInlineContext(debug_str, saved_statement, inline_context); + //dumpLineWithInlineContext(debug_str, saved_statement, inline_context); +} + +InlinedFunction* Object::recordAnInlinedFunction( + open_statement& caller, + open_statement& callee, + StringTablePtr strings, + FunctionBase *parent, + const char* func_name_table, + Dwarf_Addr start, + Dwarf_Addr end +) { + InlinedFunction *ifunc = new InlinedFunction(parent); + + // Use the filename and line number from the caller + const string& src_file = (*strings)[caller.string_table_index].str; + ifunc->callsite_file_number = strings->project<0>(strings->get<1>().insert(StringTableEntry(src_file,"")).first) - strings->begin(); + ifunc->callsite_line = caller.line_number; + + // Use the function name from the callee + const char* func_name_ptr = func_name_table + callee.funcname_offset; + ifunc->addMangledName(func_name_ptr, true, true); + + ifunc->ranges.emplace_back(FuncRange(start, end - start, ifunc)); + + fprintf(stderr, "%p %p [%lx, %lx)", ifunc, parent, start, end); + fprintf(stderr, " func name %s, line number %d, file name %s, func name index %lx\n", func_name_ptr, ifunc->callsite_line, src_file.c_str(), caller.string_table_index); + return ifunc; } @@ -3803,7 +3802,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) status = dwarf_linefunctionname(line, ¤t_statement.funcname_offset); if(status != 0) { cout << "dwarf_linefunctionname failed" << endl; - continue; + continue; } if (saved_statement.uninitialized()) { @@ -3820,7 +3819,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) // record saved_statement and its inlining context if any addresses fall // between saved_statement and current_statement. if (current_statement.start_addr != saved_statement.start_addr) - recordLine (li_for_object, debug_str, saved_statement, inline_context); + recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); // record saved_statement as inlined context for current_statement` inline_context.push_back(saved_statement); @@ -3833,7 +3832,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) if (!pushed) { // we didn't add saved_statement to the inlined context of current_statement, // so a line map entry for saved_statement needs to be recorded - recordLine (li_for_object, debug_str, saved_statement, inline_context); + recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); } if (current_statement.context == 0) { diff --git a/symtabAPI/src/Object-elf.h b/symtabAPI/src/Object-elf.h index 8a8dbf3511..a2255419e8 100644 --- a/symtabAPI/src/Object-elf.h +++ b/symtabAPI/src/Object-elf.h @@ -77,6 +77,73 @@ class pdElfShdr; class Symtab; class Region; class Object; +class InlinedFunction; + +class open_statement { + public: + open_statement() { reset(); }; + Dwarf_Addr noAddress() { return (Dwarf_Addr) ~0; } + bool uninitialized() { + return start_addr == noAddress(); + }; + void reset() { + string_table_index = -1; + start_addr = noAddress(); + end_addr = noAddress(); + line_number = 0; + column_number = 0; + context = 0; + funcname_offset = 0; + }; + bool sameFileLineColumn(const open_statement &rhs) { + return ((string_table_index == rhs.string_table_index) && + (line_number == rhs.line_number) && + (column_number == rhs.column_number)); + }; + void operator=(const open_statement &rhs) { + string_table_index = rhs.string_table_index; + start_addr = rhs.start_addr; + end_addr = rhs.end_addr; + line_number = rhs.line_number; + column_number = rhs.column_number; + context = rhs.context; + funcname_offset = rhs.funcname_offset; + }; + friend std::ostream& operator<<(std::ostream& os, const open_statement& st) + { + st.dump(os, 0, true); + return os; + }; + const char * str(Region *r, unsigned int offset) const { + return ((char *) r->getPtrToRawData()) + offset; + }; + void dump(std::ostream& os, Region *debug_str, bool addrRange) const { + // to facilitate comparison with nvdisasm output, where each function starts at 0, + // set o to an offset that makes a function of interest report addresses that + // match its unrelocated offsets reported by nvdisasm + unsigned int o = 0; + if (addrRange) os << "[" << std::hex << start_addr - o << ", " << end_addr - o << "]"; + else os << " inlined at"; + os << " file:" << string_table_index; + os << " line:" << std::dec << line_number; + os << " col:" << column_number; + if (context) { + os << " context " << context; + os << " function name " << str(debug_str, funcname_offset); + os << " function name offset " << std::hex << funcname_offset << std::dec; + } + os << std::endl; + } + public: + Dwarf_Word string_table_index; + Dwarf_Addr start_addr; + Dwarf_Addr end_addr; + int line_number; + int column_number; + unsigned int context; + unsigned int funcname_offset; +}; + class Object : public AObject { @@ -349,6 +416,22 @@ class Object : public AObject private: void parseLineInfoForCU(Module::DebugInfoT cuDIE, LineInformation* li); + void recordLine( + LineInformation *li_for_object, + Region *debug_str, + open_statement &saved_statement, + std::vector &inline_context, + Symtab* associated_symtab + ); + InlinedFunction* recordAnInlinedFunction( + open_statement&, + open_statement&, + StringTablePtr, + FunctionBase*, + const char*, + Dwarf_Addr, + Dwarf_Addr + ); LineInformation* li_for_object; LineInformation* parseLineInfoForObject(StringTablePtr strings); @@ -422,6 +505,7 @@ class Object : public AObject std::vector > new_dynamic_entries; private: const char* soname_; + Function* containingFunc; }; diff --git a/symtabAPI/src/Symtab-lookup.C b/symtabAPI/src/Symtab-lookup.C index 0f5d88c3db..8545baf14f 100644 --- a/symtabAPI/src/Symtab-lookup.C +++ b/symtabAPI/src/Symtab-lookup.C @@ -722,13 +722,13 @@ bool Symtab::addFunctionRange(FunctionBase *func, Dyninst::Offset next_start) for (FuncRangeCollection::iterator i = ranges.begin(); i != ranges.end(); i++) { FuncRange &range = *i; if (range.low() == sym_low && range.high() == sym_high) - found_sym_range = true; + found_sym_range = true; func_lookup->insert(&range); } //Add symbol range to func_lookup, if present and not already added if (!found_sym_range && sym_low && sym_high) { - FuncRange *frange = new FuncRange(sym_low, sym_high - sym_low, func); + FuncRange *frange = new FuncRange(sym_low, sym_high - sym_low, func); func_lookup->insert(frange); } @@ -825,7 +825,7 @@ bool Symtab::getContainingFunction(Offset offset, Function* &func) } bool Symtab::getContainingInlinedFunction(Offset offset, FunctionBase* &func) -{ +{ if (!func_lookup) parseFunctionRanges(); assert(func_lookup); @@ -851,7 +851,7 @@ bool Symtab::getContainingInlinedFunction(Offset offset, FunctionBase* &func) // Therefore, here we heuristicaly prefer the deeper call chain // to reflect inlining information. int maxDepth = 0; - for (auto range : ranges) { + for (auto range : ranges) { FunctionBase *cur_func = range->container; int depth = 0; while (cur_func) { @@ -862,7 +862,7 @@ bool Symtab::getContainingInlinedFunction(Offset offset, FunctionBase* &func) maxDepth = depth; func = range->container; } - } + } return true; } From 818d3c6441865bc2cc7b79ea15df7ec3fb3e9faf Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 27 Jul 2021 11:23:42 -0500 Subject: [PATCH 045/505] Inline context from nvidia extended line map identifies an inlined call path --- symtabAPI/src/Object-elf.C | 24 +++++++++++++----------- symtabAPI/src/Object-elf.h | 3 +++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 36d1472374..d563b6a4cb 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3601,7 +3601,7 @@ Object::recordLine associated_symtab->addFunctionRange(outer_most, 0); } - //dumpLineWithInlineContext(debug_str, saved_statement, inline_context); + dumpLineWithInlineContext(debug_str, saved_statement, inline_context); } InlinedFunction* Object::recordAnInlinedFunction( @@ -3626,27 +3626,28 @@ InlinedFunction* Object::recordAnInlinedFunction( ifunc->ranges.emplace_back(FuncRange(start, end - start, ifunc)); - fprintf(stderr, "%p %p [%lx, %lx)", ifunc, parent, start, end); - fprintf(stderr, " func name %s, line number %d, file name %s, func name index %lx\n", func_name_ptr, ifunc->callsite_line, src_file.c_str(), caller.string_table_index); + //fprintf(stderr, "%p %p [%lx, %lx)", ifunc, parent, start, end); + //fprintf(stderr, " func name %s, line number %d, file name %s, func name index %lx\n", func_name_ptr, ifunc->callsite_line, src_file.c_str(), caller.string_table_index); return ifunc; } void -deleteAnyMatchingInlinedContext +Object::lookupInlinedContext ( vector &inline_context, open_statement &saved_statement ) { + // If we encounter an unseen inline context, + // the current inlining call path is stored with the inline context id. + // Otherwise, we replace current context with the stored one unsigned int c = saved_statement.context; if (c) { - for (unsigned int i = 0; i < inline_context.size(); i++) { - if (inline_context[i].context == c) { - // delete the entry matching c and any nexted entries - inline_context.erase(inline_context.begin() + i, inline_context.end()); - return; - } + if (contextMap.find(c) == contextMap.end()) { + contextMap[c] = inline_context; + } else { + inline_context = contextMap[c]; } } } @@ -3814,7 +3815,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) // if saved_statement.context is non-zero, we need to remove any previously // recorded inlined context that matches saved_statement.context or is // nexted inside the matching context - deleteAnyMatchingInlinedContext(inline_context, saved_statement); + lookupInlinedContext(inline_context, saved_statement); // record saved_statement and its inlining context if any addresses fall // between saved_statement and current_statement. @@ -3846,6 +3847,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) } if (isEndOfSequence) { saved_statement.reset(); + contextMap.clear(); } } } diff --git a/symtabAPI/src/Object-elf.h b/symtabAPI/src/Object-elf.h index a2255419e8..d7cc038021 100644 --- a/symtabAPI/src/Object-elf.h +++ b/symtabAPI/src/Object-elf.h @@ -432,6 +432,8 @@ class Object : public AObject Dwarf_Addr, Dwarf_Addr ); + + void lookupInlinedContext( std::vector &, open_statement &); LineInformation* li_for_object; LineInformation* parseLineInfoForObject(StringTablePtr strings); @@ -506,6 +508,7 @@ class Object : public AObject private: const char* soname_; Function* containingFunc; + std::unordered_map > contextMap; }; From 490c093550eb5722b43ce430f1ed42975aa01586 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Thu, 19 Aug 2021 20:57:13 -0500 Subject: [PATCH 046/505] 1. Handle unrelocated line map entries for CUBIN 2. Remove redundant addFunctionRange call to improve performance 3. Add some debug logging --- symtabAPI/src/Object-elf.C | 116 ++++++++++++++++++++----------------- 1 file changed, 64 insertions(+), 52 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index d563b6a4cb..6d8d229d1e 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3552,7 +3552,8 @@ Object::recordLine vector &inline_context, Symtab* associated_symtab ) -{ +{ + lineinfo_printf("Object::recordLine for [%lx, %lx)\n", saved_statement.start_addr, saved_statement.end_addr); // record line map entry li_for_object->addLine((unsigned int)(saved_statement.string_table_index), (unsigned int)(saved_statement.line_number), @@ -3565,11 +3566,14 @@ Object::recordLine if (containingFunc == nullptr || containingFunc->getOffset() >= saved_statement.start_addr || containingFunc->getOffset() + containingFunc->getSize() < saved_statement.start_addr) { - + if (containingFunc != nullptr) { + associated_symtab->addFunctionRange(containingFunc, 0); + } + associated_symtab->getContainingFunction(saved_statement.start_addr, containingFunc); if (containingFunc == nullptr) { - fprintf(stderr, "Cannot find function contains range [%lx, %lx)\n", saved_statement.start_addr, saved_statement.end_addr); - assert(0); + lineinfo_printf("Cannot find function contains range [%lx, %lx)\n", saved_statement.start_addr, saved_statement.end_addr); + return; } } @@ -3597,11 +3601,11 @@ Object::recordLine func_name_table, saved_statement.start_addr, saved_statement.end_addr); - - associated_symtab->addFunctionRange(outer_most, 0); } - dumpLineWithInlineContext(debug_str, saved_statement, inline_context); + if (common_debug_lineinfo) { + dumpLineWithInlineContext(debug_str, saved_statement, inline_context); + } } InlinedFunction* Object::recordAnInlinedFunction( @@ -3625,9 +3629,6 @@ InlinedFunction* Object::recordAnInlinedFunction( ifunc->addMangledName(func_name_ptr, true, true); ifunc->ranges.emplace_back(FuncRange(start, end - start, ifunc)); - - //fprintf(stderr, "%p %p [%lx, %lx)", ifunc, parent, start, end); - //fprintf(stderr, " func name %s, line number %d, file name %s, func name index %lx\n", func_name_ptr, ifunc->callsite_line, src_file.c_str(), caller.string_table_index); return ifunc; } @@ -3724,6 +3725,11 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) open_statement current_statement; vector inline_context; + // The line map may contain un-relocated entries, + // which often corresponds to dead code. + // If we find line map entries with zero address, + // we ignore them until the end of sequence + bool isZeroAddress = false; for(size_t i = 0; i < lineCount; i++ ) { auto line = dwarf_onesrcline(lineBuffer, i); @@ -3744,6 +3750,10 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) cout << "dwarf_lineaddr failed" << endl; continue; } + if (current_statement.start_addr == 0) { + isZeroAddress = true; + containingFunc = nullptr; + } current_statement.start_addr += baseAddr; @@ -3804,51 +3814,53 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) if(status != 0) { cout << "dwarf_linefunctionname failed" << endl; continue; - } + } - if (saved_statement.uninitialized()) { - saved_statement = current_statement; - } else { - bool pushed = false; - saved_statement.end_addr = current_statement.start_addr; - if (saved_statement.context || current_statement.context) { - // if saved_statement.context is non-zero, we need to remove any previously - // recorded inlined context that matches saved_statement.context or is - // nexted inside the matching context - lookupInlinedContext(inline_context, saved_statement); - - // record saved_statement and its inlining context if any addresses fall - // between saved_statement and current_statement. - if (current_statement.start_addr != saved_statement.start_addr) - recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); - - // record saved_statement as inlined context for current_statement` - inline_context.push_back(saved_statement); - - pushed = true; - } - if ((!saved_statement.sameFileLineColumn(current_statement) || - isEndOfSequence)) { - - if (!pushed) { - // we didn't add saved_statement to the inlined context of current_statement, - // so a line map entry for saved_statement needs to be recorded - recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); - } + if (!isZeroAddress && saved_statement.uninitialized()) { + saved_statement = current_statement; + } else if (!isZeroAddress) { + bool pushed = false; + saved_statement.end_addr = current_statement.start_addr; + if (saved_statement.context || current_statement.context) { + // if saved_statement.context is non-zero, we need to remove any previously + // recorded inlined context that matches saved_statement.context or is + // nexted inside the matching context + lookupInlinedContext(inline_context, saved_statement); + + // record saved_statement and its inlining context if any addresses fall + // between saved_statement and current_statement. + if (current_statement.start_addr != saved_statement.start_addr) + recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); + + // record saved_statement as inlined context for current_statement` + inline_context.push_back(saved_statement); + pushed = true; + } + if ((!saved_statement.sameFileLineColumn(current_statement) || isEndOfSequence)) { - if (current_statement.context == 0) { - // a line map statement with context 0 clears all inlined context. - // remove all inlined context entries in the vector. - inline_context.resize(0); - } + if (!pushed) { + // we didn't add saved_statement to the inlined context of current_statement, + // so a line map entry for saved_statement needs to be recorded + recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); + } - saved_statement = current_statement; - } - } - if (isEndOfSequence) { - saved_statement.reset(); - contextMap.clear(); - } + if (current_statement.context == 0) { + // a line map statement with context 0 clears all inlined context. + // remove all inlined context entries in the vector. + inline_context.resize(0); + } + + saved_statement = current_statement; + } + } + if (isEndOfSequence) { + isZeroAddress = false; + saved_statement.reset(); + contextMap.clear(); + if (containingFunc != nullptr) { + associated_symtab->addFunctionRange(containingFunc, 0); + } + } } } return li_for_object; From 7c571dbda212615b42d896d1b080a1669d6a1291 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 24 Aug 2021 14:06:46 -0500 Subject: [PATCH 047/505] Fix compilation warning and add cmake option ENABLE_NVIDIA_EXT_LINE_MAP --- cmake/options.cmake | 1 + symtabAPI/CMakeLists.txt | 2 ++ symtabAPI/src/Object-elf.C | 40 ++++++++++++++++++++------------------ symtabAPI/src/Object-elf.h | 18 ++++++++--------- 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/cmake/options.cmake b/cmake/options.cmake index 1f46d90df2..081025e798 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -16,6 +16,7 @@ option(BUILD_DOCS "Build manuals from LaTeX sources" ON) option (ENABLE_LTO "Enable Link-Time Optimization" OFF) option(ENABLE_DEBUGINFOD "Enable debuginfod support" OFF) +option(ENABLE_NVIDIA_EXT_LINE_MAP "Enable debuginfod support" OFF) # Some global on/off switches if (LIGHTWEIGHT_SYMTAB) diff --git a/symtabAPI/CMakeLists.txt b/symtabAPI/CMakeLists.txt index 4ca6896f83..1a15d9ff56 100644 --- a/symtabAPI/CMakeLists.txt +++ b/symtabAPI/CMakeLists.txt @@ -102,6 +102,8 @@ endif() dyninst_library(symtabAPI ${DEPS}) +target_compile_definitions(symtabAPI PRIVATE $<$:ENABLE_NVIDIA_EXT_LINE_MAP>) + if(TARGET ElfUtils) add_dependencies(symtabAPI ElfUtils) endif() diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 6d8d229d1e..a0ff8d6b7d 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3546,11 +3546,9 @@ dumpLineWithInlineContext void Object::recordLine ( - LineInformation *li_for_object, Region *debug_str, open_statement &saved_statement, - vector &inline_context, - Symtab* associated_symtab + vector &inline_context ) { lineinfo_printf("Object::recordLine for [%lx, %lx)\n", saved_statement.start_addr, saved_statement.end_addr); @@ -3560,7 +3558,7 @@ Object::recordLine (unsigned int)(saved_statement.column_number), saved_statement.start_addr, saved_statement.end_addr); // record inline context, if any - if (inline_context.size()) { + if (debug_str != nullptr && inline_context.size()) { // We only do a lookup when the current function does not contain the current range if (containingFunc == nullptr || @@ -3578,7 +3576,6 @@ Object::recordLine } FunctionBase* cur = static_cast(containingFunc); - FunctionBase* outer_most = cur; StringTablePtr strings(li_for_object->getStrings()); const char* func_name_table = static_cast(debug_str->getPtrToRawData()); @@ -3656,9 +3653,9 @@ Object::lookupInlinedContext LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) { - Region *debug_str; + Region *debug_str = nullptr; std::string debug_str_secname = ".debug_str"; - bool has_debug_str = associated_symtab->findRegion(debug_str, debug_str_secname); + associated_symtab->findRegion(debug_str, debug_str_secname); if (li_for_object) { // The line information for this object has been parsed. @@ -3686,7 +3683,6 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) &files, &fileCount, &lineBuffer, &lineCount)) == 0) { - StringTablePtr strings(li_for_object->getStrings()); boost::unique_lock l(strings->lock); size_t offset = strings->size(); @@ -3804,17 +3800,23 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) continue; } - status = dwarf_linecontext(line, ¤t_statement.context); - if(status != 0) { - cout << "dwarf_linecontext failed" << endl; - continue; - } +#if defined (ENABLE_NVIDIA_EXT_LINE_MAP) + // Only attempt to parse inlining context and inline function name + // when there is a .debug_str section. + if (debug_str != nullptr) { + status = dwarf_linecontext(line, ¤t_statement.context); + if(status != 0) { + cout << "dwarf_linecontext failed" << endl; + continue; + } - status = dwarf_linefunctionname(line, ¤t_statement.funcname_offset); - if(status != 0) { - cout << "dwarf_linefunctionname failed" << endl; - continue; + status = dwarf_linefunctionname(line, ¤t_statement.funcname_offset); + if(status != 0) { + cout << "dwarf_linefunctionname failed" << endl; + continue; + } } +#endif if (!isZeroAddress && saved_statement.uninitialized()) { saved_statement = current_statement; @@ -3830,7 +3832,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) // record saved_statement and its inlining context if any addresses fall // between saved_statement and current_statement. if (current_statement.start_addr != saved_statement.start_addr) - recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); + recordLine (debug_str, saved_statement, inline_context); // record saved_statement as inlined context for current_statement` inline_context.push_back(saved_statement); @@ -3841,7 +3843,7 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) if (!pushed) { // we didn't add saved_statement to the inlined context of current_statement, // so a line map entry for saved_statement needs to be recorded - recordLine (li_for_object, debug_str, saved_statement, inline_context, associated_symtab); + recordLine (debug_str, saved_statement, inline_context); } if (current_statement.context == 0) { diff --git a/symtabAPI/src/Object-elf.h b/symtabAPI/src/Object-elf.h index d7cc038021..f92a83f351 100644 --- a/symtabAPI/src/Object-elf.h +++ b/symtabAPI/src/Object-elf.h @@ -81,11 +81,11 @@ class InlinedFunction; class open_statement { public: - open_statement() { reset(); }; + open_statement() { reset(); } Dwarf_Addr noAddress() { return (Dwarf_Addr) ~0; } bool uninitialized() { return start_addr == noAddress(); - }; + } void reset() { string_table_index = -1; start_addr = noAddress(); @@ -94,12 +94,12 @@ class open_statement { column_number = 0; context = 0; funcname_offset = 0; - }; + } bool sameFileLineColumn(const open_statement &rhs) { return ((string_table_index == rhs.string_table_index) && (line_number == rhs.line_number) && (column_number == rhs.column_number)); - }; + } void operator=(const open_statement &rhs) { string_table_index = rhs.string_table_index; start_addr = rhs.start_addr; @@ -108,15 +108,15 @@ class open_statement { column_number = rhs.column_number; context = rhs.context; funcname_offset = rhs.funcname_offset; - }; + } friend std::ostream& operator<<(std::ostream& os, const open_statement& st) { st.dump(os, 0, true); return os; - }; + } const char * str(Region *r, unsigned int offset) const { return ((char *) r->getPtrToRawData()) + offset; - }; + } void dump(std::ostream& os, Region *debug_str, bool addrRange) const { // to facilitate comparison with nvdisasm output, where each function starts at 0, // set o to an offset that makes a function of interest report addresses that @@ -417,11 +417,9 @@ class Object : public AObject private: void parseLineInfoForCU(Module::DebugInfoT cuDIE, LineInformation* li); void recordLine( - LineInformation *li_for_object, Region *debug_str, open_statement &saved_statement, - std::vector &inline_context, - Symtab* associated_symtab + std::vector &inline_context ); InlinedFunction* recordAnInlinedFunction( open_statement&, From 5378d240934e8f70043ecd33291d9c825be8a461 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Thu, 26 Aug 2021 10:51:00 -0500 Subject: [PATCH 048/505] Add compile-time checking to see if elfutils support nvidia extended line map when the user have specified ENABLE_NVIDIA_EXT_LINE_MAP --- symtabAPI/src/Object-elf.C | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index a0ff8d6b7d..59a5b97447 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -49,6 +49,8 @@ #include "Object-elf.h" +#include "elfutils/version.h" + using namespace Dyninst; using namespace Dyninst::SymtabAPI; using namespace Dyninst::DwarfDyninst; @@ -3799,8 +3801,13 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) cout << "dwarf_linebeginstatement failed" << endl; continue; } - +// ENABLE_NVIDIA_EXT_LINE_MAP is defined if the Dyninst +// user wants to have nvidia ex line map support #if defined (ENABLE_NVIDIA_EXT_LINE_MAP) + +// NVIDIA_LINEMAP_INLINING_EXTENSIONS is defined if +// the underlying elfutils supports nvidia ex line map +#if defined (NVIDIA_LINEMAP_INLINING_EXTENSIONS) // Only attempt to parse inlining context and inline function name // when there is a .debug_str section. if (debug_str != nullptr) { @@ -3816,7 +3823,11 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) continue; } } -#endif +#else + #error The specified elfutils is not capable of handling nvidia extended line map. Please reconfigure elfutils with "--enable-nvidia-linemap" +#endif // NVIDIA_LINEMAP_INLINING_EXTENSIONS + +#endif // ENABLE_NVIDIA_EXT_LINE_MAP if (!isZeroAddress && saved_statement.uninitialized()) { saved_statement = current_statement; From 2543b18e509bd725cdc8e66f7338f1656ca5094e Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Sat, 6 Nov 2021 15:43:17 -0500 Subject: [PATCH 049/505] Adjust interface changes in elfutils regarding NVIDIA extended line map --- symtabAPI/src/Object-elf.C | 34 ++++++++++------------------------ symtabAPI/src/Object-elf.h | 26 +++++++++++--------------- 2 files changed, 21 insertions(+), 39 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 59a5b97447..f7dc7cfb77 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3531,15 +3531,14 @@ void Object::parseLineInfoForCU(Dwarf_Die cuDIE, LineInformation* li_for_module) void dumpLineWithInlineContext ( - Region *debug_str, open_statement &saved_statement, vector &inline_context ) { - saved_statement.dump(cout, debug_str, true); + saved_statement.dump(cout, true); if (inline_context.size()) { for (unsigned int i = inline_context.size(); i > 0; i--) { - inline_context[i -1].dump(cout, debug_str, false); + inline_context[i -1].dump(cout, false); } } } @@ -3579,7 +3578,6 @@ Object::recordLine FunctionBase* cur = static_cast(containingFunc); StringTablePtr strings(li_for_object->getStrings()); - const char* func_name_table = static_cast(debug_str->getPtrToRawData()); // Record all inline call sites for (unsigned int i = 0; i < inline_context.size() - 1; ++i) { @@ -3588,7 +3586,6 @@ Object::recordLine inline_context[i + 1], strings, cur, - func_name_table, saved_statement.start_addr, saved_statement.end_addr); } @@ -3597,13 +3594,12 @@ Object::recordLine saved_statement, strings, cur, - func_name_table, saved_statement.start_addr, saved_statement.end_addr); } if (common_debug_lineinfo) { - dumpLineWithInlineContext(debug_str, saved_statement, inline_context); + dumpLineWithInlineContext(saved_statement, inline_context); } } @@ -3612,7 +3608,6 @@ InlinedFunction* Object::recordAnInlinedFunction( open_statement& callee, StringTablePtr strings, FunctionBase *parent, - const char* func_name_table, Dwarf_Addr start, Dwarf_Addr end ) { @@ -3624,9 +3619,9 @@ InlinedFunction* Object::recordAnInlinedFunction( ifunc->callsite_line = caller.line_number; // Use the function name from the callee - const char* func_name_ptr = func_name_table + callee.funcname_offset; - ifunc->addMangledName(func_name_ptr, true, true); - + if (callee.funcname != nullptr) { + ifunc->addMangledName(callee.funcname, true, true); + } ifunc->ranges.emplace_back(FuncRange(start, end - start, ifunc)); return ifunc; } @@ -3642,8 +3637,8 @@ Object::lookupInlinedContext // If we encounter an unseen inline context, // the current inlining call path is stored with the inline context id. // Otherwise, we replace current context with the stored one - unsigned int c = saved_statement.context; - if (c) { + void* c = (void*)saved_statement.context; + if (c != nullptr) { if (contextMap.find(c) == contextMap.end()) { contextMap[c] = inline_context; } else { @@ -3811,17 +3806,8 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) // Only attempt to parse inlining context and inline function name // when there is a .debug_str section. if (debug_str != nullptr) { - status = dwarf_linecontext(line, ¤t_statement.context); - if(status != 0) { - cout << "dwarf_linecontext failed" << endl; - continue; - } - - status = dwarf_linefunctionname(line, ¤t_statement.funcname_offset); - if(status != 0) { - cout << "dwarf_linefunctionname failed" << endl; - continue; - } + current_statement.context = dwarf_linecontext(lineBuffer, line); + current_statement.funcname = dwarf_linefunctionname(dbg, line); } #else #error The specified elfutils is not capable of handling nvidia extended line map. Please reconfigure elfutils with "--enable-nvidia-linemap" diff --git a/symtabAPI/src/Object-elf.h b/symtabAPI/src/Object-elf.h index f92a83f351..69b9fa8596 100644 --- a/symtabAPI/src/Object-elf.h +++ b/symtabAPI/src/Object-elf.h @@ -92,8 +92,8 @@ class open_statement { end_addr = noAddress(); line_number = 0; column_number = 0; - context = 0; - funcname_offset = 0; + context = nullptr; + funcname = nullptr; } bool sameFileLineColumn(const open_statement &rhs) { return ((string_table_index == rhs.string_table_index) && @@ -107,17 +107,15 @@ class open_statement { line_number = rhs.line_number; column_number = rhs.column_number; context = rhs.context; - funcname_offset = rhs.funcname_offset; + funcname = rhs.funcname; } friend std::ostream& operator<<(std::ostream& os, const open_statement& st) { - st.dump(os, 0, true); + st.dump(os, true); return os; } - const char * str(Region *r, unsigned int offset) const { - return ((char *) r->getPtrToRawData()) + offset; - } - void dump(std::ostream& os, Region *debug_str, bool addrRange) const { + + void dump(std::ostream& os, bool addrRange) const { // to facilitate comparison with nvdisasm output, where each function starts at 0, // set o to an offset that makes a function of interest report addresses that // match its unrelocated offsets reported by nvdisasm @@ -127,10 +125,9 @@ class open_statement { os << " file:" << string_table_index; os << " line:" << std::dec << line_number; os << " col:" << column_number; - if (context) { + if (context != nullptr) { os << " context " << context; - os << " function name " << str(debug_str, funcname_offset); - os << " function name offset " << std::hex << funcname_offset << std::dec; + os << " function name " << funcname; } os << std::endl; } @@ -140,8 +137,8 @@ class open_statement { Dwarf_Addr end_addr; int line_number; int column_number; - unsigned int context; - unsigned int funcname_offset; + Dwarf_Line* context; + const char* funcname; }; @@ -426,7 +423,6 @@ class Object : public AObject open_statement&, StringTablePtr, FunctionBase*, - const char*, Dwarf_Addr, Dwarf_Addr ); @@ -506,7 +502,7 @@ class Object : public AObject private: const char* soname_; Function* containingFunc; - std::unordered_map > contextMap; + std::unordered_map > contextMap; }; From 07fbe1167780f64ea09e09f44b9a7b96c0370f04 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Wed, 10 Nov 2021 15:55:58 -0600 Subject: [PATCH 050/505] Add CMake test to check if libdw supports NVIDIA extended line map --- cmake/ElfUtils.cmake | 10 ++++++++++ cmake/options.cmake | 2 +- symtabAPI/src/Object-elf.C | 8 -------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/cmake/ElfUtils.cmake b/cmake/ElfUtils.cmake index ec895c3a7a..975e361e04 100644 --- a/cmake/ElfUtils.cmake +++ b/cmake/ElfUtils.cmake @@ -166,3 +166,13 @@ include_directories(${ElfUtils_INCLUDE_DIRS}) message(STATUS "ElfUtils includes: ${ElfUtils_INCLUDE_DIRS}") message(STATUS "ElfUtils library dirs: ${ElfUtils_LIBRARY_DIRS}") message(STATUS "ElfUtils libraries: ${ElfUtils_LIBRARIES}") + +include(CheckSymbolExists) +if(ENABLE_NVIDIA_EXT_LINE_MAP) + set(CMAKE_REQUIRED_INCLUDES ${ElfUtils_INCLUDE_DIRS}) + set(CMAKE_REQUIRED_LIBRARIES ${ElfUtils_LIBRARIES}) + check_symbol_exists(dwarf_linecontext elfutils/libdw.h _has_exmap) + if(NOT _has_exmap) + message(FATAL_ERROR "ElfUtils does not support NVIDIA line maps") + endif() +endif() diff --git a/cmake/options.cmake b/cmake/options.cmake index 081025e798..67e9636a95 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -16,7 +16,7 @@ option(BUILD_DOCS "Build manuals from LaTeX sources" ON) option (ENABLE_LTO "Enable Link-Time Optimization" OFF) option(ENABLE_DEBUGINFOD "Enable debuginfod support" OFF) -option(ENABLE_NVIDIA_EXT_LINE_MAP "Enable debuginfod support" OFF) +option(ENABLE_NVIDIA_EXT_LINE_MAP "Enable support for NVIDIA extended line map" OFF) # Some global on/off switches if (LIGHTWEIGHT_SYMTAB) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index f7dc7cfb77..e15e0a8715 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -49,8 +49,6 @@ #include "Object-elf.h" -#include "elfutils/version.h" - using namespace Dyninst; using namespace Dyninst::SymtabAPI; using namespace Dyninst::DwarfDyninst; @@ -3800,18 +3798,12 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) // user wants to have nvidia ex line map support #if defined (ENABLE_NVIDIA_EXT_LINE_MAP) -// NVIDIA_LINEMAP_INLINING_EXTENSIONS is defined if -// the underlying elfutils supports nvidia ex line map -#if defined (NVIDIA_LINEMAP_INLINING_EXTENSIONS) // Only attempt to parse inlining context and inline function name // when there is a .debug_str section. if (debug_str != nullptr) { current_statement.context = dwarf_linecontext(lineBuffer, line); current_statement.funcname = dwarf_linefunctionname(dbg, line); } -#else - #error The specified elfutils is not capable of handling nvidia extended line map. Please reconfigure elfutils with "--enable-nvidia-linemap" -#endif // NVIDIA_LINEMAP_INLINING_EXTENSIONS #endif // ENABLE_NVIDIA_EXT_LINE_MAP From 154dde783dbadd502c25b451e10eecdc3b6c732b Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 11 Nov 2021 14:38:48 -0600 Subject: [PATCH 051/505] Documentation update for 12.0.0 release (#1151) Co-authored-by: Tim Haines --- CHANGELOG.md | 157 ++++++++++++++++++++++++++ cmake/shared.cmake | 4 +- common/doc/manual_frontpage.tex | 4 +- dataflowAPI/doc/dataflowAPI.pdf | Bin 349746 -> 349805 bytes dynC_API/doc/dynC_API.pdf | Bin 298452 -> 298512 bytes dyninstAPI/doc/dyninstAPI.docx | Bin 150585 -> 151312 bytes dyninstAPI/doc/dyninstAPI.pdf | Bin 409142 -> 409466 bytes instructionAPI/doc/instructionAPI.pdf | Bin 563367 -> 563428 bytes parseAPI/doc/parseAPI.pdf | Bin 401523 -> 404138 bytes patchAPI/doc/patchAPI.pdf | Bin 614110 -> 614185 bytes proccontrol/doc/proccontrol.docx | Bin 163615 -> 105765 bytes proccontrol/doc/proccontrol.pdf | Bin 854102 -> 355537 bytes stackwalk/doc/stackwalk.pdf | Bin 318531 -> 318588 bytes symtabAPI/doc/symtabAPI.pdf | Bin 452050 -> 457426 bytes 14 files changed, 161 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3809907c4c..84423abe4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,162 @@ # Change Log +## [12.0.0](https://github.com/dyninst/dyninst/tree/v12.0.0) (2021-11-11) +[Full Changelog](https://github.com/dyninst/dyninst/compare/v11.0.1...v12.0.0) + +**GPU Support** + +- Add CMake test to check if libdw supports NVIDIA extended line map +- Adjust interface changes in elfutils regarding NVIDIA extended line map +- Add compile-time checking to see if elfutils support nvidia extended line map when the user have specified ENABLE_NVIDIA_EXT_LINE_MAP +- Fix compilation warning and add cmake option ENABLE_NVIDIA_EXT_LINE_MAP +- 1. Handle unrelocated line map entries for CUBIN 2. Remove redundant addFunctionRange call to improve performance 3. Add some debug logging +- Inline context from nvidia extended line map identifies an inlined call path +- Start to construct inlining call chains using Nvidia's extended line map +- cleaning up code for ingesting nvidia extended linemaps +- first draft of support for nvidia enhanced line maps + +**Enhancements** + +- Load callee's address when the callee and caller are in the same module ([1056](https://github.com/dyninst/dyninst/issues/1056)) +- Give global annotation objects internal linkage and file scope +- Summit fixes ([1108](https://github.com/dyninst/dyninst/issues/1108)) +- Add x86 xsavec instruction ([1074](https://github.com/dyninst/dyninst/issues/1074)) +- Convert TRAMP_\*_OFFSET macros to functions ([1073](https://github.com/dyninst/dyninst/issues/1073)) +- Add x86_64 xrstor instruction ([1070](https://github.com/dyninst/dyninst/issues/1070)) +- Fix insertion operators in BPatch and Symtab ([1069](https://github.com/dyninst/dyninst/issues/1069)) +- Add DWARF4 base type entry encodings to symtabAPI::typeScalar ([1059](https://github.com/dyninst/dyninst/issues/1059)) +- Add xsave instruction ([1055](https://github.com/dyninst/dyninst/issues/1055)) +- Cleanup orphaned code ([1064](https://github.com/dyninst/dyninst/issues/1064)) + +**ABI Breakages** +- Remove AddressSpace::causeTemplateInstantiations ([1149](https://github.com/dyninst/dyninst/issues/1149)) +- Remove unregisterTrapMapping from PCProcess +- Remove thread registration functions from PCProcess +- Remove PCProcess::getDeadCode +- Remove memory emulation ([1146](https://github.com/dyninst/dyninst/issues/1146)) +- Remove unused generateSimple ([1122](https://github.com/dyninst/dyninst/issues/1122)) +- Remove unused variables from Symtab +- Remove special Fortran debug handling +- Remove stabs from symbol demangling +- Remove stabs from BPatch +- Remove stabs from SymtabAPI +- Remove Module::getAllVariables ([1066](https://github.com/dyninst/dyninst/issues/1066)) + +**Documentation** + +- Improve docs for lookup functions in CodeObject ([1147](https://github.com/dyninst/dyninst/issues/1147)) +- Update copyright to 2022 ([1141](https://github.com/dyninst/dyninst/issues/1141)) +- Remove stabs from documentation ([1120](https://github.com/dyninst/dyninst/issues/1120)) + +**Build Changes** +- Remove ppc32 from builds ([1145](https://github.com/dyninst/dyninst/issues/1145)) +- Unify meaning of 'cap_32_64' macro ([1136](https://github.com/dyninst/dyninst/issues/1136)) +- Remove support for Cray CNL ([1137](https://github.com/dyninst/dyninst/issues/1137)) +- Remove xlc macros ([1132](https://github.com/dyninst/dyninst/issues/1132)) +- Remove common/src/language.h ([1131](https://github.com/dyninst/dyninst/issues/1131)) +- Remove usage of arch_ppc and arch_ppc64 ([1129](https://github.com/dyninst/dyninst/issues/1129)) +- Remove usage of x86_64_cnl ([1130](https://github.com/dyninst/dyninst/issues/1130)) +- Remove DynC tests ([1126](https://github.com/dyninst/dyninst/issues/1126)) +- Remove NO_INITIALIZER_LIST_SUPPORT ([1125](https://github.com/dyninst/dyninst/issues/1125)) +- Turn on STERILE_BUILD by default ([1118](https://github.com/dyninst/dyninst/issues/1118)) +- update minimum boost version to 1.70.0 ([1117](https://github.com/dyninst/dyninst/issues/1117)) +- Remove boost_system linking ([1112](https://github.com/dyninst/dyninst/issues/1112)) +- Enforce detection of libiberty ([1099](https://github.com/dyninst/dyninst/issues/1099)) +- fix compiler warnings to work with clang ([1092](https://github.com/dyninst/dyninst/issues/1092)) +- update optimization (-Og) and debug flags (-g3) ([1084](https://github.com/dyninst/dyninst/issues/1084)) +- use the C11 standard for C code in Dyninst ([1086](https://github.com/dyninst/dyninst/issues/1086)) +- Make Dyninst buildable with Clang ([1021](https://github.com/dyninst/dyninst/issues/1021)) +- Remove valueAdded subdirectory completely ([1065](https://github.com/dyninst/dyninst/issues/1065)) +- Remove valueAdded subdirectory ([1063](https://github.com/dyninst/dyninst/issues/1063)) + +**Bug Fixes** +- fix statement-like macros ([1143](https://github.com/dyninst/dyninst/issues/1143)) +- Don't overflow aarch64 float register vector when setting used regs. ([1127](https://github.com/dyninst/dyninst/issues/1127)) +- fix unused const variable warnings +- fix pessimizing std::move warnings +- fix xor operator used as power operator +- fix misleading indentation warning +- fix uninitialized this and variable warnings +- fix float to double promotion warning +- fix unused const variable warnings +- Fix possible buffer overflow in BPatch::processCreate +- Fix uninitialized variable use in DispatcherARM64::iproc_init +- remove executable flag from .dyninst_heap section ([1096](https://github.com/dyninst/dyninst/issues/1096)) +- fix broken cast of a char literal to pointer ([1090](https://github.com/dyninst/dyninst/issues/1090)) +- fix possibly uninitialized variables ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix possible null 'this' pointer dereference ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- prevent maybe uninitialized warning ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- adjust large frame threshold for specific sources ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix deprecated implicit assignment operator ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix buffer overflow ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix duplicate branch condition by removing branch ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix out of bounds array access ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix potentially uninitialized variable warning ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- use unused variable to correct code ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove unused variables ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make printf format and argument types match ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix broken bool expression that was always true ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- add missing initializer braces ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make constructor public so class is usable ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove ';' after in-class method definitions ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- eliminate logical op warning ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make implicit double promotions explicit ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- annotate malloc-like functions ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make method noexcept, so noexcept expr can be true ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- add missing default to switch statement ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix int to void\* cast if sizeof(int) ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix unused vars/params/funcs on aarch64 ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix ambiguous type name warning ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove always true || sub-expression ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix possible sprintf buffer overflow ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- delete unnecessary ambiguous forward class decl ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make destructor virtual if a virtual method exist ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make printf format and argument signedness match ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make printf format and argument types match ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- add compiler annotation to printf-like functions ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix var-tracking-assignments warnings ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove assert(this) as 'this' should never be null ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove obvious null pointer dereference ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix for C++20 removal of std::allocator methods ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make cmp function object operator() a const func ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make Boost and TBB include dirs be system includes ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix shadow variable warning, has other brokenness ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix duplicate branch warnings ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- eliminate switch case fall through warnings ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- explicit base class initialization in constructor ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove default argument from lambda ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove non-C++ compound literal ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- do not compile empty compilation units ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix deprecated implicit copy constructor if dtor ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- add missing copy assignment ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix illegal in C empty brace initialization ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- disable flexible array member warning in C++ ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix discard qualifiers: make char\* -> const char\* ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix non-standard use of \_\_VA_ARGS\_\_ ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove excess semicolons as reported by -pedantic ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix overflow warning for 0x90 assigned to a char ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix illegal function pointer to void\* compare ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove use of GNU binary operator ?: ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove non-C++ variable length arrays ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- make printf format and argument types match ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- fix shadow identifier warnings ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- enable more warnings and test compiler support ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- miscellaneous compiler warning cleanups ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- eliminate switch case fall through warnings ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- add header with compiler annotation macros ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- add missing break statements ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- compute num array elements instead of fixed values ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove dynamic_ and dynamic() from fileDescriptor ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- remove emptyString static members ([1082](https://github.com/dyninst/dyninst/issues/1082)) +- delete unnecessary .DS_Store file ([1082](https://github.com/dyninst/dyninst/issues/1082)) + + ## [11.0.1](https://github.com/dyninst/dyninst/tree/v11.0.1) (2021-06-14) [Full Changelog](https://github.com/dyninst/dyninst/compare/v11.0.0...v11.0.1) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 77ef83499a..38b21b3ea0 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,6 +1,6 @@ -set (DYNINST_MAJOR_VERSION 11) +set (DYNINST_MAJOR_VERSION 12) set (DYNINST_MINOR_VERSION 0) -set (DYNINST_PATCH_VERSION 1) +set (DYNINST_PATCH_VERSION 0) set (SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") set (LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") diff --git a/common/doc/manual_frontpage.tex b/common/doc/manual_frontpage.tex index e61d3c6246..60796bf0f6 100644 --- a/common/doc/manual_frontpage.tex +++ b/common/doc/manual_frontpage.tex @@ -42,9 +42,9 @@ % }; \node [anchor=west,font=\sffamily] (rel1) at ($(origin)+(0.75in,-5.0in)$) - {\fontsize{24}{32}\selectfont 11.0 Release}; + {\fontsize{24}{32}\selectfont 12.0 Release}; \node [anchor=west,font=\sffamily] (rel2) at ($(rel1.west)+(0in,-32pt)$) - {\fontsize{24}{32}\selectfont April 2021}; + {\fontsize{24}{32}\selectfont November 2021}; % Contact information % \matrix (UWaddress) [% diff --git a/dataflowAPI/doc/dataflowAPI.pdf b/dataflowAPI/doc/dataflowAPI.pdf index fce535adb41e080348f42331f03bcaa819101a8b..8f613b960252a3d8b6cf2573eae31507f40d9f7a 100644 GIT binary patch delta 18076 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 Np%nD=oZJZte*>_VQXl{T delta 18035 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 delta 13998 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 DAjz!t diff --git a/dyninstAPI/doc/dyninstAPI.docx b/dyninstAPI/doc/dyninstAPI.docx index 22a814df8f3abc3d0b692a9f8eee997597a0485a..5d53653205522b8d2d2b64037fd946ff4c9c8539 100644 GIT binary patch delta 96267 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

WIH8o<4LDm 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

L)N2_RW{D$s5DsGVH?J?w$P2fiy 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 F`7cklvrGU0 delta 38892 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

}A#%N9-9 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 delta 14872 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

>;z6(Uy~Y06^p1CCspno;qv}j$ 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 z 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
SVRCP^vVsiW#fiSh(dT#F{ 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 diff --git a/proccontrol/doc/proccontrol.pdf b/proccontrol/doc/proccontrol.pdf index ab2c419eee822001ffe0e13aaa26fbc53f6b745b..998285a72ca38d6060c75f2aa6ecd5b0b1c6a0e0 100644 GIT binary patch literal 355537 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

XwR*OwE$iUS+ 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

%Uum_{x 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
D73HmD;(=m+KxW@b2V57~Yt>^DsEb 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�^X{%QWhXU_lQ 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

hhZ@u6(16TB&^_H8MG*=fp7nzJC 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%0A3O@O4mi9cL}b)vl&*>VqybK82TU-=p~zRf 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 HUiJS6TvaUz diff --git a/stackwalk/doc/stackwalk.pdf b/stackwalk/doc/stackwalk.pdf index 6f1b2d3a5864c1fc3d4b81f4ad772ac74be023d2..e6df66670fba79c1d21dbd66d1a3d4fc4e502313 100644 GIT binary patch delta 14037 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 diff --git a/symtabAPI/doc/symtabAPI.pdf b/symtabAPI/doc/symtabAPI.pdf index c92826d7bf4a703fc306e08840b91e5c0d3e8ec9..97e1e64242d59cc370cf3c898c46589de95ed8fc 100644 GIT binary patch delta 137022 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�+eWPUD-p2to7z?@`-Y*?48x7UGe6VO8TPbV*7j`+Gia`^_`2_F^Bjl z^ex0&Pa0JqDSP2>Pzc?T1pDmsb{W~$A)5II=R_biO-)N~^xF?@HIB23G42WuTcwUm zPBk&D%#zeCGtEjUnN1)4R5Ry&_$%X_)^DC+-%YrOt5zctF3C zr6O?w=z$pwZhsRYcG2B0+}&%pbfCPD8#(U>1~=W1;V>NQp$p>%nI>#7dOW|+%hIX~ zQ(kWJ{~7OnB1oZmrem=v=pC2g*(l2OBwChAOc}g=>df8JkpUtDTquz<7}WfFjj)kV zha2p6SgQFF(|xFTRcJp(tgSL=4b5aWfA%I3_yfhVq>w>M20^O{1k>;M!20_2Y_idQ zLZ1$(g+P|^MM-)$=8qa@WAL1^d(&WftsB=5H7=6GRf#s|t~eE|p6imG6%%@Uqm;`! zR|$UV00rV?rDm;`R3%vQe_gTUx(gT2|KhJ%E~$|!FIti9tqo)};*P?g>C>z-0$m~3 z>C<5Mun~9a-M9(xyM~3g!Ir0j|v#M1jYkAW^?V#gk zgWAqI?ytEg-SxF6ca<*=qwae|F^TZUBUOTqXSl9;b|j&6v7VC8vDvndmB;pEk{Ie${A@n(Y=J;BVuVR zNl}VkH`e#ekd{xB$d;m^I+~+&jh6?)@9CAP9n(g5C6C~inHvL=&Qqp<)!~H1f0UNR zf_St7&HE|gnbIazm8e*G!96(LCNb^w>m?!PTVrK^N(8j!5wEVz-_ENxGia{7;r<-^ zZ70lfIh;L_vNM9kpB*dhH8HIrl!SE&%?I1q@J{|U>K6oAETO0rzVZFenEGXZ2y~5W6I<=e+zyo|-oJml-d2}(~x}1`7 z3;sD$jI*Aslf(R_0*eW>3ByDghFda7RGQem>?GnBw6n{5v`+}7u{JUs{S=OgVV&=0 zSgx}^ayiy7X7rDsB02O)4F$C~&kFR^xWG2oK=`^6_-OnO`VwZQZ3DqZMbq~MD zBOGpAp;z-_-qvi+l6M>EZ#I{QvvRpX1ht$!%_VV`7z;^$?A$+{6^}VWqjX9r35TmM z0I2Ws&k|s!Jm#$yieHnrEI=8bIjyXTLfq=s?Qr~Q57EQW+u_3(3UeQF%&E&{E>w*I zHxZi;FevkhNS?wezg%OxrmQP#q6ka^Y7UN;4t9{k>2Qnj73@%z3|J$^6v* z%Y{Ios9@2J7W6)BLPBN=a9+@i=cGTug zZmrNP7>Xf7-_7MVcE@?ZZE2toV9||GDf$`79KqU}lx(Ge~zbec6pMI&;RRTZ=4pNgVf# z1cvjd@-GZv{g-jwIwS+Igo5M6!w=ZH0W!|!V*QJz?&<*0Ta8ozRuFJ_bsLklpAc_; zDEI#@%*Nh&t^rsEgF6l%+uS=6us31M`w#hFl1=NQ4j=&%E^!vZf(QsIaR_1iKlop& z1zKyDF`x$mJ}IWf#~t{{fQtDL{vXcq@1+=OYpo@q01{q9p`}Z^=M|GXoAUKv9Ki99 zjJq}10bmLZn~NVH`=uYQ&6e|z#~6S)(cgv=k>&q>a+p~EUrb)cwmmKf{P6aN`mv+; zEWT8Hf`6VMkap7_fii>N2JSYlWJs~94sICG@#Uwl*FYD8a^TZ#b}eF*EvwXpB!%zV zpoQQ&Bb#qkMisY^rv{2HWDnclHidyg;Ug{iEbk1nq%t!HRf%B*!}S0+$#no)-=7bg zR3OJ!`87aD4xAGX2+M2NAX2;PQ!U_^^tGd`{if!4!4_w!WpM#!x>91NkG>qSi>~(V zA;8H$B^kBjWrAMQVwObUlQ!-XE39@D$r5E#-bNI$gTdMpG%T{3oLkW z)jvb^8%v-A1k=E^sG`|UZkhoLDh`pEVp@?2tF$D{3<61F!FnDA_H~AV2fV9V`xmV)_~U zD$7LfQ-hg3=Fkzhn{c<Pv&ZBlT?2t$j@oR4Z1;r}KD=o?%%%GxG2-E<$9PVH}BYTED92r%LJ#)>!g1hGKo6 z#>k=2x!@QUC zE%4>t2>ZZmB=hdVtz8r1*WaDW_~XOqqfaM1s|#(1@rE8JH|%CT6f~%J98ZWox}&de zKp9FwCS04yu@-*G#g@$yCdIfd=b%n)jL4JSiz)7B^Cuu~&3}R!ofMA~@<6?Rb+=x` z3X!1sFrMO$av#iE;*q&lw0Z8V?A18(r7hDoZ%S&(&bIvv*%Jmv_uN|-< zHHKf|>_0&#nGHXO$S-1ztKn*5u!w6ntzOBdnvIy8xV{&h2;55diqm$XP`_#&c$g+s z2hw+7o=t`xnxzF!br5#ucBGct2?CGAb$9HF7~=Wz{g?c8(u`vZBooACK->R-0m~9+ zy7hXrq1ui*$19&wvECiKBe>?CV$3nLIYsbK;n{I*1j{jKBKW2-Drfgwu5Gn>Lrw`s zHP%f;i@!mT{lU_dXQLL7vzYoYsVWHu8Lmu(WCDr5J2ApKZ zSrT=#`vpQ=?+%~i@m3wili$tE0t1?9yiqm65nDu=PPOAqnMb^?1H{UAg?N*pMxT4v z;=5sJ2ghRP%%f~jV#;R>YwT3Dj`s;rhkU{Kt^nP>ve2g{4PI$P?d5PE5Hq526HvL6 zS=t2L>7n?%Nckxe*<&KFU+#p53_mT04&sm4;(FGyU@4;YgWXK**`d*SfT-1lCa5y9 zcbDJX9svsKQIfWNaTMNpc(3e)>jxncIPF=bC0J7XtyP^3ND>Fj;;R?e>Djv4Dx{ec z^n~wowHJuWZ{@uA*Y0s^mqcuGNA<&q%C7HLz}PD3=#MT6y03XFdt0UgR|cf_CzN@l z`y(Gun9y%(-=?TuYuJ@;f$k1EtQD)qS8z;fmtBnaiNmwV4J2=pKQ~A+nMLfe$;L;G zj^0@-UpJ_1Y+=_A&|3JESJs+L=F^&a(ykDa$XkVxGeyy&q$z3F6@I*RwN=$Jt z4le&W8koj9a$)1r7ub(j`N=|qciB^wpLV++%E7!XgmTDFez*NQDedOHAc6SJKF3Rk z<;pTrLWST)dDp&uAO7^eHo*B$=RyNz`9~^5m1++JZ~=EfH_loyvruaY)OJtb%)blt ztnzz1VxIgUy_G#(e5@O5@_!VcAOK3Q zitOFxdR_~HN8_tw>$fM4%e7YD6{tYxrQtg7^fm4^ek{gOJcL9ZS{qFeN)CcwFa;!0 zvr7fhSTGRDy>6c6EulqARWyK@)HZg`;S6LPXN2I4=IlqK9+D_KFX66xe=OM;v#kEW zmHG1~ZmT~WJ2RSRmYnVl7@mdF_waW!52-5J~Cds=n#4mIXqx^Z3!+4-VOeo?nt=`|{b08Tu%}UA#PDgP( zk8hq)a}?>J+E+y}al}E}B{^0BY*%jkmr!WphCH{gynDx-PI}@Iu;8m4Qqj@i=Ax?$ z^~^e9AOtQahWABHd5LoZ*pZ~}6x+eOD4n8|Vc&9Jyzptn>y7LyDEcb{?Xd;~h>u8L z+n9m$fAfv2xjWhq8W~xz~_u6!io9D+ zdvAGE6C3OeD%Y8^)D|z1m=18sa>g<|a5gw{GNaMQ$Eeigy~fhP$MQnVU`$hT%+abIpk$BH^Q;MG|`RX*tbc5-He?qFEBUU%|Du2~0PSM^AKQo1yd@+c+T%+VL?6$kJo|=Fa zh)P>D5NW_rp`tu8z~#yYsz`W!{4CTlBRviYa6Rt=t?_*;n)?RDCKt#whyklhY=Q=i z{RS>tm+EUN=_S@i@HbU{E0B9sEQul)x@D7ux8^?WEREKhz z8C|JDfaeeO@=K0tEcwY#! zvHK55YFs0cHJR#Bh5hsm4O2B)$pZw7QbVijH3wcij1JTv4zS^{4*S=G$7N?i<##{F z!lFM-6HtFyQQC|&=#d&FK&R(C%16Ar!&Rbi(KOoWAbV_3?`5S8o#$}HrgA%=w%}Jg z#8$h@Ft?7x5h27HsWIIvZpzDn4YIFK%X9q0S_3gAfd?M~BtuuaI`e^%N3kk#h|y>J zZgU%MCko(_rb48IZj$-5$830$>f&xNJLF7+)Fp|MWb~ORR7RK-Wt7m&+5j`8?=1If z88@4>k6|(YwAZMj|7}ch-arHxd!aSHa|6n7jPCqNaO#5v|HGZ~u?2*3n!7E#9F3lA zgQ9hKEsyl)xNbAy>5>7_L}0_|lWw=Ry()$(-)xAn7zKa@TbeDiNj*r$i2_|pqqJkS z)Sgh`Xg_}?KOkgbp|j?gU|ADhaP^=b{#Un~t{6P7@iR%JYXy#FIs*c*CN8+N7zo!) z*J+!vRQIl!yUSillExGvQ(u|sRaW^o8c2`f5{0ch-Xd&ToXY0nC%)J+-c@FJrZcj+ zotO7~LG2naapx>JCukPxBdsvewMdYU@lN(_Fx`Ug_jmaq{qKTJH}nfiD&eswUEd+t z{abh=K7USafAFiCQwneckFIx(YU=Zwk6_p;DkB1>vn!DlfQlL|Vw!WMyN>v8jRqwTxIZAXY>S)OFWS;YhCYaoX+}v&TMnyKih3>I-u9BI(~E zg94gX?QLXjS>4rRVoaf33-D7oQ%!%&1-u#r&w9Gxc1;u4h&LJn8_mjeIxr@wYu_r+ zcu|Df23%klFX9Ex9as&M*T5XH&uhkkBKUW}pGOX?qa%JR9AewCJP^)w+*>_pn<|0i z-wg$xVJ0tx|CoV~?rS)%&S{ah?=e#qQ6*6${$h&&No8eUR8(TaGtc!rnU6zEzrv)% zwt(XZT*x(dvYE>Qep??NM^QOGa6BTvf+6)b642n{7zJUyM_gbK)>6kUdYG0Iij78! zRDsa@E)2dAYVBTvbP{xQDzBpDxZ7!pbw z3C=IHpS<{uW%dq&zCLUS?mpi#l8hZBOv4+<6jtn58n{~);HAc&P}6#3LJ~OH3ua;y z*yL*>@y;q`Oti6xVBefAw<23~$1_pGpBV!kM!0FRFo#`a@4g8JI}=&gZLff7pfyL| zy8Ab65lQ14P{2BCs-7VefszwpJpWerHucVMI7S06AX9QIatQ6qw^n$c#iQL_ z={!LP^0XljgmPz*rBxRP5Xz^#IGnGY4a`!Tt`m1f-O+V-zGBNuoH~u#-Q(&Q5AF2J zfYwMS9oa#E2jOZdiA^yXdMsXs1g;e27#-Vx?RgZH({OkG{PRWUEbq0OQ@2hJC@gRl+q6Dk={X*VbT9mXc=@*2`?K)l zbjXU2ur#2T+$uO6B!SRMI`K}~UOKQ$|p(&BYKMEAPQa}cH1(zFSF zEELC^g(=|2BGMU|8Qke{_q+H>;fw-PJx9lb7Peid$~{t%`S~K0Kav<&zeVro{QQ?0 zI*q9=O(%@;^2>ZNO*PdZ9DoCi04)ui=HrE+-5lr?c4TM}uzse!Zft4+6$Sm(o;Y{a zxnvHV&%InmmIcX*`nnk>+xjcmx#+i~YVRM&oM|HVU$b-c7nC-Jtt{~FUx-Wp$>ulj?kgcV}M^YsqHm?)qmr}AZz{D8yXYeLhy2M zUDA=hEvrG03?JwvdfR*W@Ta0g0B97IvrSLv)B+pBLX9gv=duUFEL-vQ9au8hRi0d; z<6*qVNTI4P(*EEF@%(DSWw)sq`FK=%XQ9Py%K@~X5}~laVi5zrX?lnU|LR8}V447? zMn?cxfI>{zBZGoE2y067#l$0}-xX6I;J}M&Jtkt1>VHgxihOqv=&0eThscG|Z{`-D zPtKEj+Bgd$Y3A=33tpyp8(BT#WZ$3p!)Kw=&%YBGWYJL5c8!H}sA{+x-SZvzaA2qw zB#K(#)R}K08KZZR!MWgE!SiKlHF4dGdzVL$4NR|#KFaDyfkd`h0rLK>o-HZR3?YRP zx#%OH6Ay8`crZk9Ae*j+mk3heBq88|>087Qk-TCf3#J*F zeq>2^o6$AfgKng04(u3iluQmJz8KUZjsD?b7A;$)GohvjTu{1K`Qs5YtVAS~uA50* z!0ILMXhKh)yxO)3MFFXOt;AVhtt;)wC6+uCu3_z&XuQc3n%vGQQ+SW`8hf^gY|n9i zXj+)VxW#3PdJHXEw0 zz!+Kn{piUm#?cMzFE6W3g#ZFM<=Rk~>(ZS*R4@>c(i+8(?|iFvP@--4ND2@%#*)$m zlt&dc?37zKY6^@B?NQ@3448Fb=$yH(%8jE=oW(uY5YBw^@1@%JC6vr2K+{osV7k4% zrmyaMa^br`<#((fVCOFexR+ZX+bn>CZ`K4%GRB=rI0I^q9*{pR0%Y*tK>vXKSm&An zWq#nR6+?2!3B)p!fCe&Zg*n43vXLXtqoC@}F75g7AP)*|=*qY`s>wkH$m%%am|&Ks zN2}n>5V#jH->2bL+{7>S=2UO(0#{GExZZ8cCq*z|*^ZvrYxZSkJov@@8lQhj-f5*a zo~g^_ELg@*Q|oYKGEdpxYkWUP*Gn<=$>L~zm`U6nWv(a3$3LF=v9NBe8cKv5%jaY5)asMNOAhP4!`21XuNvo3qrSCoF0@@JEXb$nkQG- zE6Q|*B}Z*#DfK#=tS8L94>U8spL*Z8ns<9%cV$fND5^pfle%$N&38;GP)DaQB`MW1lzC28H4-~7M+%R|-EXY?bWiZ@~ftcUM0Rf;t6VO(cpppwd{YU0#Sh%l)TzmRheH8_gG>GX4nR$H&H$i;F|qz-KIuzP^jbfT$o8vPI##`tHw87#M`HGqIK;{Sqd6UiOQmF zPsjMsJfa{rsO6ztUP8z9X%G zl;-HN>sUIrJeYdH0&fYBuQ|zajJDQ{P*GL!(B_ z=qIDR%`YpCxJ-_4B`5JkAp;?JJ^oZWf5GU?bLL&P;;m4?9!3S3e^1R5$WQ$yYT0Ra z0h1h~h^xAMRLstU>aY%x4h8XrM!^b$C*9t04Ag(}z<{8r(X#q1L)&Q83Za zCwT8C%dv#0kafZlE)U+gP8trR&;-m+cP&*_XBYq;hv^kcZzNBrSl)8+(Zn4tE`5?Y z%-cH2ybcNl2;i;Y(P$z!TsBVE6Ou2I%hb8MBT*dnBFgcD7-(?}c;NL&#TLno1c!KD z!d}Pm5c2ON1Z0~^j-~-@WmO6$Qrn5;>*1}@+y%)%0kF>_x#p(BmIx3~;LNMmZZWtK zlXRXSvw${9)KAG&XjUW;aLst>l7g^P`gGmA(U?BfC!jDPhphA(>J%H21a%5uGruY- zJ!H+}LVpTtvxWg_atAfZ{tT=faZ`B$McHE5lY~md8smY_L=`8qI8^lDtevGd2pKgM@ztiScsIUJ95>Ca`9X1W8 zw4$O>hyWG5ZT1_`THp`U^ity;?aF@-n0XVUo40=u%D*$&2`sqYtU12{D)vb+g~u6r zn9Tc!$6xN^RB~wJRea&A6N@veK?piHNPnl*ks}+Lz-x+2;lT%<^imHrfvs-CXPtW> zj7r|Yig3&>lNm>;bDq}Y-EyaZ47R>s;V*>NW@RY92K~96JGm9^zAQXd+=M;#m z6rv&C=|b~xcpzMj=x0toE50@L*Yv!GWvms!iCudHkyYUv*KgrMuQ6fJL-IdnCm&Ei zg3|qVZRcb{_CGZ=M@W{xU&K4odtEGDS?3b0GNeK#pbV*V%2p+Y$#wGsqk!VM#NhY> zjRsR+6#lO&(c}ZrQ+bjAbim1fLbm;{JYjQT+r!$4sgzMNj%HZ3i=dq(vsC8)It6yZ z+E|jzYM!sVhlq?WMMPwy0hI6S>Uaqd|NPl^Xu3H!!T zb>bQ48aLvfPdD?dF(02iuN~pvNPqgFseTuXLjC$Ow89meWdbAM3k>@K5A^wbx}B~( z6V1{{%rKSyE0baw<EkJldIWO|2I=flsZih1!0~0Z zmMOt?UQSz5bq1_AkAC z=Ea5(r3?QBsq6?!r9kn0k|_A(Wsi~%K$S)y1lvGVq*&6l4IGEU4hsy*$SP8;h*55B zE?p1{OLF3KyOu0hhf}OzA*av3mkCcBVx0s_lQ$C_jFNc)bF9#S|BT}FRl0hj=tkor zn{8#ECyZAiJorkRABBHc=NzQ9ooM;{v&6PE{;R%lj5eK=&9r@F3RALZ7c~Ebq&%Gj z-4wOx)}wCu3i!>85k6fZp876EbuB|OIh|NpiPNc$qFDtlz5=`F=K=$nQG_a`%g}I< zTQFi?M%{T@V6E^Ey+Etm=CUJN2%vb`FFqryb8VaQ?I_CJ99cG*MNLtz`QaN^4eXp) z%3Tzb7>f2<)BoZfOTw-i}0VFX1{ju9DM3&w5pt7hkfaT zE8%_8QWte@kL!@maljH24#Nd4Z0A6u@AYXyV=MHl@wZRJDq zV^D3aAFO)qZJq1MZ9WKY5sQd~^}BU5OaZNyo#sjHY`7y4SCSa)eL0d$+ z_jAjekT>>PI?4RyWk2n(o27;|wON-ESA~mEKBqT`Zh67g*WjSodf;pbZRufqi9Ln^ z?MoHi`&e4TjgtWJR_I1R#J()k++A#y*ZHh>Z&F1|TkWx(<5B?Vq}rk&g4ON4vTk(v z06bfi@R2Uim-7G9-HBlqnMbkB#I1Fk#an>2)!RS5m)16kLDeKwc9ADMuDuVf&b@}w z_5kL)+9`F};?`!bg`zBZA7v|8UdH@%pN)gijKO3ADZ&mtT(TWEA;fC353tCmw+K5@4v#&c%rD{+hJm_;dpb0OFxCC zS(!6dvOOMF$7OJwjQd;{>EXSM=$;A}+m2!C;%kveHq1C~MXHy@S+<%_>{8SwH$1`T zZKA&-Y9Aioa6ALU5k>NvG%}uX2&NGwFLc`9-jqhmEFr6}{Kn6EG@oxXafG=-1jIPt z8q)^5@x(2iIy}x|Ij4oW!jsN&ZhFpdHUsAW6`9;0fxK6K{@RYW{+c|<$i7NLVygOaHzUUvA#HCpimb!FQm{hY$nR@3dF z{j}^8#6lt^fWNcG7HcTe@P^JG4A)qct_g_y* zZ1~GiI4uPvgTq<19F#r`P*jSvuKYKb?O!4RT5Dq!pbr9Gm7n`|{PvVaRpMCdUmU>p zuVAaStO0NZ0hfLL?D=xefE;_D`ad-BZ(>>NXd7T35^kFR#q;e{fSg@8{J*8y|HrD> z?g30gBCv&1X#2GT9~jaes2~2D&HnG~y&(V=Bs_Xy?t6pJ9ibsVk?y}}YIHj!LMks5 z0J@ca63`C`PbV(nxBBZ1sda=k>pv0%C(BONDyUeTlU zn}CAB0^BNkc8JvfC;UI2zVMjQr zI`xUs#WbK+*OVm&#^c@KI)>h4>O`Qou98W$sY#e{I#mIB&RIj`VF@@m*xHQztXvk~ z7Y-_3%2x*sfHBm4-$WWB>kOdbLuxA+9rUdnnGWZqsu{lpLc-C&!2eEWst-9J77GMS z|Av6%Wx2HWHzx;&yoyIohxACvGVE2UZ0Lv)o51dTpG)9L(#8$N)6Q|+bX9zby zhsm)Ojs~H@#mb>kDNW=2dlcBq7;3;tQ3zo@j(th;JdHg*3m;U6H+jz77+p4iPm76W zJ|1Kwg*}js(p%j7msLoEh8zzH3$5ZD{5=iyr*cDYoZpxM>vxDGY&?`cL4Nc;~vmgqG>29yfz{V{4iGhPFj#l zi8L+TLO(dW=$~p$FMR~bp6Bwa3 zVJvwfp_L_i4<8~GB{*_%2sTQLXC+j6yW)KK3Lu%jT#`m!24$oh1%>Wce|97+?3MfS z*UcaO8gczVB@{jn{jFa>;4Gi#Et^Hb9vHDzpZMe!bv43xj*~XL(g;bdt;Q6A=SE1! z=gaBG>FfEx;bQ+`CxxDF&2r>fv5b4FfUiyuueN>-COsmUF0ezZW^*+BOd(%6CNo@~ z4tO>*z6oJ5n&;>Y6@hRw4?$hz=NBS-lnJM*6XV`U-0`{iaC&M}@Ae1!WU%~9pMk$- z^AFpv&!>TYqYv*{Lxk}MqxN3`AR$zppHG96r;o2zjx4OPhR3ag>+Y%3YJ{7fz5Z!o zRvo>psmmT1#M16f*PQ2>wD>0ZgtHzeN8CU zp4gZ3m(17uh8h7qZ5d4!WcI|k;_9eO%jskek-TcXIdv}|{s^D*$N1t|vIsk{t=-o- zD0I6zh5zNgaMn3XgW0p$uD0)NX1Mzh@&YqoPND%uq$P;48+~(58|yx#y{?~Mc5x0ZWpsD}viQ7^buKP`d*+x!%$~0X1~*7y z#u+Zf`hlytI8f$Bb4|IgB1c%8S_526X{|2GZ8e3B{5ES{xet3&d0jbxZ%)QW24eU) zKZo50dcJcAJY`0mwY4~~$z!oa75FWmx{PiMuPXLhsTFIT-ouGxb&Kcxf&6p<15DZp zJ~J{KVSG#8DQBaurL`f{UIypx!*+Cw`j3r_zQ?j0EnT)7=3DuEfwzr~ z-tf)&WQuz4j$2Z<4jKjFCzt=Dq=k~L{qiZqnzuf?TwySBq+*czkg7) zRE2v0YOB>AU;_r;i~X=Ol;aCL?^&?#ACRKe^Bm9u1#fL8^Xc|<$q`WYD*oS+Tz?(x z&{~b}0S!>_OpPSldVGIXMW!n1{}26#p)L6ixCVt+vWf9o(SHXe-MXwvMQ#8^`zvYQ zEe1nvwfO=N;DR!<{5Q(Q0quhaWoG+t9X=th47!U~H zTGk|rkyp>Rg^FAr{p5tNkI6A@N}7yM3M z3Hpr%kim(i0d|m$P)!#FGKV2fE+~O2?O$FE*83^|mL=?;9r(i#ViOE4U^Y|HUMFTl#KjJM09aFc!#nzGC6*%y(|OBe>GMie41l_ zPQU6e^j!#G(9wc{^{(`fz!+E|K14=t2>n1JfUHH} zSea>`L2fNADQtC207dB4wG}R&bWRWxn`k*ae-I&UYh(Yg%tRo}%*yZQ9t$vBIP0e` z{r4{+Nlxtd!cdTzb3%xdul)uGv}Okurj%BPR|zK-urpxMYped`fxy#Ut?<|AXDQlF zt~Xl?gjVNQZr~T|-IbGz6?1|#j+5#aZV)h3%wN1^2t$y?KVe=V0*4dpYx?G@t}9>= zXm;GA`pKgL5(514PGNFzs&fFdn4SN$mOTD?_*kBM>7f)7(&kXW5hrH{K|m$p@ehd3 z2J7vcIRE%6us%57F#vUWZ9V_Gzums;86N%pd-6B5o9pOO7|jTCGgr}uM3F-YXrPsu zw0^KvIKaiT;Y|x})o5lz<7x-xO&*(P8lAv?Z9C5Vj}cINuO@tiXbJq&!iPA5QPv#h ztvIc%f1=dvPVW0xGr#Q9X()9{bo_bj*|m1*ee)v7%QosnI+rSnrn@t>`gY5DE~oq(M|ij!U4 zP(f}{jjq5UB5K??+#9AC95jl zNmgOo^X=BscrxdXu2NE*3S}%Vikr2$tQzkXncv#Vb}ti{CozTj5f|bmAON9^p#l z=BuAPRq^nWhaGg3ji?0Oy=e?zHEr&+wN7d)^#k z?h>aIcze zE_9_SW@vAkMz(xpKIH)JB%RBbWkr*0cBWiSnco->9c^;-;#R7)Bnyov8{7gDcdso~ zL7#qkXOM_6ZjEK&S0d6^CEG=?7e6jM8d8B@(sIdw$r6rJ1h~er-F}nxZ5@Ly%dog| z_aOsrQpa-RCV;NCS(%$g$7qmm>R*d8ktIeG0s0$%#XZ=t#DUKL4@W?_zYa|1C*E^; z=rqqyGg#@iJr#B8xm{-s`&AT!v++wrpJ|CEozX`Pat} zWPyRmaO=f^90>NKQR5@9Nr0^k%-!}Sf0x}-f5n(Gt3tWv-+GI|bti8Ock}cYtkQQU zpMiY4W_=FALiNcOMZ&AEo#}G?rO_JAC7Aw%I8z-FneENPA|#y^F{!5Go?Vcrt<`*Z zw)r(!4cf^XD_ApAGT15c6)FENM9j>j)@{F$t-#6_s9=#FqZl*p&n_Ok5p%x&7Mz4_ ze>&KwOmum(3&?17TKq$>W?lz<90Q7(mehC@Lq0SgaE}(3DnEFQ#F0?z8-yaiHG8J7 zWYIbsaMBwRj#X1?iiXIV;Tb7*h*)V7h4_Mqa3!(cy!zgPZWd@g66-komlT2WF#C}c zzsuByzqOh)%h?7FUS#<~yY{N=zLcj9e^(W4XTc-7a#+fK<$80ZTODzu4=)QsWBWfJ8^Q86xasN5V-!|DJbW*{z%=3lZps$Di>A*+# zw$70@7BY~*AHBd^n+jIs6ugqHAfmvvFYT1C@X|?1wMx4=8-!-ZmynLt-MjGuE ziX^Af#E0LPKx=pzjbCW#jb0{d?{V{Ei`WyhaX7f&mC#4ngXS;JF9r!g3Azjh!H+V0 zT-OYYoJJW)-E_W&05gjH^+on>Qiz(`2NxsOhLrhCbsq5X-0)=Y5~M`td=Qg$+CM`JAMz0uxxws0$pewvzNt!kSJa=+mjw*W z^c(qpQ{FXv=7xn#_aP^9U*$hx$@glteQBjN3x{kzJRU#v45|alf2x`NvDzR6_H=Yd zhub=tCEv*Ek~8ueu$YK(`+uVdQP;oj{Wi~aAE2HFeIh>0`pO;Pf0rA4g*qBv>UWcg zqp@DLqw*qrd}*O;2-OC`cR7WhcGcPC=bd2X=3v4b+%Lqn%Dn((!8oXnch9s;3=SqN zmd#X;mwG`&gV>*xe~lPRr`ySSu4P8z%i$RW5BW4rxu%;vS-UINQ#7z((e-Yrv7IM5 z@j}&^RpAc*Ml2X}$%gGRAb7l{cW-wZEq4+)b$y28xx>m6P)|A_A9{>B9uISVk|6E$ zy1-X1;aK1MV+gl{;R;fH-}L&6tmUM z@v_V6?)kaL?>0JvXGMdS9C7iUnHO#87`87e$-ZSkd_>mJ2qms23F|UOd8q#ZJpDoJ zodR5!dg(s%mKTp~0o!3XuXD27%_k0R_Ys+k^$%pSe@a+M6MXIif@4J;_<>5|he6eh za3;SAc@@QoO@45R^@VlBL&^JWUS5LJ7wpfmpJ@y+z>X&GwfaL zTELXJyI_U7Yp?uR{Giylc>&FhoHB->VZ3C1)-KkqNp|_%~wbSH#>c~f(?{Bkg zuIuEZe_s@HU?pBj_R<-qr=ZvF=jY}kxn?nv^;5 zCpA3wTQ+w?&x{60BQLSJVtP_Z3Nce^T5CTbf6u$%jBZI^PckiB@?kDAOaD-W{vcn) zMP2oEXzuYVv(_)U@8|a|WXmOzUr0F3YIjXZF34eOArrpJSiTY2sQ~`r+8iVmul$s! z&cqcrrH*ipV`z#s5*(zF(18v`8HFwfZ*nG9O3dp|@`BfD05>Mza%Ky(ifMLQ1Kyk# ze{QP6joKmeymg%=6ahG05Mg>~S(@h2hxoI#FAnT<9PwVSXw?{YMqb6fA;aH<1vZq- zR+#n$fvA2qX;{R&v~8hLHb$xR?wjwsz2d}mk5Yr6(E9mRVq~fYXkr9us@v-aF^GT@ zY80ye4ol|A$9)R*V*#3cs%g^o z0LYPbB#Anx>l}-&1}*@}Z-KjVs;YBVq^c(Ir6oc;P3r#ar-m*S6~aq#h{aDfXUb_L z=$Upa8MCykfgr8k%a2>)qvxTp!WQ05br5^YP?Wm!+Al@yU-RzqRIyTn*=CzQf5p;T ztCpTUaz=}0W??|nx63V{D|nMNPJ_APn{xN()A?cbgSt{HtBk-Y6UfbgTl!XN$EFi0 z6>~ZfN{zyHTu^!6y#%33K<#`!ql5b*+D-hmV`H6ZyDJN%fDb+#@?m*dAcj^Fo&PBjX=yunHw!mm{`H!#NjvEh+y$1f>*PvT07{dc)Qd9;r~7MJ(yS)UHWs_Ubj zB)o^+DUYg!>r*_IZ5L1LAkO0PdBg*qAEk|etzi)m%#2x2Oq|(62r-eBe;i$}mz|&+ zreZv}5zQ{QvTH`6B{t7(Mi;)I1?MSH+D|#Smz0B>I`?G$*s(x^0937o@INlgG{RyOf`Tvt$Tc`W2k z+%hX)$mqusht6)%xHVuTf3_u^2*26)#WPyB+M&q@y5D< zS+LnpHi<}9(;v`pFqju>`X_X~SYKWU8hy9&pa+q4Dy?Qb zW`>ePY~h;V^1G=uj-J`kO_Gf_WljiU5A59UjCPUzLE+7>g(N0HWuk0pSF*Prifm@D z7Gw#YDZKz}f0;9aXYj_4SS|iSuXr2-o0CjTJd4RQ1qrYW(YD>DbmeE5uFHH8rOw_M zoP_>8QArV28!(yuQD)i3U%zI(e@o^lS;25QOqFqg@3~rB(l%LGa(EEKA2d53TZr|O z|9Un=o(xep{t~-CXNU-JZJ5(o9=Fx20ZD~_W}`XzfBQm?X>|hd8ws^hq<;K>zIt8b zoi$1F6wW1^6O24?H}uPS&@WqRrB3A|*z+d|a=s62cr$xn58gI8+*&)dW;&ee@teRQ zZBtjZXELC&bjO&?R2LM*a6P%?;_0Qh+5@&VegY02<%d)WXZULN&8zs7Ib>(Df3;^$ z%>i$Xf6`G#6Vbil;TN?DIYMZi1XL#cR&~+sD)GE*DMn{zy)=##$)qecNwn?E?r1!a zuy!P|oK3fOn2no((lv`NS-5wQAMUO$OCZ}SV z_%uhfK!nNVFHG#SX7B-KQhpKpYGk-Fw>@{Nf5$FjU-rAA625E;Y+S?4d!ZO9hw1pA zW$=YYz=e^@e06!uO%S%nwBtz`@`IoH&6>TCHnauh7a}ArV(=g8@jF%_`R8@mkjoDH zmRuD47)J&`7u^Z_HVF@G|2nu+(-Cs0=PXMS$eA~FAp&z)6raUVucgXZz#c*zDqn31 ze}0{XYZws6$`X^SvE40sp=7EN2w1nxHnF9bNflzn1fJpMw+pch>No{sQU5ep@g9nd z&b2H^6dfE=)n~Rq(j8dXyCH_A>7oL590q6QXEc&uJqxBZ-oK?NZ>)`Qsz+KPT{FET zJsbF%-*~E?Cvk4s*ppw@_BWp>vp$wNe@UNKkb6ci@+9lyG|P&UK?&n4=G`@$O*2ixY^5I$CF?t<18qo=C> zSF&j)f8fRY4!yUHfM-Z9u%`Ik{s!nW@=ZtI9(eb&46?6_dUA~kOo+6b< zN`b=m-==Uc&Fr9Gc}5m5}ji{Ok`j!#=Yc$;T#|i#F2cy58LUn>D zxGd--;xx@MdJq^pu0fV$|<-JDJW zT=+e}f0+mM_?=~adk?AZe>GXWsM$$nlV2yL{U z+7=grNNNbzx-A&Sg+-ir&=v4IvY0VVhK;6DRVWt6OiXO@Q=if9ehL#39iHlY@>Ke}=83k13}fH7!`cp>#*fCe^-18;B*U&`;R%J2Ue@t#UC& zt3}I!mdtlC2!P&iEzJ!Hb|e@X+n^3y^3A>~}z z$xq%iSLWam#9f;WrDzU!|K%iAHkZ#n1)o{RASW=(?8$cR6Sty>T_$rB@f&D1H-0}g zuUG0``OIxKfO)NIV1mDE4^asjHVhLVpP!HB&7ni$S$`c%XgocCF7Hzu%Vva{%-a~| zMBD#|_+u320Lo?0f2ej7B!tZ7#PSnb2-3lLMd_ywaw83j_J-)XtG{})@8TPXUYb}O z3}zrXeX%;EH(f6qTy|%B!ieY6QhDYT@mjgwCq68hbimLlHPV#b9A_LGCuv}l*NKr| z4%yj{QM~HXA3$|=>lPnJeL9sZ9^UCU)pgXkLfkN(F|g)_f6;O8v2hT{8&~hU3AoQ& zAw{IQ20r_fdO1f;sj5NvL8Op!*Jou4& z$H7!`BI6o@=CKMCU(n;MYW2m<0o8#j$T;U2z^F9k)xPYMQBDUvjn%^`I7uK*@D# zZ)F$D*1R)G=UzLyq}jCeXdqiJgQJBWd%QZ&6^{Qm7B2bxlF4%T_!ETURJkw8|AHxrA?MLXki@G&-z$EMDn!3!m85Dojb$oD%1#aI({Z`_WLpS7^}%5i zErL5$uX(vL03jqx?@ewU1%X#stw|{(ggQ|u3awdP!EqW&%8S|-!YPSA(51vMHN_u; z9dY2ym<@EF z$+%XwZNIV)G9%YNaqxB5?=LJQ1K=Wb&A+laL17QDG2A-yXvRddf7#)M zejr3`bZ6-y`MTCl{fg398GZ>qBSw#4(H<;WN1{5bKXP}toZY@?i{pR{cll#kDZaHb zKtg~(KH1-X3N0e0wHh6$g4?C0G%(Ln?~|V$fyh+=!To{4QX2<>yN-n@ z10qlc<}Rpg;6*_MEgJF8Me%u`e?~4s&r$);e5)-$Cp`e7Zfwdo-IT;$%EHmpB)-th zs|H){%sq8dzQx;+?QlBcQsr}W@sV@!Y3%V_u)vOm@@o3AeO%Ph7DxuMb>d zVxN8U!Tn|HPJ3e?vG!9V*Y#}us=j?2o~>M%GY|FRBItgvka&_ z%x81t2!#1)Lax<*I`i+F5IR&Z$E=Sd!GxfmMxhw3#Ml^;99f~^f1z-0TZ+FUpzOPj z18mqsFTKTP2iMlY(0UEAf2#U!6ui_`Gy3KoowYyWfu6_ziV&Sie^f!uxr=~Xmq_%AVES~*xp$&hmpQ*BPa5ixJ`x88#^*Gk@ga^9 z=M?8{hco7~hsOz&Rt;V!MpUn}4Zd+`Gc6g84BqkH=b*cK+(q*SjBDNKhXgiJs$`e$ z3^)oKtm5DCn^~7yt(fHF?e->~nN8cFGM<(K+kU#h&fV`de}d#M(Tx}MxW*m@Ym6?i z|FYHHNt=T09BbcRDB5bO9S4n{Q zl*7%?_YLm_5Jb6F^#IXTLIdG?;NAy~YB1G&DK4!fueO_T2-^jxd8N+Y5^ARY!C7{q zMr*p$P*k5-e=txZ8F2WmIL78175I!4mn|YPDjcaB%!j1kB3owUoDncKf9r8Np?DiV zJN}!yj;7ZvVwzl_<_I!aZ|JFdgA=a%CR8Pv3$wERZLbG0l zBB#v#e^>?yBP=sf`14nPC)d;DWQii`(%w(=diqm)41ya0vz_l(`}N)O*-Va?q(21S zP8ODmmI{zlRZHM^-F=C&RZCL(j_`OF{)n1Xt6kH5r&7jJ_OhbQmOF&7D34?kvP6CFb^9gjAkNnn;HP zUYRVrsZN~uyPS48pF8gh4P&ykcxo#lH2utMQ}eFRdK9gzV^=P+;SK3Q@(V+Yg$)Na zEYDX?z;%Cg{-y`7dAIEkL>pbk4BVBvui=>qg3k^Th9~A$?f}O2-Tw7kuRrnK<3m2U ze_4o=hWgjWGgLLjpf6P2yB{5b!WifRQ^k{N|6#BpyBwV?>Oqu3HVd))0|lcEs*A&p zXfh--7%N)?^>!Mr+TtsWlMkY`1k0h>#(k9f)bjHIn6NO66Z4=Ru$gZ;px!-ynq-HP zhUl`OE|I@0YS$u+Ax)m-wtv=4m%VC-Ogv6#9)IE||{*Kpaz}+K?G-bUkh}W z^paN_Mk01u3zvu2Zr@?FnSRSCrYHaoO(n}Sx2K1@ok3>tO16?aJ+6yPFHZcJ1-pMe z22Np&#?qa>wW!MdHb(adtr2XG=&$i7b~}Zg!rel+PTxmA99gp7!QxusdXS0K1fH2< z=|{%I*@M|HbyLX{oy#5AMio;L4LyLQ60Noj~#*1JZ8q8Iw;B+NvGY=`lgAir1%6gy0b zCGm709)$$T({k}Q8q(5$yNfcxSe2SH9qy)#Eo5(3I@kU zS+0Wh2l)hMUms4Q`3{wc1Bbn03hxzWH=B6RHyQcyTy(hk4%C+bw zL^7x(Jtu^Znh1oEi-Z>4e>hi1}mtt0oH-MPO7P+ zOci2)$A0?-%ry4UUM^WJ&`O^hj!4I@HgvzD8S-ge@a#4ysZ=wmf0#}G?k5a1Icyz* z>?W8%gKjbwd&xM7o1Rm_!cJ7lBKcaSHJ+5}rDe0fRNHRN$$P`e^~Ep!9(f@*JC++8 zQ+^3mq}@&{rNJ&+Wwz~Ly35q?q9a^nYnkzuz5u#Yid~!RGZ{e{t)wZxKn4*<_NQ~a z#OMA7B36F*(0{Khe<9qe$GBX?Xt-xA@j_5_Wnl)R9#_CU6*d&jM#e|4mp~sBJc-Oz z)#YXL+N~dniB%u*$&?_DZvt7y-Rcqhhe$>NiE{K($W5T(lAdo=sV&-ujVjP8DiZpp zE?dN)pX~iiUkgj46Hp30rmIz2L%lh6rvl6fV9&pTSWMKKe*=@em6DE;bDy2)nR7dL zOH?)pd_Yv8HgS`m9=9BHdr+EMgZ9wZg}h(iP-VU-wmIHf8W5HWtl)wCy0)1=H>v5~|f0%vA5?0(;nw~~#-LFQ!cCCG* zqp(s~7*m3q7s|xKKq3D^&y6_xXizLw1LmK?4_`EtDHvQp-gfNm$rO!)nx9Mf4)PGg6!rAFm#&%#sm;perJV$hIPLm z#c=6~*Rl6N_MZBh*(X_wzA8209^5;$yCLTcYo>fUZwOA-5ax+gl*Py*Dse_H%V8;Z z{vMVOStt+uaGB0r+>;%Rvs!ZUFZpREVS;|R&h3exHO=bF^*~Txs6tN)kw(-34i+ff zf2=5^P)%&8izzE6ZcH&*DLBDg3g*`RMwe2IF|l6HjgO6?(@bfsO8a0Z^S9Is+om#~ zrS}VrvkbW|<&LxERTzZZTVlJRr0Bu06*tW`rXEG+t3U1U;!wDQ&@)dV_@*;bT%QiQ zaN{^XeFgfkjpDiIG1%Su%^IIe`;${1f4N12umtAnl*B#f8+Re(*H~>+<}_7*fzo(K z+t0(qu5Qh%obN`+!l^d+LdxLSpv1#*pV~JA7Yu1G5sslFLuk6Bgz4>1O=mwyn;)gBaNv__f9oqy z_g9wST8y5i&u(N|RsZD75w(Zl-QD7^AVG@VM zqQ3)`B}2_0F7CTI&1toCAdw)F>Y!qguS${87!SZ9S4V=SRE#2#&?i|}e+|38WM_== z8qj_~r>1n+GfyV%3e7bakdo;OQJFchU|;2Q+M6G4hQJG^rD3ObE_Us1Gnc$av~v*} zBR)j!s;wfDZ;`e5j`H$ltVLBc5{^N>s>l-jco1yLMQ?f;d&$hNm=s&Iv&n_E`HYmy zQyO{>i(K@#m3fWv>B%mufAW(FL1;cicC?e(*Gc2*`f=(9Q{{JM;JUh#BM@ocFW#5A z0T7Y(a#vM>s>G#zmdM{AW|tZ5XK{PUwR5NTz#q{~!Ari6*$ z=g2Cz(}Sd2dUnrKvA35%()?$Ahf=GNDg8ZuoC$VLlL6+an_d)Ke}Z``Ni(Bhr_2b< z##m!rhDGwY9eRFxAiF*%y7p2Yar2B?Jv7Q*>-JZ2&WnwjH(2=P}gr5(r+X zz{r-EwKr8hN{L~2=6*BeO4Xcb5|`zYUoYSSRgV4A>Fpn6&k zT_&L6z~@@2D8te%!c#Hpaa_%&IzlxgK7Wn}x2>!mJzP(wpsPZ*i*4*$LET0qPT3uS z;v$9lG+#N)a;gpWcIP8!({Y+#5&fxXdA!C)tt#f6e;v7-YD~PG?7e3fRvsw@G$#2- z!n3e!^Ql{M|5;KcalQPDAlE}nZnA?y5If)17VW#gF>=hRJa}(cU-hs%EI$D`*DVs^ zy%!WE37TK!ypyNA0HoaqL@$tZG^4)4TDEc~v%^R>b{^I$;4oOLDX^AKlnve4t2{lB zoVJpsf17aPYxMzmYYOplSYTJXNTX%Ek-H526xh2QVIZ5w7num$9A>dWLw7u}eZ2M2IZMxa}2tDvS~0H1{O(af0Hl;&7(i^uif|Ht+9Vjw$$;3cKLNB zB>AH6-0+Er!l7tKy&Xw10P-%oR39bChxk4#?rV)4GB|P#d-o}u1aD3J$tjlcI*@AL zN28cV_g41UA-?9|p*X^}q7CZsaR38|UW7mu`-N-t0_i{7&h?~^N-px@e5-`>yf4e` ze-LT}HFAN+Y+|XgaO*RC>`7~vlra7bgf~^=4tej26KLN{O8%HrDdd}>ojk{q#;pq> zyI?=qAExv8;S2q4ln1z`x~?KuP{#x0N{pi}aZ=Ob;hRvBf8BF=t_?)P{(U!x_gT=yUiqZ@dO)39%L${E|j>Xf3sRg+QZ#3umBDt1i=seq5Wm-AfhDIp-BJE zy2%}hDK^5e`?}u<*@13kNY_uM`jzmf;{q?`xfnE95ScvkYfy)f4T9rrkG)f7^r7 zGwNKBpX-_h!fdIrdOh0tkyXoD(X zCx|X|M;SK+N7I!yC4HUBk8-WOkj*xEeB*VB(>fFNk%KfAMRj3H5e0dY;hUeD!O z6Lx^50ykul zb({C6F*!_5qz!y2FGEvL4@mCuMPM)vXa3tGOxdJ)Qnk1(?uZSbe}%7%fXv8gLfcs~ zI%I#&0ozvD#Dc`y=|bjw=^5=I8xc{7`z&33;+@hh8QF`o&C41o1@ODPeq%Oxps{=Q z_}9h2j5Z(~xyXw9@-?RQ}(km(WtB#69`NO z(6}f2s^ZJuipK?>e?nV=#W2!5b934e(n^Wql%2a;yWF*$&EMy9B#HSJ*XPdrLLf`C z{owt<>AqwVNyQ9_&dAVwbMh{Xu%VHwBYM{~MYS0a-KfB?PzvSjybbIFB48c9Jt zOPTyb^X~f55F7>uNczQqW}A1NLH(3Fza~RBl0lox*Q#G2$NzYseYN07V%U#$o~H$$vqy z4_VD3U~0`$2KoRUCLB7i5$d2t-%#(4Yb}6}U9B|s{Xt=v^FB>4GVYzel;c`$1?jD} zz@$K=a*1U+ws>b=3{&xf_wJn!dt<+7lDvIb4ivM=+=-ycHI z5w^~NL$s&WhES}Z=(Po-JQ06fq`=u{kq5L6FA643e@onL4JkmbfOD8Q&96Cp*Mton z8iU@6Z8q82>0_A*MPiQQS7Rpf)J-1l1NB7hp zAGczKd$hE@QT19&>+Se_r4y8NUsOlTn^bmnWB+)MuZ5Z{;RmkV&FMY|2(vu5eW#Mp zf77M+QNMPwfv%JJ)!KcZqg`;aI>=nVq`PBVJ=nebCqt{k3r~d+)x6LeRZ9#nHijXv z8wEvfdmb6AKAeT0nr*uKOf<4v2+Ie996Zp)#Ors-4h0=H#S}B^9`SEc&Ig|FM;HN> zW5LI?CZHENv|i-jnK*NK>aoT|ESf7@iP-}j40Pf-nvG%l+Uo~IBvSI>%{qP|vW zL}ZQCP+*ANs_J%zjo1?Io$e#pC;vOB6GZ-6jl`pe)Mgsum+k%U{@W5rWdDkG7?+f1N{4 zOU9>Iy5C73u3Q5+jQiz0pce@zoBBYd3#L>OG3d&VF69 zdLEf`$W-NGdTOc`+%?xpqLhZV15KnDOn%1@g{DyEdUpCueKVVQ53^rdt3+{y2>aq_@J$r%g%_Ch;Cc3T1LALdV9y1?EwTMPJEvt6~c;Kwz@5e@$X})dpjQ z5tLWpMm|+ahSSAe;gF#V62jX`JEJBOd9`t=^UmAUlilB>Ql5z{tHNSHi~Qba9`=B~ z`0UdDyd@n`Suj5f7zPD}g`(!+!ayk)V!B7sQNc{P>)FJpC)LT0UKzzpK~y6y*N>lY z+xyLR*Q4OU;_PhYEr%iZf5C#e!%y>MR!a{_s!$$l8V&`Px=J{f1)XQn+Zn*Lcvs? z_pQ>42o5p?MOaQtlZF!@Fgs$5IpI8%-R#tAE}1tnI^T{s6egoqismxn5BrkZJE{9b zNJli&6H2kuFkOWzLGuCzlA0*S<1gK*$!Kw~i<7|yic`-W{voSTwQ8U^Rf~&{i+F)H zVN)$*F&&fglou!&f5CRdb0DV2aSYdV|M0v{L13h?EdlxwZ)CV zn6$;vZ=}CtR8XlG5v+^;!Ehij~^xXbKb+p$5B=#h2e;B%M4o{ zJ%BqJ9MGvLfBu1MG~@Qf{+nK!hI6NTh?qv)%!@ScHYKdXw#l-h#bo05q7PBB%Nmzz zI<$NwhUuQ%HI><@0W`AQVM3Lx$!yYT@;oE{*Ysvu0!jwiN@TW&Iv-cgHKHf|7y09T zQSznhpOD7V-&h%RtKC(par`O`D5GpG8+Ml*9(69uf3h$Ae*`Pl;#8F??Os#Ho zK({-f66eXsu!)EuRig?-6dp=5r7SIZ%Q5q>V~@JTZ(xzUMp>ZKXi}GDMkA)*pRPpJ zEyJ&tCdY0xrZ>bq_iU4QL-9S8V|OJep>yigrULOH@Vkl;m+*bHj%OXO_}+jik4*;w zE2muse?NJ}bw~rG1+EV)!{C2QXhsJ!GlHr5 z(t$XY?F8I@*mPjslUv*%8S?fZD`idB3KZqK5JvaMHB+`mY~-f5GvH7nO!8LCv2e-G z7@Hu>RTpOPPoV$CZc-og0v#VLUuUecO($vvoxn9iLe;q5_6Ro(2J?||qD{?D*pYMjW<=`_jEoCb_ zpW%c%gJ;|+Jn|Z7n0ywd);Y{DGIcN-oqq$ph1wGykzY~^%Qa{+2jR3@m5^E`+g0gI8?UKqeYmLSmm*5=>sns$`~UI{^Y!NBMiE+KAB-~BfB91l zHid{eJQWbH4wLgj7>ipm*D{}1nT!h&We5rfj{I4^ytu4M#1;zPlsNt+`?pQ4k((vY z1wGn?+;gIAc`%PHAVPIODvO_Tr%LGSR+3soBX@`IYR_^D?e`U#qB$r{(_3VO~bzU?n_=+cEf5G0bKX%ZKzW{~a;V|hUXPC}NtU<9)IOyvj`}F;C z&P!dwb0wrloEo>Extf5wgJFe)QM5R|h7i?x4W^L{0J@t?1=B=p|ig|p}?j$~cx zY8-bYRRx)G3?GA+(gn7njNNj?3i4>uV@KuAoSFm}^akVixG|ij`hL}cG<{VG-Tfj} z&d?(4oPxtq<8^HIT2c7PR=Q*_@OZNkHlkynu0b;I*e?_67RbR~whBx5U zaW@o{%S9kcwSBiH@#wXl$uYQzK?|Nz9m(HL0rNd`3J2}tN~L$JQ(q3LV*;rZu!n@- z^hcdc#lYJNQj#VHS8OT|@Kv9eP$n1;G8rlD&aD$LnO4AF zz(&MH$$?r`ljTfpM4()M(ZZS}Kb)SS*8%3;j!=*JFj&AwHh(-zTQ(bEuJSWd3EN6p zxXdiKuU^d6#kDswiY^T4&GgYUf0!|nQ4I0(={OrhUu_uFf2>mGDMy~5jNw!5!ga9+ z>h=@sn%?q{8o2Pa0;Tmn{jom`7TlzKLTc%uvReaP7IffuC|I%S4W94nTisBe(oos% z%mNPU3Av^Ghdl2Wh?Nxv%Xa_}c+(MRaZrBYORg4~g+^wq9e84Ns$+0-EB^=5Iw7@W z`1vgvroa>Ae(YOki@ zF>h2YrM(~;$YJa`C&}y5Sv}H`iEC};ApZ+cHrCn+G&&^hgf~u<06O=C%><6dX3zDv zs&i_oRrU)jq*pF|!h#PNrBm5?i|MWu?!xVQ=p9@Zf9G?rLVynL&p8MJ!56H?dj=oQ ziZ#R^U}rc6ik%JXs5l5N16)HbVxiLL-TH3xopWw0K8Q4)DWrCnqxyw!U!7=gW zTox{{chgKzaFp!rkF>GMh27*}2bS0FT7v^gf74N_#m;Y_oCS@uy_aQxrLt|YmziIm z23+&Kxdb+{b}u}{;4X!=4C)Wlk-%CT;iBZwe4>G~sUh9L7Gk91U9=E|X z3K8J$BN$WLT&*_Y-zHr28th-?feRGbghyrXgTA8Ix;rwcd}I`&>#G`es5RSWXC)~H zezc`0Ey7vn*~-_V^Yo|#Xql{f{P*Ec z4QN$A3@tr~QrHmx(P49R!- zc-sFz0cH-F@les6XxJ7#ILJ35N2~YS%>&k>I?ONLIUU8tqrYnnft_#l#1E3|Ej`K2!Vx6ue^+QW z#NT1JVwpVolWV^N73kZsTt4?aoj@~hd{0Ix<$B?}Sf-h? zI_a)ava{oJs+oaSaikWA3}}Z>?qe;ERLu^zSQ#1!?G#Ce+b!89+%UqONDn4c)3^a5qh-w8CKAZbFv23aMdf*AXzz*Q2qiLcRfFd`lNkw7e{qT_W6s}R}=Wa28VU+maE?lBtf;vrB)pvWEpA>vnm%i zm$qUBLtK^NfOuIB>qK#(Jh@kED_Xfa4?5Kx2N;9ji{H(KM#anV_f3t_&roh^Cz)-`o*ooa5Q!+P>SZ?6lF?AC5Sa@Vxc zFx?&whbct63ZdEwFfxsx=P#(~S(e~)#Zbq^uxY)VL>1=5krV9E zkEjowrapjx?qj^a0>MlM~XoqU$1L18Qr>KyOdH-#rW!^W_nsUzz@x2bn20@{{uB(_nrmKHhA9mZwX>c zYXx>ot30?+G-9L5g_o=Ky%a7GAL%~FjkGwu==ezS(T?)DVuvnXJa(O(SyDY=g(u_f z@zlD{AI_s~f32q;|Gntf0DC}$ztLJX2b#>IboK;mi0WEG027Mua zPTGf|Q7|ZBc{4foj;a;GtKke_*PDM)3cDU-@G)vrg%c;O28i*MVbh z>x!@zs&Oez1AdAis4V({p4+3dj*oo61ij;U*wsjT%pB}kXMZwm;p83Vwg3(z+y_EZ zxKKy^FBznG;2jD~Y{JjI`+F>O#OGUUBbkldp)MjcE`J<_ao=%>Qkcgl)j-| zq76aqw-J1zn>d6j(wc?vhLI1kA1I4KC9KFdKxsQeH06148fc)TB2@_XNXh+;G_`si zd!@L}S{SxG&VTY}Pei^{%yXjctb$x5o}v0!)ZuFe9;)FxI4D+nLBV`czf?OPFOa*; zm_^#ladbmqz%j}wksJCt_Q+vAG>;iXA8*7YS{+Xgx*HZ4JW4+Qk^t-bQZkVc)#{j5 zP+p9Ta;l%gR%q|7GNq&625kA}Gv{dQCix#4rl6DWB!5+ouNfIVR%k90kd;S97_1ew z{)ECox5fxpgi@!PY3=}m} zq6Y!QAvqyUB(F}ASCimtujod8?#LaF-mt2fXz~WoL5vPdI|_T)aIBHFB4a*zBsj3` zD33?V|36F$6f(A@#0FKLbFO*YpJ$XolKVlJIDb-10Fi{+k&aLLcuk`)2&nh7dw;MK zk0hXn%DsJ`Ia)} zwi!QqutG;(dH+cs`>9N2tpsom5;DGWr|sN)T?udeA~O?|EOGF5qKGbOs8FyJZGY8M z2fp=j`KaLa&e%_w8VhJ~GF;`Uwg?>4@MlL9Z6brGa)b!RkZdcL z#^&Cvq{GiH?o!|1K#6|9P|h+C*5n_<4+f02lGj zTd1keQtp!Via3nuL=?Y3IWaPJ{Sim$z<&JRD+N7sX=|OPs1X+9e=w)sDP}X2dD6~l&nq^Hpe>8R! z3sWTJ1l>&5SI@!mwTe$zJkJr1>Om=AJ>j?}scj@?a`pqr44Y|nZTG!Cb{4_-)eBVe z8N%St!L^7(#NiV0vi%Vcn1ObsYeuX0eqcO;Ngu1(&L{1u09x>x1D?m$shn~MBkQ`B+*s(<*Y!sGJ6|?BLhN0l7=SKQ3=JK|@8-HD>6J~96LDk5n9cochm2J1 z3Zx?VnlQ2N-(ps+W7~sb?AN^Ea(GQ7sCthv29gZ)e(9bo0smV2Oi-JO4EdnZa|^A9yaP&Scqp=|TEDw&&V6PbXW323YG6Dx2A-0a{#|h+>*+ zbERjKpNmkDBmxd?c-}@fkrLuq5wk)d2x4cLkE`L$_mt6(a6G|9Nc6A)OlVt>lmrPmiF+3Hp4Dr~S|y);xRH)<-*a*5Rtz{@6{zzr@E=oB)O9Jl%+ zEw$lnn6z1;(w4FQDK||HOlSG%PL?zAnoI2%e7MoV9t<*jn{uJ+=D`lHg!3|TdCzOG z)+zWSD)xr_g1xJwqW7Ak0MXL;d%u@gy})H&ET1kNbF3t0V+_W31<~ts5qAsuB38 zvG_i&%TsU1qiC-Ajx1D-MLF__9zi{d$dS}-xhDT7JIns4I}3v!657_vIq_d22ZR=* zv}Dw%bAP|6_TlEoLNI`rqA@}Y4D!6)s~X9+4D^(m%T>2}ONrxb>K*I0lo2I$^|)>cwcQQ~(#J8UuV4xJ-TV&F10oip^+x|Ex-{@gkbDOg%lV z8pf-;L2aJZBE=E(H<@`JIr0*UVLUFRG@%5HK7Snc{l}7~hdG1n8;fovOx6wA%2ZqB zIQ;9dRBN&k)1FgAta9A3PzwC$#so`@zCM%%0JGefwX3f=v`QVGO;)_h5qPCe46y8=-g3p`C+KDDp@xtnX+7=H)p#VvzV?#7p$x zeC_Alt8im~>R6mBbufItAwcEK4MY;AdZ7cw(fgGVSgxWmmBMAfYWuu zu-gcS%R$2sE?cs1;i$$;~6!yH_^=agVS z5J#esh+Mv8&28=1^8g_=nMb)~qz~iqSHErWD;Lm4f^~j_Rjr-QW%LWtxIml!0_5y~ zL@t!@?|+N1Ri)XATD0TM?8&?TI_=C&l>tfTu((q1+wx}!GhhAmu9GAN*4Wx>g&EG= zqE#`wb5sFdq`b)KjtSP{!PGv=^1#uX7)4J!dDFPCKHX%V<+TMtNb~vUnc$;%3Kjw}Osay?b1#?pM(IRE^s75ps5{4n z^-|Ft%Z7k}S#LR`7s*c-%NXjWhO;mnW?xVI?X_ZH@+Xv@4XQ|wY^?{E$nbnY+qUge z;D03RC1jsEUG4Tp)uWE>Kz>x#!?u~8(=8{+j>5phWKNJy;o*<}Fi_eC;dF%IKA5(Z znDF^}1UsNMufXn?E(`({TDOa=f|kKq1{mRM4N!t}DHz`9sssXkLr8D_V}z6#HKuc= z3|Jp$9{soNuT>qRMunq#4tEg{&TK=F*?<0@jNq}f{VBpr&hMj4*8fI^S*V?bo8|7B z#f9i}x$FT}XM5|PwnK15+g*Gnw3rnl!8~?ZxjTN5Er|9LIh^oyc%M!q%@$_%dt0rqd$bG&Pjtz6qWjX4-CxWI($J>Ez}qqujted8HWpeW;Lq!998CPc`3OMPcykqv z$v*}3;wP+!?hN%BkIN5|e}7AIv>Fv03ZGy-B}-iqAduM-mC7XS2?(sM*;I7|Z4vg9 zV9cHsyP>a1)MEqcwFD47aRTGI2m|q@wL-%!j2wbX#0n;mzt@B2xmMhA5*E=x_9N5q zm_xG~6ULMMgLyhCMoYy_O7F*==b+d(@S5oS=BALzUx*4hw?M=N+!8XS(Isgf)R`w{f00~CABdFN2D4#TINgx{ zI0}kBt*JS6w4C@K{h#)Y!RK+MZ=I?VrPOlZ=cv>O@jjY?%!XVa%&ai+e$ir=p;etJ zjjoCYa`ie0_?xZ@ZGU!y%}`2uBF|GK444|Pyr1;@m|%gYcc6F`8zHa{j=O0Ck(jdi z-vqbuR*rpJXdLzfNY|TnXVdZ|8;H5`;0`GyiB*r)`~C?Jc!|8q5X7pdb$oQdU~8fo>~A!3#R59dJ+}9Z z1xa>O_lNM1xSSmj&^c78*K(UEaKCLk!-o*M|LKbv0J^B!d1WgT>%Tg`s;drtY%w;1 z2kOVMsfuf$sefUg9$s@A6ykm(AtHer!X!H{Zn7OWlZ&C;^RLgmUi|qT>$HP--wYM> zoZq^#JsRw?gCjsPA{)uIPJT4Bn}oOn8P@M%-aPb$JGHmfHoCdXMc;eMT;$>}tj_7w z)_^96^fLe9dPl!Z0cBl5lIaRx-xz$wwH58j2vLqd0pGJXop zBJsz1{>m_R@Xx%8}HDlpAqKWy`#l04(twwpzUh$bTuL z9B@!8fe{u{^td1)duQ-uW^1qaRNRP4XaWX zW}m*AiVF%XQNT$aVk*P=3S3d0S?8ZD6;*$a#hS=aschE|_^lY2LD!SGZh!20)RO`+ zHTtNf_HM_3SgOMG(Y)02R0}gF&eQn7xm1z$W(zAAt&I%EKja1|qc%W)Fdu)#Qu>T8 z=y!5+W~N+|!YU*@OrjG9DID)XRY2C!f%}?_v|^O}ff;$Bl zic-`$zh;Ci3K;oqyS<2`$dBv-US&&X_tpr?f<>ef@2N)k)iLJ@LUU(O2=KQGFjZv_ zTR8oyM%c(hzc)0VGV_Zt883(5vs#q0NH%$;7ZgZS;k08gy!L-t6R)c z^djx+q4UQMRIZ zY=1eU^scqTnF_ke^_#Vv z#!4+8DPRpua=c>VF&B%A;I7o#3P;6!%X#W)q?O^$+7L z=2k|2RQOl7D1YKv_Sk!v+^xMrt9ATia7Si=Kl$8lOPr^Q$y)W!zOI1JKNJU3 z*Bt`UG{RUvl-8LrhyXiAAI#_z#xp9mI5{Kcn!;am#(zGVfDmeJztUUd5JA-!pQBw{ z&i`z1&`jaUg-jOvK~O&yWx>&lL#GSF7G8-!BzG3v{7hR)f`ZR-Yf+SRac}3-lehgm zp>Lhizyei5P^)>KrNhW>6{tD;cEL3w%-PzN_j0xjx66ScD-bN)LTa@i{)!~3Fs=%R z^d^-^;eVF(llhVPud;Jrj9+g&*@Md6A@a~)Bb+f%BhBM}G8v}B-l9d7_d6rIQ%vA2 z4?UJ>K9oCQ3rH>OQvKAnS!7u_%HGh2VNZQlD>DVv+Y!9et=TVT7w*uZI#E380hIc*EWBjDlpctXudGsQ3wrm}y@Mb^;O&H&~3>He?C z0II|TmQ2WEB)K`*cs^C%-fHf@tV^y>rTHy4v2GQ(a3zCB)ZYJ=^Fr2*H zTPr~AVe61T+gac!*iAy7X3&EF)?@#kz4tUD{gFrcL@E18k{)s~rkbZkCQ+u3Fa=8l z5-OdHH3+SgCg5In7A;a25$UyD&tTkP&VMNXZM#iAqy>{1D3V=Fcyz)8_~;TnO7U$K>bAz6UT-u zZxA1Z=h`{5rxhdnDo&x9i!3Pp z;{ZEcxSE*wNt(apoIt_^(yF!);(vivlH_FF-~>b&I<9J_m{BX5HZ4$xGP2}@`-rHj z0itUs^Xm_3?Ul=taXL*WXed-RQrZ3sU9btNGzAS(X!c+Q_ZmR&eVxf^C_E*sD+{lp zwAmf3gJcYBvQAP6>^3M?t}J^tc>(*@YUcP^Bo5?7ArV-7AsxL3=eZSc-G4ZYC@@Aa`NKv49cuOU{T7c}EBaEDsbY`s$eZdN|L#EBdyCQ5XDjJiI<^d&|1)93a1G8Ox}E1jF;pbOtnOWOp95t2;qwDVa#-3jQ*d`Edq3U~1vRf*zmlc;fhrynhZipp-xeRu6t- z>UX#}>QF+&86;yGvx(M>9T*4b+g)c9J{2$IZtuNGFy>;9w{U3Lc*&MNsfUv4OYU%{ z$dKLjoFlx0#t+a!vG9DP4w*~rf6D`9KxbQRD?)cyjIHaTRv>q)W3zUS?m7CAj_05Y zpFM;VOdZIYAh**bUVn_^=OA5e>&fqLa^XaCAE`&)ukk1}8~d_PAH$xNYAhCyF^u-& z<58$fsnpqP86^}?YQR3)Gl*%56`X;9z)UpV#jv^l{maC@ckO8uQlNjft<1eV*wKsU zgpYhK(FHn#1kBQ-!ph7W0&|c`kF05wbxG=8I5rl$K`w0WaeuYyQ6zng+AcB#yU*Nq>D9!XVGs=$z0#Q+jeEgaGbpHk{|JZp0tN^2`|C$CHA=ba$l{Hl zfwhptsJNE4LVuCvl51l(`^`NqVqC#o8!JK$9yZ90jiP9IN%n3IK-T6}tuYBMcy-Bh z)zG-v6&(2u;m_)9rn6*o!xCn>?40PD zL%hTltdEKKbx-J-*<~O(Q^qJZ!dSeJh|eEmAo!t5*MB<-)gA*g)UnZtGq+yJpTR|{ zn~WuaK`xY6_z9_CQ5|jY!@$ecG%(5D7d09S-7B<2HsFUF#3>fn8-$XnF?{&s0)sr4 z7jU~!?_lWJr*$WlmymPHvem?ySO=$_nD|^1BIlNF0s2|N*FVKkjFP=Yx-C?ZMlJvx zmc$xNuzz@~`BJt=6-^A1KQ3SCKw(UMG@lKFPH7(~n&zhf8tVX_B8EqI1s{6ZIF4Vb z3Y0wW9ugHiD8X|p{YhmjT`%d=r`X3yLdL4+{PZ%afUgFnv_^%_cCejL=g5rv#{9~4 z>vPz`@x>LxJxfI(hjN1FCHfE&-|9etD^EzadViI*tanNB95g;?{*z-MRm?Ffc3o50 zXapEA^W>UtLaqKdNHri(*^FgW3S=K$Nu-h6XzDFgqWOY0@};&JE53*h&#C$O5owM^ zh2p#ql-k|2+70UvS&_#*cDJJXM^!ziP^5+z1KJ&8`8@)YJK&ewCUa`21obolLqm#q z8Glo`#N^F7Ec8P2KUraeE(yVQ)1v_U%bVh@`QcM9_nuu`Da3_Ep=$v&r~_y>H>lhc zt{%T7-o>)`6@ngfHPdqg=LUNl(kwcrG-XDCVebO?t!FuMt{wC zg^;pa6Xo6!E9&r$AV}Dhbb^z=#*4pynMvoDeQqR!>r8~SIlpY00=*B_+bO9V<}Zyp zCxS|za^^Z7KTcXyECwnmwPKRkF}w$8AIEdj6S&x&oh2g38v+dl{%@8Dr1p#l4f+Tz z+Yo(_g2?WV@gnO?%jn!NT1C@(O@BBHc3o|nvBwEwx%@^$bY?5(Ze(# z8hM1LH46}P%U>w?=WLVD&e5IHu&EP$Av4?gb|&9s9CV2|@sk=D(%7TH7?-mQ7V)ig zdWhfHXXv|`?wLRVq_%g5{-UB(0SUMq=WY^1+?6@Oawnso)vHs%e`mm4R#(A2Dn$fz z;R`h=aG9^EVJ9KCSWODUihnw->f2R#R$NL4%>)<+Ej_`+x)C;_8VyRnRU@rrTZp5D zKA{2*mO5>3Hy^yqB<|joFL|TgC5wD0b~%_~A^DIxi}QV@EO@%KW*csRnGnur6d%B4 zQ#u3A`W#ipBc}#;QmyGrs6jY5V~_>tPK`yW7IPqno-3{=^EPX(A%CQ5x3)Um`g)(P z)1tEkoMLCLBd>VmYOn_Evu{Zv-Nl*3i^|^4BzgtM%GD_HjTE;;1^zEaHn>mxJ_5n| zY;n&amf*XwDiFMz2jrO|<+$elL;A+paG@(gqud1T)hK}hDr9TRJCl>!Fo0U!Fm0z& z)?MTlbq%klRnp^#)_>%!_E6cGn;E~=NFH^dR(lE}YV_)KZ6&(>M()hwa~&d6Jc?k# zNa7mgg^SpPf>vo@I{SQu-tOlP>@1*0?KAl@$7)*c zDBwL5y%FJobH@!nWPk#q<_;BL=qg-6DUpYl8k#LiW8MeLYLSYrtuS(jALZdacR@7?K~{ZL;y-8 zRd_@nVf44wAc(1sigqETg}!qFJ!867u_d&3IkE3w#QQQN4ql)zrC48X2M;E`zBRT6 ze+MP!B|mmnuYHLxTuQ;E{?{+&K^Pss`yRvwe@n==UVk2c)tk}@9a946gb_QfT%^Hk z7m2kPVVO4+QCrb<;37x&%pV=6&oXN`v<@YY?QK7`AY>Rk<$;qdJ0kp$Ahn1XfKl#{ zIF|ZE{I*VW?8by}PI!h_w^gUM-CZXzluOV~u#7Vj;(Vk>Fp*HV$`wEnErMI4XqjaR z?mHO(JAWkDE7u?of(5dm6yCPXGO*PHA&x$KkCu(#%x(H#RZq zNyN6U8NVx^ZIxCF8QZtr(8y9-6j+8;g1J`;n5>8?|e*Kk*e<9iQZq)wYr1m>^u^po&jU z8y=l9a_!Y#PmY$DzkeFDHIYr=o;6gTmWj*Rs;p*6^>Of`#Q*VO^Mt17P)J1Y^@s|+ zZ+~Tv9I)fv+Md=jz7V{>03t3?1_ek!uqCQlIDB`c79OZxU=o7GI#gHxlrJKk>@Du! zc|gP7tPI)SDr^2cA?cZfAmtcHx|Dv(&0`@kWz$gd@CS#eO-ID(Byh;36viSJ%J>81 zS&YhST}ohpEkNw-0A9xKSDL^%sTB%Db%jTp8)#B6AanxR6ut++(U>N$MbU25bTDD$OI<+F0$FMkWM zX;|6E04~h$dF(1lETejYP*Be`sR3>v3y|+Ri>YglIutgXuQ$nu{Gry6Z49VqRMnVjj$9gw4K0?u5P3Au;iLy zzie^qsp@eR)ux2uZpedauMHx*cYn}myOGZw-P6{Wo4U(K7LMf_Zsi2G4!L_AnF)gY ze|v9@V5rSDLS!da|0jTrh6FZ8SZL*KBre6d`UX2_s#qL7Bn7^IX&<>uLTz*DK$3xk zDagy>!U7DyIpSWJ@1$w{#j27u?@{Zlib%V4YA)E6EUz$a%yifa(lL`7#eamVri`1{ zU^7Ar180E>qVb=Wr+O(!+M-HvOXBjP?TZM~y@dt0n!#C!+TDPDOgK@w2Iq#AB% zCT4^tBoXeay^8j>OC8l`u$AGuV^(>3*fWCt=aUeK+ADd-nbVr!0$hY>kzv zp|Wv+dO1jpS&CU_S+Y1)xPQ$~eMmY!OVkSEtW5O&pq$>i@!!yo4FHlO8eOTn0~~9S z%_Do=d#46yo0(<$4KC(Wg0M?|*34X7Bv=gotj`S9!%h%h`cE@zZ`7@wH0KXmd$qWJ zXr6tS?aHBKS7SMWk_%gK_&&*w@0E}Sk0sS>Km;h`QcSDlS;3J&*?*2OksdaVQSuV7 zvDMG$mUd7RJD!foOi5eM6U+aV-aDeJWWAOH$n4xwKXJgiLK7bcW<>WBIIVt+aJC2+ z#QtcffP)Swh8#eXYt14qC5wZgJ+CK}$*tvxJVZdR7n41b>0fchru_VcAvU^7EU(QDk966UW&6r!Gd z4_w6y!vw9uhN)nWMZ&!^Wt^i-3bF8P7IxA!U@7vZU2p7F_XSRw;^fi|mOqlI@%BL3 z0*dk`AR_yO?U;xR(xh3uI4+;BxZm<7G1j#l?<#=~j(+P!{H=7%e7x-$*+qcqX)e;gUv4HmZJN4!0ERt)E|L3S zPtigD3sn$jn|R%GRLSfcBaXRyuAQN}L%Xyp?2{xO$Jd}&Ze7wp{CX4psrTAPt@^$N zm+4i@J=Zc+3W;QcYO>}Z+mjO*22u!CI4b)Aj1&5&cYzn#tvD&q*w%Y< z+UZ&Gv{0wKkl)9*+74-gQ1u|Udg~C1C31+J$bW|G+ahjg_6ibUVYr$!R(>z88=Mz(`E>YqNSw5Nokul80;9C8-x)9hLa-v z@yFd0^XGv4imC>3i0@Nji;<0()T4%HY1>I9X->%y4mbD0>@}W+E?WdX{2dD`F2&D2 z%zus_tH$6+^=Da9KPc0OzwPn4^`YY()+fu%8ipT>qOD?x7BVTh^re;(tl>QyeStn{XwY zW~h81ZLQh`6M}zG@?_`TV)Vm!2tQnnseitR7~`2uIGPrU>8OaTi6FEF#OSMx*{pwgp5mF{Ez@-phX&WB@j4& zFa(pvtUl~jI;PSR=*lnMP1b0Z2!BG002!ZX{V6)+uD9ww4J4)_{}~?He@YvQp3$hg z^@_MUXnJuEb)foJT@(GUNxff;IMHh?qk{GpIrWRf4e&%lfN*Rl6{XMek|cF2;(Ac> z?x>NAzv7{Z*ppVbHD)dvt^izXYeQ{H-B2}* zaAljt*HI<@1lnJ?7bvc9qs9@WuM5FM+Kd9s4OiFCS31dt$gTS6l7A8#Ib5!T=F}z< zUrTK8VoHEE$8G+iZ$Z+9T#nkA%)a##Rm^0b-WKgK4XM+cEdq-;55^jTQ?9i-zGZ(~ z;uyn1F!MgDI0XI8Niyy9R4p5kgJlV8ZbB}EwTe^%@SwLGh8W91E~uL}<6jNHh!;n!M16{zJ(awgEL~TDwd%`=0`Y z-EC97+__ko5&S#&ae@(%#@PMXGJ5zsWqR>=PSFL!jofP8On*!>v9+sZ&w88OM7^Zq zrPGlXNX=y^eqYC*RcZ|RQrU^jlNtT zz>c@BhnVPPfi-&NCVm-mYmKmRLpKTQ(?Es7t+QWBu{q&_w=eG+Hz6D;N6p$c zVjMOKH+zCgwtw1LcmO^!Du|3MljMMq+k3gp!2l1O&&Lhy=`-DPGlkiE@F+)=6|o(W zsyAMYorOTSmuFWAMRq zixUQGa_k%Zhv24SAKq|q;h*ICmU-cwG3EMW(CLl4?>Sdowh^LQIL!oIkl<}m+2yK?{kg|HF8#uy(D)@No zNxf>XhJQY~C?miiwj@-}7JDk_3=x~xf`G0*ZdC>2w}CL$PVot<+=2*W{HhHtDb%XdX1anWtz~tRCWoXv z69VQ+T1X1_DcfPH!2&SxgBL7+2mJebNOil_1%K3CN73qJVqf=weX4$R)6%|M9KO5C zl{K;5YFvL4oHLiwQ-mx;M*@wt+?PDW$l;?{D)@FnfEl9$V7%s3V$2nMDPNyWn*TPd zm>U~TE@s8qQSRsHI@wz&ag)S;-QI>Euy|Mu+?->2N}7KVQi8^(Qs~{IP+}cfKKe&m z`G4SC({?Q2e?75MGLN{YDYIzV5tCwv~`bKnCD@~HT!2DBg(m#>T;1JB@|W-1RjK?pH=I z8~^CjY>^Qfc1WfmcnjLj#RS$YZ#0LdO7($byJn|Q7bxy)p{q(jmLB$Ao`3>hwGMg< z)HFizPh)cXurT)cABn};I!iLF#(QFm;Dc~eEGLOsgl8Jyb+NeB?C!D85}ev@J%5jh zYxUvV}a^Xlz#zL#Qf+Z7!C!yt`ZcVl__C&>Q8_CUi7>pM)Mwe7K6XjlEE(we( z8%HoGQgn8V}G}?J>uQkR;0IRLZ&|ehd)qS5_xSuJMmTjISDC&IZ^1gpI*-zjcrHp}Jfy*&383)2i z-A4-^8{ZFTu>`{%^~6fGcXB~~8 zvl=O*vn=eZ)vp7^PLS1YrrF)UN4P+)rLy zhcM+zjD$_}EVyT1y{pak&8}i~z%TVJv1|2`Yn^$ut~)<8Q(_c$ z<@clj2A*J+gZ}Z;1c*V<3YIWH4M71Ps;If6NKS(HHs`!;ItWniN6zmi4!r=!>NFTY z*4H&#FU?#z7ZTEx8zt=QF~q`EwUJB2uC5P6==v!_?w+^yDET@`n}4wbnbJz~{ax77 zXHy62L$fEBYJAC8Jv(bJ>#Y16OH5B@QD`|43~`DfCQD#@fq0ZFUPfuyKcn^)>OK%* zYPRb)5snWbSzutxWi)q?}yuzzx%FjP|0dM~-5Lt(2M*2IA&tX(~ z(h}J5!n_%l;)?gW<$rhYD%eUja--Qcb2jWKRs4P)L8rV}mO6;={%u9=dEsj1+M!lY zP3Ro5oOqLinE+kMW{dH}r1+6`_Kq5k_T3&0+ab|$)yqPs>i1-5$cWWcv$zD!0(-AvGX%6>OiHrA&~tu`BvxkPx3yj^X5<)t8FcaZF` z0|MM=9Hq7e{+-dX{NW`oCX?oKVanHFB`f~{$RoSkHn(y<&Ty9r9Wiyt>T6p8lae{; z85HpXf6ZbiWd_O-{R?xs)b>V&q@Hx)x;JuZFn&2*^MBSD0p4aP^LhP_o$*|Gwtq{l zbXJZXmGvc^>K8ls@Kf}7#3R^tB9mTC5S12CS-e2CCd+DyrfB}mXVbM;F9dqFaQ`(j z@XoXLO_sMrEhPMH__((%0p?#k)+ZmBX&(r-5>681<(@j)$%mfQ`%zOzuHdB+@{lQ7JqxyN?@BR+mOPPWE3lr{SAPpiwXf6!1&`Q09{*R4*afTv{|z?2 z)G*Pi+THX`!%ZnZDb`iQlKD0}MOTyEhTTvaBz!WB?*3Gkw!f?-uAKRg5-jAYHiHF9 zM*C4t@r{kar0v7)a4!U}NMAkjx12ptRh9)_@}FLTmz}1pKe<_#PJTR;FUX)uikud_ z>woBOH(Ui!PoGAoLfzioyd8?}$}{vAF~1hK7ZjnOE|fC&iOG5l9XJg-F-G%xLRKko zH#;3Pu&u`m-)II^ov7`-py{>!=EbxY$atd<&`)OrKSN2`J?U3D?Nl~L9)He6n8^djq5634d2#K~OyYKD`dgubeTMdE z0IRp?j9I9>$6Z*g)xBQS*@X&+w>*rejYA05m{$bKk%$5kz$9S_5mxHuTdL73aYb7f3x8Pc zL196JwHQaQe%W~rj_EDcj`_i3sZ z4kpdimy3td7nhnAi3h{4^Si7(Ne3Wb+a!;H)#ammIvJSdrCyC>?^w5N(W;Oj>HWwI zohOL{UyshxRt6F6ykdzlAltW1Rrsn@kFseCyU z?pNiRJDn5wl^^p~??2-+vHw`k+hTUcfB8k0z0WmQrCeni$9dShb6uk#8lEpH6iAj5 z&)k|B#j^~^!t?8KA`Qse*?%2qXR;8h4mlyjUWpZp9WDs7-6wfFJxWrUn{a()!(oVd zYTl6VJ)L>;@qrOHcm7RYyR~3%{Q?e$O1A9qj15wT<8z4suiR}2BH)w{)JuYMwe8m$ ziL&|QD51+f-}lqaYMPeK>VEtwQ?fZ37JOBxNW016AY+Za@f&vvXMeWv3VwlRrC|fX zNRp66n~1S@27s12ff;rr$3uXa?0BSRy1hQy?6NHIXci)}gm zt0G#w+LSV_I5z}GIS^{3Vw~f8<9wFqGI|z*Fcdk*RyGuKWq&-JvfL%((5o{ISM&W; zTXcU3E$z`}2Pn~bpWM4Vdg*$Y{33FOD9pEWt&lYWkvgBY&B>kf3tNLHg$1#Vzt9WV zQ3KGaCroGh{~@Q{#6;KevB)IdqbGtR@XGwP&1aIR2S#f$Sd>{4?ffz&<#vMIJ2A+i zU=^3pyy}Juy?>Pfuz0`!1tr}!kfoSVXfnaAxe3i1J$Bed_9yD=_4>XGA#tB3L8rsl zG8ejal?fAwF5J;7TE`Sr1k|TtbdWVJznQ!a84AR9cIqZIr}jFr_cq+)Yw770)1dfMJ|*Y!@?}S3W(QoPVV+FsIhmRYp9)wk9^-B7ufe z%|Ya#$rpObn zsszTMS$~+UZW3kTIzDbC2G8^l2EAa!c0|2N!ECiPy(mrw21W{{hMw_@Zehcf;7xn? zj6f8!o*=9D_6k7+0q4dYuI50N=J-wYL3Que&3_Kgg`iiioQO;dW`V1|`AFFT(sXM$ zRhzf>y&*k6qK0*)?giq9^%Mc?{FwI5`K5||qtZN8#k(IF1r6G2A2{nf08Bu$zf*VS z@VD)N;UK&JG@J7N;Bl8YS9P~6a$vO@k%RbS)E2jtkDjNYCLK@x%0SnYTx})yf04KR z^~~Gqwmg4b4nPHcY8}B8!rw}+Ktl;G!_jM)kH!VJ#B*T`A>)Z0u$R*cSYGVhrmlp< z2PKjs(BuB*B5XerlrKb_F6WBA60>o=Rj9!M#CXKHa$qX z$~p)?UNSvPBO5Ykx-S{ZanI{Do%_FLK|#Cb{^J{5sM<;fKlNKj!l zU6+4LT%01c2b3UsZb#|NtIKN1g0w+wR0m<|iA=^~VS(%!lCZ%)o(5ZHadgfk!k|ND z_oA9(zR57<&#_0uEej9vO}4|)o0>CH3Lf32bqQx#u0MKyz9Z3Q_n z*IT~#SC)1DkCAxWm)sm$BhGO%SA@$~T(W;kyr1ER2b!B5jrymaMpfS2i~sH`CFlZ$ z_&c*39GN>v3v)A9zjtl-yOwaDR}A!5+9$l8{43wCF7UF_08K+d=9SX02h8!fPGfxe zlDU!Qe?0{)HajF%`}x6P5SX4!PK6u`>gCT{6wzn%Nl{KzPDaGf|@g7T@2^aEN*=_CL5M{P}p{&{OL)*jHh+Aeb^* zbS#t-T&{3Uhqm$BQvAqXpIvjYM;R5b8YuqqJ5-QmTHokQe?dnesd&CJasH=fGI)MT z4tckFm)ZuQsuU+=T5U@L#Dfpfm?wY6Y=?x^oML&($D{^rP&cl$UQmAHoHFQz@)^Kg z{*(w+fdiQQol#Xj3Cnftu-+In&mX#FYvgh|S1j|C;?r9iKEU}9aReF;Bb*!_N+IXH zx(~Zo&J5H5j5n^lK}Nvy1u+t#ZXExw4&q!M>?cp7b`Nij_@lGTO=x<0#`b?&ps%pX zM1qT>Ukbby(DzUA>hNsNjm!qKgSOQ5hVolIdm25vP?*|nXWW7Jodod9mOfEW<-XR< zD;Mxvt=3)n!nPgj23Dya&C`eU_EnFqKwEUz@7bqL)mPV_#+b9a$Lt?neUTA~+1t6OcsiIe z(lXL9Z~>IXR3sTV85jTzbj&bhWWr9ShAx)&b|Qu@rd$AZQxkx)sRMwK3Bbg_zz9PI z5Vm*lbh0$JZ~;&nQ~lcre^9eAG_ka`bONZ^+t|BV8e0H(+}zv*+?-wMoLu?n{yC&< zY6@_%Fa?-d+L!`_B z`HuoHwzo5}{8vuSbpKAk&dt=x<)6gNoa}7@vZ5-2V)Ak-08wFje-&YXp`8gpM&h62 zb}r6b|Da8cT`d1q9Sy+czmkpNe;O8@mbdHhGBgJEO@m{=OS0E|q{E$v|F|HYf6 zotZs=?LTG{SBL*`{gaUMKluSD|KX4dU}9?a58BnnM$XXI6hJ9#Z|mUdV(J8twKp+! zvI9uE82(e)|G*4we=Ti1|9^r15Ah$kpq=?Y)X_4s&@r(5$8PB?X6a#SqG0Lr58-Bp zHvbUyZ@aqbe_lt{)Wp)&_CJ@H{=>>Y?`mRiXXE+*;{H?2zoXI%sS2uSs8Rp74gT#G zwKKLiv9vP>D7*Z_sG*a|e+~b3D;Qe-r-uLx|9joPb;keIe`O6_oGd*6+6;96Y7&Nj zeg7lr{x3>M$lk-7mhqp!w9HJ507e#8Rsbh6lh6N2*Vxs`$<)r}-?aZz%m3*AZYNVy z4^v~9ja7SN?qI95*3b%H(W3cEaO(M416Ar(M&PxX-dk;C%V7%>{iAD~2Nj%rcR2jH z03+VLt6j;5e->iHI8(Tjsp)8z(fha;*8M-<(&iINPptjm;Ty`Q|VHmWNLlGnI2HrAkABZ6y6x| zzwU2su671UMXpX+D_$4B{2tUZR7Oe_pPAq<)H3?SHdkPPAl)OzJMv3BMW7`Pw?k z(zCLgK;`_kAdwi7${ny++%o1OPwq4ymqdPfnv)mucMD~xCH`2>Xfv9+j)OxW5-XXM z-}^Xke`GGlSpLPucu0QN)v}9O9Fn(6n1*JH5&&2>i-rA=+s6Vz)%YfO=#GF#D z&nwwk)H?(-Zg2CNNrGFrR|#i(m}Tg1#1gh3Oh)aPsmOhV@v&o1-3}b+;XRGiEnIfi zWHR*gP7$bpjV`4l>p{5LxnR*OO6GPxV|=`|fBiOE!M9So4k{1^S0U2cGg?ien9s+7 zV6VD(zU6OwVEMFE!BT&P1z03$gp9x{|K!^)5Iuuu>du;ERkn+QRoE~>yQ|MIpiwZiK3>fh0p+f+X ze@*>>mR6Ho%R%E3Q|aSz6TUqYfbcJ5mh@owxo5=5S-2=so*@-(56mV+(lvB6w^#W9 z!e3xp4pue9b(YC$SEbjPq)^+SZ5wsaQZx$18a9~vwd6PXP5*D749G-UySDmcoc>#u z#eChWzbCYgb(fZaut+FFe#Q9&qN6Y9e~lbsY1l2Mw;{;62_~M1d63?@XM$Qz_zxMj zyb|vc$&Uv4ml6pfOrmxKjeC_fV5*2Mc7EADDvZ}se=TSSb#jVlE+SXw>$>>jU8vxd zXC5Kt(VQAA)L^A+S3*wNl@AJp9rNahc^~h`&Wtef&-cJ$BX^Tual9Qcyfr2&e?Ath zm1NID6WzPWE$tj`?c3P*4WqxP`{F5f<;4-Oz?;-V3@B$6IN+1Id;)mR0z%1l%3~f9 z%~U@1wlw4O3w(5WOebG_a`baMGS=TY3jFEzU1??Ct0cffC!k!mcL&!XF$#P9z-F(Q z+Jc-;rJ@;ve8j6(g1e3O$d4BO4gn_=g zt4_B5JbTV)ZATR~oF(7-5I43T#pbf!Uq`nc&j!_Oc5%0CJcZcTC=y?e@?Gc#2P+ne zZo#nSR)`D4@e{PSCM!f1+nk~1ljivM6X3^uhfpVLV|GtyoDQ%P-7Mg*f7N`_hs*WG z?Rpm)$Qq(YNUJ1?LMMY_;YR_QKBtsKU2;)RT;g2Ip2)z2&dyhiCZI(HWHf-_hE-9( zJx9f+p+_(KvQtC3bFp>If@SEEwpO7UGc2cfB^IM)catD9$%W=f{(_PsQ}!{Q)9~rG zgkAs8DkkJCDyJyYD4PfJf1Gwp^;k^~5jb7m>?5fLV*`S3y?-%!<9d-SZ6L z7{csIs9KegVcXyjr*L}YpiZPtN8U!*#hzR1h*zf!b5?Zj)RjEM)ls{%<1|d`)n9a| zUR3_5X@r0wJ_2LQORl35wT*2%hnQDVqi`CnA!fV1-l$li%#pM!NgEDVW>8GCksBY9V{)oL#_c~MtKs)(2=hc)g4vb});9=f;W-jryT}l^270l(bxr(pOlcNNLfMOKI;-o$&xhzG)nefh z>8+IgG^K7^6RDP&P_Ra8;bp(B_FhYSpp)(GxPwZRT2t(nkm5$Ux`Sj4q2XCW&jEQ!vV8xSY^l_Xiii7)67EEvYu2rEzi0qf? zrMNmJ>YVene@`D2+StzQK+}MF;aCBG3Rf-vGnHUSKI;PETxIRBv7cvEPQRuLAC<)~ zA$b&B{nw_Ng6%_(ERrEwK?;vbDTJ1{qrSstHt@d-LXo_vvHHvewn_@rYq)IT$D<{m zoZXBfGA)s9hNL11`)+fY1pWE+w)ab-?6b5)_BwZlnk{wV%&LKEZs?Wn%jY?V_&4+Jz8IVP(TfHwKbusb&7kxA5$uHUxs&(S# zvKi2vQ9;kmuo0u!5F%MUk~bfh)@?ba?z^}Vded~ox|5(MB7~iOx+-0qd0y+TYSq%T zPxzlse`x#qN7S)IJ_p#oI@$XkV3lrjYjmcTD^vAI0O)eI{TY;XP5M4PS=w%(hX@)G z2pNeV1H345aq5_{k+6OsOEl;wgxk_gEj~f}O?%#l8<{u)Bm@X%_{jY%t1AjxEkIBI zVhK92k)iEThC^g57}2OLNNku+GuS*Cpm$|gf0u6U+S{o-gEP$S1jX2BNP}Z#WQfSn zRj0`BjVVyxiv7+ZTefsyF0xi^Wk>9>6n!U>NT*;IuT^7U8gAIzAH-_k`A ze|U_j*5WP-nvc-L`hI6B9Zb;V@Nf zNDm=`V~(0B9KAcFeEQQVkW|=LkpEIJf8>ZtEWP|iUMD{uC-}1C<-BHw8rDP55R!0Q zagcURC>o03@+`@eR*F)lnDaMwrWOZ(yH5ZNTD=vdD0(WRDg?uowCvSNV2NKzKgQQ% zREkOGGy6*;9X|2iJLm5sT48yo;Ef0{xUFz*@wIn*wbDKxtL7Yp?sV|M8hrR&f63vl z1lny3jAK&-dpr31gSa|oy?ns)%e|ZCSp5NmdK~U-jSnraA4_-mT8>#Gmj_buHhwpEA ztLif%7{A~%!BMU57Zx4G)kFcEIWc)5z194bTbc{hs-`}mL3cs}Cs&ztF%e|Bv^<#& zajrWkAx)KNx0cwqbCUP%@e+_&Rj?_Yx z2BPm%(~*QfmzMgJ9o2 zHLHCHmm-8ldFLEi#){B1MgoCg@q((n0vi#{p9PN(wzE;gEJZ{MGs z8;=?bN!IB?E^THDuC>OMWglu7Qf`LCs78%Yc$VL0ehs2Qm{%KFU%U_v*_S%++>(j! z2FCePOwBi^H+;epb7+e%_K}%;|ByzS9ef4{5m^VCl_q!t^M zP24ex&R@P+EjhP{Em%`otprVOywGewq#uvz`qYm7Xx6=t>lD9O!SbPo1az#2W*x*UP12Fyglyc1hP4k7G(K8Qgs4 zkWECt?Y#zH;wQZfHc{}0;-(yYiod>YO(Z!94in?)qf|ptt`J8Prv+iFP#=btV4bmgKwaa4yn+w!f0Z2WQ6Pi)MT7PA(zD~; zx`0ux@R&VoMBWRPawEma6;{_qEJxglUg< z$6+IyEd-O}o~k708G7K`ZXkPwl7;@^S**)_!suL+ANJU|7HZl%4I3~ASRvv-C zQv|Wh#uabE1CzqG{Yp@>!~a2q5sTOfb?ABv#J>iahnnV-(zNkBgBTi zw9%EVz!|#=$xHtSlukl^aME8Zb{b+B=8(Q=92Qs|rj@JAbRZVYvq@ncZl(G7<=+ zc}rz4r2r_>^yml{_900V&Ibon+20bXmh6JRe}foT`+shAJaHH}!I1*>zi6FvSc!z6 z4mxhMzwtLVP?4S{Anzu4&?`WMotvEI2J{e!mTH2ftR-f9J>wfaJJ##iB5xeW2`3(#t{AyDhQMqG+ukN9jabNfXE}7zrh*6#E3rFbkM+ZY-Jr`g06V ze}bw3eGATes&nxU)-CSeGS3f@-4&|83~)-C48$H$49Q4=UeyW@UN$btup(5AoASTY z1}Lr%AC3vRG9+FRYxH~O?_wg!N7$9dln6)maw;|ww?>6?inmVh3PoMB_CKs;PRuxV zi;`pT&o3xAc%7~lN_3h1P}=OCYvfX@e?LQ8^@h`$HS^H*$oHok{}5<~$dXmKNp%h_{@tEOtElqv?w4S#ID)StYMk4y9`jg)DeVX8I!P7xcH zaT1wh;>Sk8-!y>6fx+NJidlvohtfLWv*&_4bn|OEXWzX+nWa;yJj)|`M-z^+f0IX} zv*zLAO)!a-g@Xt1WaxRzr`E*{!4@qTQj*2TP<`ki<9V%FFd#K`jjbQun@AKMdRLLB zZSu=YnLNk6aM9PMjTZ@dYb-IOwSmVyo;zEz^%a==WrtVJfTok9tMUDDHqc{ksNbK> zBciAb2M9r&>SpQyFKl^8aN4=gf4-&GRY!Q@qY;Ty&d2OHFfQj%e;j7meME&<7W%lJL0GyY zOO-)0Q>yfK--NiG+P!|4DDp=m4Af+>r;FFGM=7&cl(6ml*C}!L&m2_SfA$aM4Vn5t zD^~p-te<0hgpSYv6Xd{sZoATW|I^0kN@gzk*Q2SsP3}>WNe0~8YYp{~H#%uiNdGQE ztFc!&(f$g>%)?9*9NrSGU0-{ftaMpRcJvOJwRALP;I&tKIavZuXb$0Q#~xesdm4;%TCu1iQkLe>6Y*8!Tx`rmJPLpX~LkCdkqbI$c|O0^>(DvXSQ_E(1*Q z?cZnzp5_baUC7=#$rIu=)E76v$Hf8sN-nVu&9l+$R+mvLqGWwPPKmJO>fXPtSJTdy zSE>Gt2PgHG_7>%y={j6Gdwc$>T_vm3*=EkzS)V;};F∈)ectf0X18QxY7m=hnlj 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 delta 131966 zcmV(|K+(U_^&8U58?e0u0XLV??FK1-rI$@_+CUJ7@BE6r6{Irk_j-HkN7^WrA|)+V z4{Z+woYX3|DRx@r-*@a?;{|M^1_8ENhM9TZSW3D@SpH{nUei~FpY;P zV+Ob}WNMf|FQW4Dc0QVY5a?cjWmJ&)J!#AutNDt28{bSM9WS;MhR4-YHkoo0?G3Ki z@wypRbR2K*CxVXiEsm*iy2zHX`*l8H9LMu@G5In7IC?+d<#!ktv%3wl_X12?1#UZJ znhFU#;s}dGO4{csr3@%$@vH@ZNNGZ$q=AT2Qwim*8lzgL&rfN&xO;PRbx3z$ybtG- z4ssr5GZv^4XR=WPR*DmB-pI{?ZT?Wz+7&!a5Mk9n>w&AT>wn zxIVL@l8a{gbWDA3)fm;(3aBg zHygZ9nHnel7Uq<*9?Zab2WFf8Af}`on2_gT@<>9Yd5DR%vP$s)voWeM-{tA%v5dD4 z^7Ar@u`T)Odl7H2lVN7#GL5schdzjTOdn7U({m0~p9!xeSfNkAd!riuOP2hZU@wlh zMN&RF==|QDzb3^p&x#~}`_8$(UaXQL&-xT-19vE}BO4Y#a^ReuseqJVj5?u!H>wrz zU@txMl{+h8sP2PpV|2i_6vMPeVOKx%p619VWpskp8}(22|C;M<$PV}xY8c*D%l4T| z6~m2`+TX7n!#74JC;N59j(d}*^&(sKum=%4*juJScEuEk=Wf=2cI<|Mb}PpKyEpQM z$GzA?yuU@Oy8ACb^RF+OE^j376QB)yEIi2WD3(BNzGTwt9un8$N*`zRMHe zS$#ZwaQX-Dd&8GO*#Q%?SqNSV0Wg=*?FK26;Sv{EmgzvI8`_1F80sN$GIlZpZ{MSf zofrZM%aUvmQLGdD(|>e+$uxS1X!P}nhW2!DbbQHG#6-%4f@p9b8J23wBBfPojEV;1 z=#HGts+cpfD6pYq(ZqiSlTZ^v8yVvG66D%lC4y#Y#xWqnfU*sk;_WdCKyII>ldTgQ ze?A}CE=EZjCz9?_gJ3(!M0W|3IGLi~O9NurB8Gr?U;#hR9pTMHjnI2X^kcO7TeLet z^FaH1Sp~?~%c-SorJa$Yww=O}*DLZ;hyz{JvfM&fv~*`q#-lu}6u;a`QJ4M2VhwPn z)PCz$ZdoN{Abb8?<mP;e>7_=a-CPrBzFZQky7rBI90FrMcGZTavRaF zm)zIO+j2U0vP5ma6)(y|AvH#~ZZ`>qlJ12N= zc3sED1_lL!5=J*v;c$=ZGcURl{Nm@p@Iw{&s7xs4h$sK%A||?m+|HrPD@?TKf0&U_ zo{_)MaA5o~@a&@rDt)3|=hLE@dsB%CWxc31%lYu+=arogfm6a@Q>Lomi0yTD=uL57 z)J4@sN_qi@E=8TW)dHv7sMg$S-Wv3_UIC?;e++g@V$~(_*(7h*YGAge9-!&VS9t3(nypbC( zTZj|iF?(DhO=Z+UlNRXvyABJKw{o-&ZCSb9`Ipz`ICOa*v05bj=EU#2g`a~g%z@F_ z=O82kp_}5tS=U!;GwQGcI+oei^p%0-Rn-*rqQe8^bYg2fPIJw26F|0^+|TXmKNV&Qnuc^QkW ztnO#^H0Vlm*tZk~x>amCpj#b8xx>EY+BvH~jN*No=2K@Wu&v-s0Jq`1vIE zUO45XXO+7whSyt@p6gTUG;q+c6LBCQcG;W2YHzZW8Ql2prRR*K(Vqla_chCSs#S!h z#J#!-@5Q zbf_hj-f-p-szWI}sbr|N8JT*wz6@zd14Ibt{$-NJ0b-2#X+R@?vk0j2#{n{bIU0Pyc6062dF{&wv1Wl$Mufhy}zZ$P@ERWcgS z!4jx+ntd7U(kG%i?CZw`TvVI7lovV5;^N_>H^j<0gGk+ zaGLzYj8BSCA(T8h@dm_~$C5;;VpUi1`Dy|x{+&DoHl|6;oo+jVmn{~p>%6bxe>=O( z8R!mdH?vS(%tDuDan<|s4a9uY`xqcjv_o1`E+?J*f?)F^M!#3_+=3u}F6;q4#$Z-)9L#;ia+i6izP8$(A{2`Hyi7hu9*fEm@7w8sbvE^CBXf zVd2)fu5LlwM9pf%cT17WJ@e4ge_^d-eb;BvPFoTY9%^o!*^nj$=?HRz@Xx;wpy2~y zVivFBbQ0T#$R3J@r75bvZWe*LW5!Sm+GeE!--fX)Ud=}EM2e{tKF^YTmCdvr!f=;=JXY<(HW=f2f0iMGN3< z3w2;*Z^W72S;$LRS|0%Mwv+$V?61TdDcA`ttfI3Y6>gw9`Oy&k2KE8Kgsd^`dk|+z z`CPVmP%)jV$%BS4i}_|l1aG2=yIr0+`^Sq})nroHF7)1Zdkkqs9p{6b_0jmMnznl? zoU8j2f;h5oXFpOf1`~HS~sO z{{ZM4H8_(}8YuxYm(lG8DSz#kJ#X7E5QcaE3XbGJhCGU2qmwp8iw=gXE$EqXvUSwGJ5x1>~@T6t?8bDqi-*a;}Gv~oz~lJUEv~RRDUpTr2Ldp$d$MvP&RCiSLD%=fXu9nw!+ z!}ep7II35`2-LivpnrnPxMtibJyoHiak^2WWB1oGS#JWV0PNKO5?6Q0YI_Ip=T_Sk z)nn_jN4)qAVd5@(iM79Aw!Mn|sM-EVDt`UdCV=ta{nSC8J;3~^x6Tv822G_Y+Awl7 zZsPI`gYeD0cJEpSuAT51suf!Yr4DKhhz$&#FTNsTujw+bV}BE?RqUp`8$P{N#dfnw z6HG|GeM!v&t*eOmE2b6QV}?N53=aQr+O1?FWWzEEZIPTf(mZ9dEStF7eXrYFvwp%O zUQ?>mnezI`{(HJlizu`ubV7L1bX-@6co~Z_z4V-fE7l`c3xjaKtb!HJV*O~NvG-OT zWj)yZIiLLjYy*E1T(hGbFA4%OHJ7ms0Vsc!Sxax@I1;}1ukcX@5|3V%rP)&!lPr3% zgKkU*n8VH-7+JBoElXZePCEa7tLiK2;i#vv7mF+wi^XES9j*?maP^N5p??4V_~ECA zBwI!4CP}k+_4vFhqD>w~t1QnpMUkx@_p5&g(fT%u!Z7&Qtdl6{yLNp`-~FZRZQFmW z|9t%CPY>~SRcwkZ&X`8Hx{ZrX7!}z5aUhXvE@G1ym6mji!ajIRp zu4?4U^&3F$ay}D>dC+#f1E@b%JjjFle?0*5N4O0?-qG*|3wOW%a+{?xDT2G-etpSl zx{d;c2)DfN^Cv#*_xs<7K(xd)Frzs5e2*`m^t)~LEwldWWS=a|WCcvfipPJry5ox{ zJ5~mQCV|=SEz5(sin74!MpL^M2-CY0_YP28pAdf$=GRda(H$RjGZ?15Bv%KRyvgm- z^$wy8Ns^2ldaPm-ZB>aM<-jZpPR2GE9a>ZKXdAT8fb>V!OdjDiX#l`B=v&Osr2fS5 zi`^?dqtuAgzB3{?n!VWS6(fJp-Ud&$F`ccP-?hg8IzGb7u5~&d%;HQ>uyAp2EO?S_ zaL1g4>68*08jFARa3Dd^zLUhUnTAA>0Dc0 z0)eeQD=qD-7ba8H?fIm}01OcaGpQ%G(2d$tY|6#Es=0(g*`8P&bc=s)bR8=kzhOy8 z)0aud5&MbWmY3Re01vtxhpH*SlNTn~(eC$^=y9BQ>xyt!CR*1btyc%QFwQP#GG{!M z7$%i*7CwO30e;t4N?9>`p(?_vnjby$wn&0|Q!@6EsN@OMijT;z%{N!`^)F6yxhiey zs&iL4eHY<}fMOQ(HNbx@P1813^o13t#^UIpv1MPKRYmsWGtik(i7h3yRQm! z+rUf)JJs`HqS^Rjgj2SSW4^5G-Q0km+e@c7jL;I}CmyKqn+nFjio6XAxhmlz3V^~> z4UH5TfAwx*ax&b#ZS>>=8AnG1 za7Lj%B?ApUc(M>rCUA|h%r4LOrZ@f!qqsAZcAk@&?EKsE(#ePjG4VcY$@z>#i9{N~ zOVAg$OT()dPUpItvacDWt&H%d4pgddWpy6GmTi@oCV_t`-z;YiZ`m%mV=hP%675q- z9(hkAftKcjhoEs+{r6%!iAs#pE?o^?)HDY{OAw1Vjlk6s@rdFeDRh<J|nCpCECm83Hd(b8w zQjE6;*35r=r-=_k*=8}i%F-E)qXjR4!E6kHm|nyOOZF_QqQwKcxE35dWCBpL?ux7g zNhbBC^KX6SX|>8dS-{d0F8Hznx)q0m6N#=3fdKN!|#EuP;r2GsRcAW^+P zjecP2`prmc;`>L3e{q%Wm}$d}?j8a}>%Mo~l9_RW9A}YtvTv9@ckKzIslNDW7LN%Q zOOn#1FD=%eyyGIAF@qJaz{{dNDmO-_xu10 z@qT||=E->OXyp8rJbEx_+hK@8tij}3sG><}a7Pu@&9cXM<}K5blYNI%k9BH253W5^ zeM331LCzD``!~){$ga zm!eA7Un-kiiokf$%=_hRXax|boajYbLnhhaT=F#7peZ4xTEf20pqycfhzvs&n!p1y zL|K~}E=>oAO3b1JCfLCAlDq6XtHtbN0+X_eRxG`A!y-ONKV;#mr@n#-M*OkZslRZ=-Po(z#M+lV$N1v}1T6w!$p*y10$5 z?1E5VS=+%luWPF9k;}I8Z6A@{qQB&RTbM0b7=zLAqk+3TxzWSv9`Rfv|BPJoCuBOj zqBi9)<2$C|mS~jB?-4VN5~7HVb+V-KBXLA>$y?g`WsQ6BzOt)eY~O9OC1`(%!5&l1 zPT6NqOBVIpZTA-&W;F`UHGFc@10q5%Z4z6`s_W6*;+Wtca)S=-yv<9jr{N|_W3V1; zhxbl9MKcE`AC0~^ zo& zRU7d#e@@*-OlHfQ)A9G(9r70D1*PeD~5jwWuTQ$xa9@SgzC0A z=vnY;Ii7wvTyM?`6TUnxc7HUzpD_ZLwL>%ZM?ObeRYMO<(c)3JNq=Gz`S?Xuj2vvk{(OG0f#IIy}8o=`$x`%-TuM_HSteo>28t+ zJ~mI@ElD)(Pscb0&*=X-H|VsEyJlUTnS3deHMX7~@&%k?l8K8O{`g(R#O^LEC=19p zVWu80o#EU+e)u0KBp&CpmoXAM0XLU1WdSLFSxs*oHw?Ycuh6l*Xe5!MD8LAik2)>T z0!ExeTf+y(*#<^~-C(^2(tqE_@fxwSo0xXT1!9b(eWIvGN+cCx2`Lb_klDT(idKAk zU_!s9P#gL+hn5-N60~-FDdd!FfJ4rtXw;BP(}D1F=4>N^hLk`8OjT>-kXwQ{jAkW& z$Pr+A;~=3V%*hGgX$pmslc3Q^h>oNToYvJ1adYoMp-6dfvZi;84VbhGbGn;;xR!8GO$$^O#>DT+=?xT(FU5$ zimWy@L!ee$83NVxg(bK%z}NtH1sF4H0{KuAjb`8)YR+w7Pzn3kPc77Py#q9V%*n8U zTELBYTO~5fV8l4b=0dGvyM#co>EOPa|1k6h?|s0&(U_(~ppr3x=?Ysi+!-5XqXZ2x zZc3131VC>|a8G79_cqrpk$V5Mmg;>!m449U<84M>Kd;ox9@7~lT$X%WWf%jIe_jK^2+HdFuCi{;1bGOI?|)2UFIUmFV7~rV+{7UQ_*b@!@K{nA2gX z*CMm@x^`3`n}V+bA?`8(`UOo*n5t}9xSSVub6mNJ6k2%boW@ya!)Jm zc!1^ydB80`wD@_xjYZKFm9B$iLw@sJ@Rn#4pV4X}54I2?Z+gObdD}vB7^UqRr9Rpy z@&KdAuJgAX5h-VN=r0U?o5;s<*YhrS{juEj3YmySx&M;T}6z&^@2wJ7S-mvAZ?`Jjqws`)$;nG1?ypGTq= ziCUdHR3vWQ=e>kNypzuqgd)B-pDAdnB7LTy)MKiDKJP7EqmSL9ZF;D3VVhX3>%*c> zM!oLCR>uA0vxGgYQSw>Bo>7S9|0rd~L$;UpZQgijkN#b5I@8npO~>BQZ(^jq-RAaR z!Xnd7p2zgqJkQ>~yw|lWx z=?l49u(jI@pHJVa3HNsOVFmF(n-5zxw&F8Io8ONTk3x6CW-Ur>4Inf@rGVq=*FbO=LkwBs&rSkTCB+&Y8nA#)Z z$GCMZvu(}6w5Enjc)2Nf!>MhC`{j8^c$&QTA*B3a=R`ZAHk;d|I7JJYYWEFhK2R~dX*Yyh!U zmco@Ta4Qy>NV>+~#M4CqpT>2S?#nN@%n+q-XqiO^30<$-ezEnJAPPVcaJ5L#8pLg} zso8ILQSANOXJur?HV}C0F$@>yG zKVvAd@FOu=%KI9r<1kF*pEfH1pd;plY)ZBD56;x&CuqCR4|tj zK8+@+l=A+<5un`)&q}Z~EPq_@H+N``mbnj6ox!MX=b49T61}Y@cXa z*7TWxzs(fB0^WL$ObLd_Wn=hu*5oF3QWkt_d0>jBa}GmoQL?)e@5>fhwB<}0i4U4$ zWpKoC3TQw&9(H{@JML4VmQ7B~UnhWgcn)0(Yu zrJXZhWLfh{vOMK5a>@1gV?_5{VDxQc9laP{fJpj5v~cw#203g}FHpyWy-pHcM_Zt2 zT7QAssmzB;w=^HqQ8Kd}SZ?70S`KAZN5e<(HC}0NJXC#osTOtVssOusWcd8~OWsayO1d}dF-pNtSZi|He&jkA$3tfp_U!IY9mqig+|Kk! z<-`9QyxzAtrk4|x+3@p{&Bc*iRB9=v=NyqcjdeN_uYX)KrJ5(jq+38v2I<0vrx(MNc*$Q|EdeVC8tm#BED7kiy_ybg8| zuP=gsG!?mVu5a~L%lbEj!$XHE)csEN7niqe2l}Nfm_7!r+T`3cV5MWRlhM-LaoNFz zsj;%(t$%`|avf<-t!l*G0W>n$`&u9jbDKyFccuFs7r&_=sA!4i6m~f#yxu@Rea+3q znTzy3IAqaW|MM)e8Fm&|$cDjKWom0lKp;qAumleXgfST=ObJVodF@c|`tr=%%uGg@ zo}lchsMd!WwsIDr7`lUC1<G7LFN!95QdS1C0lfnq-lOtWg-## zDfWksD7^X+$*#;q0^)$&z^*w;T8!-hMPaek%yh1ItE&i7vr3kkNwXmML=#FIQSfJ0 zw10*Wv~2C!53S+31({ab>q)GNxmHCYl`1$|ycrP*4b<+S=`|ogMEtN%6rt@C?Y3^Q ztv3|Y>hiw>GqwpvcsElM=3Xh}*tr&iEee1#Fb64=J+>nj%anzN^TBBjyJT~@~80)#R z#wR2&o{#U|u?U#WfQ+|EF;4aNed}7TH1WmQe4lhjXKRwl`5nb;2-r!sN`E!G^M6Xd zF!5D5qVli5eHVA%SK)<|6nE@Hb6h-Ihb$~L{o4utxyfph@49KF8&BHMia;~hP!PQ4EnW_sU^ zr2)sU#P!;%V&sJ*r1$w927tR)R9z|LC4RR5p*4MvWx><$OHE1ONAWB(sedrUR-o@0 zH=I*)!jTPfXtkQ=SFsq0WkOW3^`iKhdw(IFV=l&<2MlN6;1st&4_pFFz(?NKBcEV)LEOq-Z$ri8 z_4vgG@9C7_`ib1Cy>;>C!T{98thJln$L3F!GSUkFkI_-Xrl=@ce59O5n6(ILnofBP z7t9_O`K3(VD2jYSIKuYS$^8?HkaIC@*E^D;2&X%X zg=CScW%9$0?Pl@|)N{!%@eUD}gpoJh-G?Myky&4WKs#d==E89OXs0So7)O&99G@knNL^$`g|? zgB1fcFgKU64FM>Bty$ZW+cpw?_gCnVs;n52AP6#Vli1GAmNRzkOp>kLY`Gwbl(?oy zg`_-D)qZ^X#+!ywQ>|N@muNG7t ztqR=m>$lo}EMjnJ6rxK5KX9Ya2Qz5<%~xM#dC~I3Fc?i#ksC!xH_tXRx_lqIm#S7e z(9SBCcIi7uSsIU)M%s;I(=8=0y)+^4Tow1G{taCXKB}ShwR39NAAUssK-aERXj~nJ z;^COr75O?xFDG!ja5V{CO{h>_+nPQCCp(p!7O#GP=9Hdt125>0c`Q!N$8E~+nz1^H zX>XbSoVR=4uOe5hd* z)Zke1N4~K|abCt6A+3A}^i#_#%Bp2Wws=N=qbx0GXqujAH;@L~Q!P799L>XHYiH69 z`c*;V;vJ#GK1sJ|st%pIvP)txmH~24h}?dE1-YlFFyHXnv1d>q+HKKPJUi#*<1OAU z46!bSnOjt;Jj_!op1fSNg%Tym5!aw4e**lEsa!x$QHEQE~dQ+W(~yv2)u zA!x#y^f!Ar7Ae@FJq9W%x&$f+InJ>svj&)oevZ`08|PTapnjiYKmPl{|4wDqQbV$M zljn1}C3J%!DQBITLjp9~4Z#-^p8y8;ToJZ&Hb8a@`^e2p!b9wQ_susM`irgk#nT=P z;eCW5P6B~HW1oR~-KUK z3CtxGiN;hU84QJqL`B95FEeYW7f!0-@|cd`g3Eaw7I`~ca%bIV4)_>I2-`@16>}!k zdP<^H(1oZ!P!g0fC86;vl*A8=Yjku2CDGt*^JkPK@WVf%Brkc0_FWUjU&=$2@DMyO z@(>J^9e;`=f}VE7Ogki*QpSM_)KL!*T%jHSFyjIor-bG<24ZFy$nhrX5#LHZ2B~K0 zhr55?{qQ(rkq?TEZ*C+dfpR^6N@62Y@(4*6_{f@A2_{`+CGXhvpOz8Sn%z}`Vq##1 z-To9Gp%Ts!OCVAzXViXLYC{@HzXW8*Mfubv1q)mIf zqFN6JzyPaxkPZUhc`LzxX8HS>5Mn=xu*hv^M>Uzpidl34(d(fTgl^)Q8zKide!v_* zaIO>kaYcW;1imunf?##eQYgRg#({c&`8b!l7}HsxJdRlS z92dlybb4lj`1zTVNu689@cgPoR`vTFgt8IwF2sfxV1QJhhjO1)1q2p`Jr`yWN$lla z<|mPrEvYn&V@E0sUju+|xLbAuLX?VosD?=t%g81Ku@~pXc;HJ;>&$M_FGuj?L3$0W zK@3$U8NEUStuG&cM<^Pgmk{)5+Fk~?wzd7rF|tvFNW@lVOpi(v>dA!u4Tu~xFmP45 z>__BlY79Q)NK`;&KT-K19d)`IQYiC$H}-=mRwu{AJ%Au%l1kkj?HzWv0J$oNa7^jS zwvxS2GTjFh=vk#$7HEtd2AxT!9d9doo3=h};IYaI#6>WF?NlNrdjm8*$ZDQL@A|98 zd^wEX(OXn-3OVqnWfJ$7ca1tAM>Hc;sW_a19=eMn@m!GO??pluE z9>=rw3N?#=0+-pJO6b=?t%J#RDBzcg;T_>A3#rWq+VQPz@JAYWyiV&`)kRaQ=5pr?=GhVvwpKywqg^~^7N>jjZhX{%c)g9B|F_+A!VWKTZ zTDZ>88v3Ch4`UobQg`KcjI%yr^v}W+d(QR@Z+A>0DBV;CMn+W*=@$p6 zdPDojG^(}hyASuXxBp%u{>O*=f3d@lg>CUkC!j#Tj6fh4F)p$csG{a)eyDEgC#2_Q z9!7GNf4_Tp{q9W{@m)fx(~LY+%i~3bJ=8h~)bgfEo8~Vlab03vpkKk1p+ZO zlX2K7f2~^Ly}5ikZty0Z~*Vb`St0G z0AKKqy_=VjEHzU1*H`s;&f4*u|2=qi{OiGo(Q|x9`y%mtC(@Bnk?&;Nhu{A2oE-MP zcRUg6*m)+(trJQhjTFpF=jq|+hc}Cduf7WdeSUXXoMC?gtkvqS+ zKbme+&*nkm=CipBrCX(2Gn*?vOx#~gw{I$5?q-2@4?CdLF6_%hhr_p;zYW~nv{_T^ zx}vUTe=NR#cw9_Kl6WFi=YoVf`M4k|o)9F`A_fUbkX2C{y!1?F-}8l5coUxXP2jlzb?-agf8F)FEX*`t_OcVkK;ETk-hL{3s4c<~exyw{ z1C4Bo4>Pt(T>RZro=D-Z-~W~&atLDiZu<%rBj0VvvRkHL4a1~fg5k&Rdy{n+-;QV3 zL$e zGMM(C%s##X$uB@Pa)Vl z`c(Xbsl<;tq{z~; zv?qwp{N3HBz0Z;<(AJK0e{V-xjxymYUcurdR-83&jG}lKqTs&3FYnM#`$UoM4eRz^ zaTaI|&E97G!e$0m6D(MZp~Yw9HEsDvR&RGuIoKMKgDuH$pK-O1f1B)OrfrZX$FCul zK@oV&dJt)19Y-4#^;oUNo=aI9*3ybc1Gnxe*uS!+T3WVe2Nj(ifBSEFXg7T!)KJ9- zrxNix(Ouk##=srJ_*zr|-yDh}QI ztcs|h!@v?iUR=@(f2T98t?yK9BW6sx25Oe~BtOF@C)JV+4`zH^)JNI)JRL`F$ON2r zfj|cHWzk(V7xKBnSm3F4K>!o}z3Qzg3h9*5O$&2Zk@>pGHbn=e@4mUAetF$+1v7jx zmvI!ri?Oe9G0M?9kWKyEu-Zf0!NZ3|LL0D^{CFG?S=o+0e_IyAtK{Ac4I=(fr}-x) z=>>D(x$SF0s~Ty2a5na zT%cBDC!e$t4mo#f{ITkq!{^}fA&*rP~`g8qRQz#|7^XluF6Bt!9p60FX4rB#txle@4w6#(no5zHF zM{$3$YZ3ylGKlW!|9EFTrHM8QpDp89M2WH}Eb;lfIP9uT%QPP17DYOmR3wkS~tXng*4Nf{wf9*{l=O8~oe{Qgep@;qqvh$AARG2w=(O=|O z89N$S23XOCdY)x0ywG;XBH;@V)%VrV8A&8{f+U(g6mehe(x$~?4mEcU`5E3G00Pb% z>b|?dPf`SOSz}680k)Y;g;ycakUFrVKonnoQ7_-Wq6nZ9k;qe9@0%n@iJdTN|M)Ix z>QX)Pe+Vo;j!*RSZDZ07(GSB26CMtgd7kjLC=f}kd$+MXPS`*o0zlZ3ooE8jrqD)r zRXko$^u-5lS|WU+3aDM8*c#O2m#t|&U|1T&ITlN~L&-+TB=7IQhc=C{W5YJ0J=aS3 zeso%bpw`jJ!RgMfm;OhJxL6AXw&jg2%PW1lf6y1o9|%udM|=r)HekXHMq*?&Ze8B( z`=RjTG2D?$PwNdLV^20HL2@SoM;o&F2P1(xfv4DF@@4=~$I*)h10E=a^pdk``2^j7 zi}x_-dw8S-T&*T9P7=_Z8cp#1R2GOuk_={w6)+yh=msnvw;uyc{#j;B4q0{{Y0vh@ zf7>anF^EKik91gJUtS#qLTP#R>H+#eXm7MT*dO|_xRF+DtU;s%9)E(NX_~sB*RpaA zy=)|W(p+UfmVn7%rSuk>;9d$P2RoUv_DHDl7_7h2wqxx-HVrsg-3-~}@^}rQNe@PY zW$y&cv4}_g!h5^w9#Pbf9ILdD;h^poe*i3VhGRKo68M3SS4!dmn?0_rDSN|YTQ@c| z1aTrfVCfR={vRUn)-Sm#dnr4N2?)#r9PmHS5gGLxiEivv`YzLZXZZx4NPl)rjq_=u zHx@` zGvgv*TFIGCG)q%GyI#+J3$C|$GhakP1)FTuR`tF6u`}(qnlFDu60DtIRhz6eere`D zrMa8`e*M$SD-|DKBL$OC!5;tNe%EG8w`!zJ#2HuJs%kl3s5tm+R;|~is{Ku+`#xCl zF^ptk+&C{grRO}@kqwCo*nA-sKeF$^5sj&D=OPVY74(}ecpNdM@C{k2Qm0vl%|cm= zg_6NGE7x=@iQ0e4f49a>?z6fvYbP9CMw6uPe8Gdlut}dOrg_x)V`p}s@?CagCLAXv z(^1;3tj)eQjVZ~Fwizj;g1rr31^3|7n%Ze{toMW_TrweacmDgOHDMxtAya~P%erXL zxfBh$2S!jRtZSo40&=PMZQ?eOA~KAFrB&0oAI^zWK2m=vZtN~>@;|4XBLKa)UzC^Y zeC1F}M_a$pz;4D!2i4|e%6fe=LXlvp?EPM5yUX`C6ae6Bm6Ly*8hW_Po?%CK7KVPD z7lj+$NT#&D%vixh5>HZ=ZX=oz z;cC+!>au^+0brQ8FlAzZaJBqAaT`w<*GV7AjXTcy4!4kb81<&M_2H2qCb2rY+CdmulgE7QZmUleMMFA@oF_=u#e&9nIr8bDbqj1#gV5A< zRllII3QW=X?e*j8!*OZS!)ue#o(cVt#-g5@Q(%AAOpD&Y8`HkYn%2erHB>?ptv`k; z#2=qHK8+a)wGFR<{`!414tkPl@v1CZWt^XkwP_fA~7q;7~|6MhdB z<5B#S>KlbU1KVxZIWB8gR4lf((o0V`x_1v;AQ|1}YvUCp%RIPnBao?4Hpq8WM+GH& zBq$yGJ_F=o0tJw(FnCMx;=%f03nJh~cYuGm1<8@O{y6NP5~PrFpiRp5hPT!FKolge zKL-@PHya$C9g5b?oWb5yB)TjDT*e*GV}NKwC%PXy-yz{}%i_ca4HK&h;9RwNRl46) zX6TzyYNx^GP}=Fn@4KBNmu7XIEeq4hGK&N(Ztiy!69@mQ=vB(R8tck^%gPJ3nGJu{ z+_Hs|S9sFYl%5=4_BI0fD({J7E0%L42~JAb`k%6ASyhD#4bjC0gyR0{{+;7TIEvm^ z$bm1c<~*cirpJxL3XW^t(t&F79Mu*YDK9yRux|}@a?C#Urcfw;+_;k+3`yYuc}`%y=s$O9v&q?XD){}w4F@pFU|JOK_* zVjoTxXaJry{}O&}$KYvUt&O4Kt; zPn_?7EW`;tg&625_*r`5QN@4x1$u&2fJwWS>sX@_)k0Nedq#rT#BS zsUwEhpCx6Orl+(-zw%vCfP(-zJlqf?Zw>uJ=9}FyF~49sfH8GwullN@$*p1eiHJkZ(^3*E8z#)@b0CL z97eB*bX}x=a#IA3>Jq&xUA|r1QA4s?j99D2`YctTMlU_4scxbo|B0iP54^=7;yt54 z`6=^kBTSO>FvfeP>*>4NR`bUsn@0VbF*dO6RJvYY8a0V_lt}n};oEIw?uXC!k9J>U z@hn}p%a60Bx}?+PjO811=n}TGG@AX&NTRsxd%r%*zbV0mZ#ykeZfb7XSW5I?y&(UV zy@!Y9KCo^=Kb`*sI0Pqm8YmYNl8v3~e-oDjeZ{1IEwA@T_gQO9yeZ>UXuX%*M_mtjo5>bD74r>5e3E6f*lR>j_IRtf3>mAlC6 zDWm?29i?N?14tnj5j*Kgzd2_}`tsIeQj5@s(+mPS%JdRRlfaR2lFG+ZZ!E6F5acP& z&c@VSPvezZbSrJU^Y83UlWI0A7=zIqP0Q^8lw$K8PHzD=ZF;Zt8$5V(J^-Drx@rg` zIS1FYEXQ3~9`MYEvuK~ytw1C%HQuu<)~o(uhBsqc^mFyCJ5t{(-ksg;VmMB6ix_0# z-W+VAWj5+OZC;%0LS^@QD3NYKyemoYOjOv#G-h*C-W%aBD{6TGKZynt69AjxUG{;u z;J7u(YTH`&lBsLcT7q}6A|TxU_wQk*R4@ts861wsMLyzUNxb|*NR>b&32BiwZ>-~c zF0+mPGVe&hyA(WVMC(XCap@y*2+X&HG&*i-`&7(4#aHmt z$ve?1zHMS5quXmNXGAX%M|z$EeTGBsgNyGbyQ$|59u6rm&l}Bm48W8Ofx80-T;|(2 zq8>-k>D@jc8hl@M08hu47MWV2X;!lQ%c{Nr#>LbYsSk)ZfV%?Yoi8*%y`#F_pi(8m zv(DD=&q$+S6!cgy_IKr-aw7P`RjEjUH^|Cs=eVGikG9_t7g*=m+n^t{qqMxme{Qu2 zVB(<7dqE;t;*Mkw23&Erw|^?Yj`BU6mp278A9lQTyK4pB^p^&&?AfUBPY0MFoL|!u#*e(aH>0Zqr27iHcVD>!?wN&DM4fZGJ=Ccb({O# zcPzg=@z$TN*w%m}y!CvB@_akzXIV&b?tt+l*z;C9Oljga036rBX{`_q`D zVh_nls7AJ$a2PBcLw|GEa-Mm)n?Qz%ldL3=lot#De~_meUOq*E|G~I${BuyUUk!-? z;z$eKw~P;79DpU9h*t_*sgKp+* zyz)4!Sn&)V`$Hoktu0kt*L^|uOkxK{0si*eM!GsyXoF*tPFQPxG&jP}Qe<`@`PbmU zfKK}rikW4#N#@R~fLy-LKJ5^NXvT7U;8MwR21Q?=pEpVZ_w^y>`z6AcnhY)i0D9=N zkrBF&0N^D@UC=&$yK9GB)Z#`?{+1j<1w)?FLJnTgfjMlwfJjb`%scp^d(+y_954{S5r;|uILrbLDIHL}MSt@zT!FwuJQw!-_`SP??eD8Id z8LP%`F$}a5l7ncEjgtrR@~>skPF5SWWV3IR)Ra(0-O=3d;+0F8BUakb2`*-*lXUb% z0POo(OPkHpT6&A&;57 zo+3Pbzhc3o2>LaT_e)Nf068VG-w}-O$*izGBs69pv!5(={@Genkj+f+PpytVznfZU zgNots9q&w02WziqFg??6x4vBuUd8CiDF*V7C?Tic&ztSRJ~ zXaG5!sVtlW{Q-@D?(Y&}QI>)aNWaNc(*N!M{QvcT2oC=LvEa+}4PEy}u!FZviz*~g zidQ>4ZBlTKaW;#=JE5CoOjF4UsV6KH(_rLRZ~CtIJ#Bnb=nQ4@xt{nv>$hcZmOkPd zK5s%tw`bc(MS|x&4t})hG`Ku5k`p(}G}Jav1$1?8)&-kvlT2LNl%yMoVto{KtjhIm z&G)k!oxIvm{snZkQ#9-;8QzcbD3#&A`gNwb7(2a{mjyTXy*xaQCYdVnU{j_k5gliuNE4l=uyz+hY4 z71f3p&H+Ty|9zEJLu|Hi{v5}3M{)-flNj}f`>Z@iNErIkBSB$qNS5RVOxTB+JmCRbSLXH5@H6hz`VpblR$d=OpWH`_ z>mt3CItRS1pETV~-+T8{GH>Q7$;Fg{Rbiv)AjUf>5b`wpm@kvGw-)qn1XoJWCd$j@ zJ#g-9cJ8~u;0G_L)mDoUH!p%v@(=(Qp_9{CzUp&LW zfRVuR#oX3ti?_bMgU#YPBraL%`GJ=`OKq3%Z<2jgHMkBLit|@oY1!Qhi!!J<{QEbp zf(sJjGYuVsOkkJrHmwsHJct5X65*C79VnCju*Hvf4hx1@Z0|7B=9ckSD0RN7L@uZG zfDLTsQ=&JtZf#&(=$}i%gv$T|BB#W>s_8P=-0*gK#eqcXG&*~7NtAg=^X@`2bNx(Y zM=>d{QW4g(#LL)xl$^OZcfVa_?bV_JgHV2g;Dh7%=LFB}+8&NVcKcj%Tg$MYrS{!O zm`ho;q0H}RE z78g@&+z8Njke_mW71rADLoFUFW*hix{>x_h91FEq@t+Oa(7c0)V@i6_`4E-Q=4ez* zAD686Z?r~+_dhPOFk{2@*5s5-f?@oDBw|U3g|INGc@ne@3=T*N!*A*h*fx3X)wL&C zb1+;4dJtz{h!T5X0!=cpFT0C<-MvUa*%2kC2624Y8>rRCH0*q%W|?>*)Da zYiKCL-PWy^_wl>jp3_mJ8VswI!TPWs&M8%9WKL;t%2<4I8XT^aQ3MbZ_c*#3ZV_DJ zB?cyk!G&Tf^32B0pFM}U9dM+E%*qA}$GgLBzjRjwFAd3}&>}V!pC&gYQz@@qtO2zo zW%~+jArlKDGdL7T_Dm;&^8LOCC+4b1B$Cr~!KRR&oj0c3zh8U$74doub#4MKy zx$p}zg|;cC7CmC)Nx~y} zuH~ykv~xd~DRJWt7Z%`fl9TQSOWaw?A8&CE2gMr(0ooVhkU*pEGs`3vR3t(LrX9 z0bf(1-5cUrK8_3*91x5b6SCb2zcUJ=--(uodJiuMNlkz?y~BORU$91k+&v_hlf|G@ zIcK8rW^o_ophWwt1bUK|*;#^?3Ber(7GXX|;~aFvA`O&8h#Vx}L~yW>?v6+JLeK=@ z&pAb;O`T$Xy2CGr5PFD0k|?03>n;Y?<7hS$Xf&td_I>ON1JeI=S(>8ZsGr^ctgh^| zc=dC{&x5xat-VHRtfx3sr#w`5i1O3=EfmKw@^Y}nmV(SK>jvjoYy~kTB8dhM8^r&2 zokZ9f9G1Tvru57G1~HLX^P?+tX^Hl;W|bIs7Bb6cruVHIt_^3#Q(V;jg;?q{F~nMu z6cb`ZsohJ*0#HxILohc^M4=L5WW~0PW|Ox!a3urx@^Y~K7KD3@6#eT@k+yP9d*%_9 zM;#OD@aXf8@|@IE$!8(>v>?f5{%`OaQhZP!2UqPFO=diJ@5NhXmLB&li7E;12)d~g z=9Tdo&W091*u9;lIra24WFPjJ!>f=$liwT&gccMHIe^#RcwQ!S*zuyugkjjytI$hb%i)D~6wJ)ADoA48)!&POELwKf4xsii1o`rtKi#h4hr= z@2Ed-TzZ*$eposY;mvV*Lzs??*n6NvuJ&nAON~If9Jpq{R$ghY5wa+@@WwPM1%MNo zNC!mbXah)vQtViX6J2oDzj?k?<kJfHFakI&FifRIAK?_WOcdNuBL#b<0Hteb>c`V548 z_>ib=$`Ghs)`3=V-DHN%a_LxLH)%=q0IGM9;1rt!^Qx8;#M-FhxRc=LB%Suv%)ag5 zXK2xpv9iDaGZ%4jrI|lsLU6OC4Y1P#hX4OT07#o6oI;Fs6+$`(V*Id*9->Zp-Jxee zBGo6i?+Ph8mAS#$Po3%2Vqpm6#wTRUM^R8q6L>p`7+m~u^E!OSn5N9+X z9XV?QR4ss|X<4rJw?4mI#Z{HQx<4NtGBN{ds?+sLXgKY&lT&qiOmL^Y$~p2kUcHT# z&Dr#m!H}HKI1&$Yk-z1*wrQTE63%(SKT9om=e5l#5>FYtu4Q=wRC?&D>ehZWRJ}zq z_S_)j4}AA;1z0q=F)6-_)-_BD`8RH4-nCW=%vKY$A%y0`&j8(98s4hLQ@dGi3EARq z%oek~SzhpXv5PtRFekIWL7YdtIQKlrO3+d7X?#-{#xM%`=7!sDnnpvO)9$5sF><7Q zu4DbjzV(hi!jJgNJi-Z=obOgytD)*4cSN&6^V48>RBO~|J zT8pM_X;D)wByx7~h!U6`_HlnoGuNaXr*)XUn=T#-EFwt*7|u@S(l|_EtyRp?w&BJ+ zu|bg3Gyt*>TuOtzViR5AQ;RvUZ;X;5_`ZdQp)W9=3TnFIZmtTFBn&KDon@EqW^UZq zhAdkboF7s3R)7!V7vyZ=_X#xA5PaaB>CXMk^9UrrMt&Z7^c2|h-|x+mCte{9l;t~9 zTBzDce=H>-Q1l;arpX%{hj>OW;8y-P;D*Jh4FiyThLG5j#DC{G{=&rtb0(|T5q4Mq zlT4S?ei?&ELBTTiC|TE~mZlQZa+wHCi%fw`iFLxKm&W8F*zUt{k5H1cs_r5QmyYLV zhjbx^HQuBpAK`mrGSqD_4aMLkaxW1ol+f1{;8B-dEuR z769NNMS?j-ls_p!&fZ0W`~&?I-WdUgyR&^v`AiE_>%D$<(~yV1D>@=`RRINc+63!B z{8Lv-XCM7a_}&^e=wWQ_u7pH^YA+x0L8B(b-yQ0%@4&~0#E~`ZiSG2LLV*8xSqEOZ zKh}Nas3`f8;|zT#-Ky3L1R}xfGAZNfjy#~SahVt>Wt+QG|GPuUbwImf)V*Gs2gPgX zf^LD6e15(70_5hhXUQWcMj)$Z1EFK2f6yR5@c6; zelb!7xuMuIB#iR+kIV+FA+0;=uVkJ>ez%4qhGw^#{F%q=CGednI-|_!;s8oeK>8qwdZ;m_VmBx}RXlD9aCuTj$Z0a2s;yFurd`&^UATb#ps_ku14-3#3gwN}lH zn$AINDr#R`D#75AEep`zdn<)H&>i55UFD07-Xk4W5H3?N8J;*)VZs9g_nu5T9sX>c zop?C#l?>gn8IS0b{v@_?AdJOLh2V#}#&R`)W_(LlLiRLb#}&L5-V*b-t8x!Qy8=rY zsRSiV1btV6d)$Iz|Ji^|!}|m9;-;S-4;Ijkos0^J0tT(qF!>S6$A)qW0g>gJZFMz!1B-9b-b=?Bt$Xw&x z0XHjliPe)}eInAMGkQ|y18wt766^Q1Ck-mTHu0a9t}tC1pL+#OH1Qzf1-Z=kM5zF} zkx2t^Hy#<2Yqc~F{(K!E@pjwFro+v=jPbqQ-OI<@9&T2~A>X`->A=`$E^-z~6Hu;6 zcZ;Nq?!tDo`4A5Pk6*NZ|F7_8fpo$DEg*1n{RcT<0Q`T zB$YypuX~?9or0Adt^`7Hy57c7yl8lIHA5ETjBg{o(x-`Qyn{UC9r=C{F<#sA1%UV0 zRIidSH4jhw_we4)nvm-NDd7mpC$ZlK8|f$$F-5z zj2rbLI2SG+UJXy$L2jB$(QI+G(tvgiXP^kC5q?=jXjIW6R9*gjjyi^>fYa%(O~?L# zZj|ZZT?TxN5h>Q+E+T!g3KaNPyeS6^iCWhtZN|( zbi`TUI8~!e7Y!)#wua=J{>G%BTs4LI%w7~G*Ft_IKc{P~yC#IbQ0a=@>HzS)px+== z4>ExkPYI9@<*!kAmXoA8f$dhJ%2?_pCb=z6hiGPDF>Y?R(3tpzl*70=e3Xfp=%~BF zFCUke2tGrJ%~oy{KG@MaUgQIH6u{5`w``9PAoS9MO3K{ ziOVTgax-!Z^ABv?*95pU-GCAJ(K8So;-gt&1rLg>!`>z0ADxKFXMBeO^hDYl&4_>h z%PSHH4^j>`JJTK`8-~V9jysKV6{|;%=UMr=Ic02bPfp5qP&nDDxQde)Twk^SI3{EY zLyaGzS`jKCpQ3Ol!t=2YLoFBuGOeM%A1*Em?4A}0c#SCU>)5}o576h1TZF7shlmRTO`qr@9oUsG0+hrvwhn()V?3S>BKRaE3n(wbM^ z(>eX))Z;a`d3e(D<2!Vw6jdfwbd@A2?KZHL{t{{)HGI1>`<40X$uZopv~uD6Ccv-hJd* zpYYhUw-1rsGrn;>agey3xGk7?A=~_{u{*!WZzvH9>)I_+aRj@$cC2&!P(^i2vey?1 zgees*Y~_a_FO9?!DeD1OMw3r=Ov)brHQusr-ptD+@D@Qd5ItT#nVj4ejJTT>)?2s! z+P*lVxcY**2e2p8+RLZ}Q#VX4yhj#H(i-Af?}RKT1;&li(l$W3I-TY{#Jrv~-G4h! zc2GL_5K-_jnarc))xMytgyyi?T8xxGli)SIT={0}^mqp^5dJJv=p}j;nA_+7?c5AW zcbi5Wgbq~w4y1B>6MeH7)cLyd4kYLSLY_Nk_#ETa05*GXU8}D)p=`<(zvF5J!k2x+ zaCj2Dcb*Dm>fF?B9iQ2h`in^jd!nSFl{^vU#9Qbc%q}FHIvx)P?Ok6qn^fQ5KR{Z- zSxL`RY@y<=c!~pd%@U5aSsKj4mMHQue|a*nrBMLUjX-lo32~PIb@r>q@m>B3QFqs<)<&z zX(H(;_?5&W(+ShR-L3g9zJ1)<2P9a#lEYYQ*m zdqPx;F2=Jdlwwp2@|yV@q(3^VpD}t`A$=G08cm~mfu+(9(JY`D5B_wdl7HY%-A`Ga z>m>M|mlKwW1Qx$=Q; z;ps6>bqvo2Y=mi2^A91iqa+T(Ec zs$Xz(9PYYw_w%9jIiRo8|K{~O2I5c?mv(&3bQt2$f)ukxS`(8ZuI}*e^6_c;c_w2< zjGgTh@3aTClGfZ{=dTyQ*6U{A%lcAV!#34xh#8C*hS?$92k@UyYOF87YhKH@2+}hN zIQ?M05inEN=Bm6{^ETcR*-76^0rGSPtv5Uc5%xag(Yot5)b!GwU4+i@L9*j8vfNBu z6NZ=K%U^@c+pzS#kk6Ydt2%WjwJ}E3JHR3Ac{pHqfy}xxG=%^v#ay3BDOpgl%K?q7 zz6R#SQ1*JO_^Xe#IikVp!9y!Tn!vXHY|{&#;_7NoL8`-!obIQ2(sI9oZ^_E`u&*;t zVk{QL8t*6WLH~fy_b&5!*jyziSdqeJCOzwAEKcveICqyp{3wJ((yF8%zaDXFEgUyI zP75YDmI&+jo$&xd?vXC2twwL2zeKf#LJ-U|kch&0+Vc(CbK~F&=*bYevlvNMsgneJ zaEW``c9ghH#N}tPRkjvZkYdw z(O#Tklf!^1j=t*sI@#>PUkl@eL=TnBs<~yWH)xYBB&9tkj5$5 zfp8|gl}l1ocEWBkjz9iUwSspad%=)H>Ddx(q|)g*W1%{CtONv=WHd$=ts)Tn$6ODN zVX`&*a!CyXMrbseq$UedFdS8=W_)>wJYi&me`F?GHWxwPg5e>NXdGeJsZ|dSSyp@W z($GimWUm8SH##;BUBFlS13apKs4P~|3TEQJ9PS0cPyhB?USLBgO5}LjB!OqF;KtO? z+5hb%r^_b}4uY`@1tV(*b8l^DKDU{l7TCo$1Zj>EYws!CEqec3+Yx6 z7dGx&bHxA)D;*xGY$w+)XH}ZtP4LWbgQP$@2_|I(#9(Fg)+h|4Ifve&!04f{IEF+; z)rm-`DdRDGrK&8^Uh9^}$%Rt&YwJp&UP-xr$F@ryCW40HcE$|cdPhJ-vOSC>27=$> z@);lqUM48;>kpsFz@;aDnkS8nGR811M{@}uoEyM0=#%RAf|oJ;c3zf9BnDFkdC+I% z`OAd8)+kfxlvje~$WYzpN-H#n8Rr^biZ?kldmY_Hj{IM4Su{0*7}-L-!aM{3gk}UN z8hk&qh-MFgWV<5_*>OvrZfNSrnmJp2RUbf-A2(0Z4^H$FwbGs&aMCYo+bm0fDy|Sm z(84vO%!rdzIoi>Evx5c8LQROS!J#8J-Yx`@tw%s6CPu189Oi(w1(9>_iz5>)Z6PD< zKG>uu+CTz&7M-{nGyiQ(hs@N$bX9uI76+C6R}IddIcR+FqR0yLJA+9UUOSXAoB@F5 zGD@~Cg>7<~fpJsh#zu&Nq2d96z&_9nU&MRS7w;+}z?VCyH$>|t+AI83@Y?k2^LTRs zn@3E*I97|Gn6T0--;r=dlV?hTM@uOFHhB9SEp+g3Xn_hn*USyjH(Bl3&h5?|fpseN zODC?Z#54~S4Q8-AP-~*At?4Q_I}GrgKB?#$H-uPVsNVSAV2H|@o`k<=0R#O&Rms&q z*y(C`MV0aOJB^uXz}yhG)kM@R6%Z-7a-HlxcB>}dk-T_mg(h#0MjumxbQ3)s@?jpk z^9$vgK(x@noNm|5nnA%{IK{)qFyjmZ8Wx1+Y<~l#gAS9bQk*};pw@520}YsaMa#?8 z)RSgoAN)cvGN<1u<6N=%cs zS=c;;$@Z5>k!1EoAcCR(AT@xDT>_J72U4l1x;ym5woO!m_?KwA*oK>~4ehNW%(G7| zP6^dBGy(^#S0VILNptITVta>$_B>t*DnJ&x_g+GSSn_t!Mt1D@BA@4SQfwrf2sV5? zHU%z;!5VuGZ&wyMj2JYkyolkwanEem-*!;oznahaQB$Sbr!CK9vJy59NFB+ zCWX!w*t>9DBHPok3<)UAL-v8uKg^%d$ULzkkROXMqkKw&eQ*5ce{w(vA>^eB`_7l6 zbyy6qs=)<9Z{ij`KS65%#?f2{F@HYIdkuOJ)CTALoU+DDIBQ8b2J9T(txzvezDi$2*kzW{rzHG zzKz`8{xU3?M$ix)7PS$yPdrZ?;Fy6~s;q0=HXV)=gQF;~e``8$8XLMi3=IMGwZzs3fj8lA|A?=- zE~Z9CAxQ#w@va3+mk(B-Z14bg@jhMDwoJYjzW1QVw3}P)G~A*e)yIkkUR!P>){UT2 zR3C32{Q;D^0FGx}?Pl@1*I71si!eW#a^X*Rt~qro6*(nX865ciYoulcG0GcQeNHp_#n{c%JaQkC?EG- z;kwozg(+jn7t1N(oWWbiNogoiV5d;U(!@L6(znxpGdOb)*b9TM`nV=rR&8f}7{TJl z$eq{+5K=80es6IQ&HG6;r%6ydb(9=`lF(@!b@bMvMCw&H`S`IxTB@%Dn)vfM4e|8p zjI(m&oukyp6ny36(6{V~|Adr#6GJx+nuJre;5wgu=v=sNx8hhi_BU~;!P5|p=5V^5 zaPr6_m$m-r1d{?PM>lVXj1y4y+O^;=JGi0Kt5_hQ0@$IYxdDrb)3&YSZ(3rt!s5f?H5QP>rOI%b z`;W;PrDO@Dk{}Mib$fGZgA6T1pQx=(BYmi5nJ5sH-nxog>UrXK`;40;^$IXC4s#+6 z9sa8~Tf-MJ_-mMIA{k8Ih~OXIyigc*KigPp>q=}s=t}CCxP3<~;L0_-```VMIrki7 zp+P$dD#%eYdc$Do_)(-nDipuTzfplS+87)BW7?Fiit-ZGYl>%Hx+f_Wb*f~W!ddzy zhh{ca>Mt$#I7g9;xSTWm=0-2oAj?%BSgV5tf(?mgPx$@1R)gn!PX%`cZ1m#AZkAm2 zVS4qs4WTsVYLl>8iW+fbMoU}(G}A4~+SKFZ=>HRxpQm%=b+b6XOim{xJXS?>&3ZOZBzs-H|S zW6}uuIdk*37k!=V2rG>_?SfxO1d;`OE1soa2X9iOwOhPwc}v2XEez&&0Zr(l2#kzO7}MezH8UNtz(Xg+?J$|C^rj9o zO-9TAZK~~|G<2vG>zbh4K zy!sxYa`JwMspoq3l!XqxQ=aTaB@dJW&Wp26g>9ZA{W13lq00xvXm$u#vLh*yd7Tf`ZM?rhQIGXu5;!cU-5QCcq0DdP`I#=#QBEej&J1@C$3TrpTkG z#z>jpdT1qlR6c`V1`>n5b^ach-De9EEkz04W`F+Ghc_FLcft*0d^8Pd^CpTy(2Ir& zp~lqr`M};c8(#qk#1egcAHt!@I7e+38h3wFZXjSYuZU(k?f0kvU#Z&5CX^e>{Kiwh z)Mp2#;*8jMa#6_&eCQd!Q?pe1rfKyU&1BR;8b7fd8$9jXv|C5F6|FHR+& z@mOn2YzmvSn2wBYu6UI~dJZghUU4zpVzE_C-{AOXZoxJ_%ERqM5>dd;QR8*!H&6=iAxg^iT;#sCm_2hLv+j7No_W2rctW%HJASp#jmkmRq%dHO{WB*0E8O zYPeBrmJEKl$=+Tll!5^BowI$xF1;150WB*rLz17}VbnO@boQ061oEr>`Cm?-zP<@* zRTS=nP|JnonxF$aN5w^(SA=OLt5^MPu?nshX>Ae$f#$lIbi0eEOsVgit$x}~O9D9V z&#SG*#ys&kQcBY902xD{_&B%`%2n0kt|9vwE&PoY(wr{LuwQ@#?)Wmezd{!Fz}LFG zRE3E3T6boA9d3E2dBxNCxN>&ICA0XTC`BBs3^%qbTXrD(PSIDsbN69kos@H#h5G5Q z4;^jjRTkIa$+dGwEZKF0y!95Uua@l+Pvdodv~sso7e?TNfgt>6f;HHjg;5Ot`z{{H zrxuvxLxtyV3kUEa^K4DBbe&$=Lorj=cw#v2XC&)D?u;015R+{`1Pw6mHu7p)!Ri#_ zm^YY$p=nihB8bnVcYg1;LyDY7&_BE22sOC{NRa@(cl9+5^sirQJ`E(z z?u?dz2TKKzxwYpmkcetwKZb%_}mz2j=XS2M)N$m(sjhX z4-*RXJrlm<6sKYcg*K6W=I@C<{o>uAgEB04mweO6zbUs0weZuc$Ki@UVLUNJzW=%j zrf?ESI0Y~ldN^LxXEQ3?MAS{*KwYAVNd>x$lE&0T%VtB-Pob?{R8Z1<52I7~p@NZ9 ziEj&o75R=6Jf-MWks>Ci5wQsm7~sBkbR-y?4AL&(P|ALia)HW9?nh`y9Uf@yJNN$O zOwc%cR4cRsv-gOP_p^Fi*xK(S5#s3rZ4m0e=IpviUvwK;APj+O$<<$85Cds`BukdB>2L#Y_S3734p;ft>7>UU%GE$*p>&8h3FtL^O@uVR19ZMmOojnacq8Q$t* zeKPH$8EMjc^Y$XuFt>^lP=*CmXI2Kwf&keOk<$drPz6uW(Pc&8o-6Kn#fLFzSZ)${ z;vJK?ji{SgPc&;GI z!G3yo^A5b{Fy4(hd)DJ6+EqF2)k}U-X1Xm|uV3j!N zI|lC7N?`@CY(~l)+Kfl5Kikwy>9i(<~(FTt1AKFP30w;(xFM;Kt^ zT>w7#_#)myVLi=Ys;!|ue3gntY~gj!orL3-+Xj_*f5Em3xfSKa?F{qvX4L;~O#ICh zW$uGJw72>cSu+Q(IbK%5KnAmiG1MZygc}EGiZ6x_r~g=g8e3h~3}RwE_C~q_I20QP&=3QT?f(mxxfD?<*L)nk_vUjaxp~Cpg8v)A-wT z?iW}LyZnD5027=iYpxd@``a*YG@H5+vv)r|DzxL z^e^}CbN|mmJ>UXsTvIK|(iws)Jcr3Go9)5ct!-?MOeC*J zn{vnI%%_7J?|k#hhbL4_dSFWwpZeWj5<^e&c*yfjQt-?>$~&@fZq9Q4f+?pLD!%e*h5e;F+p!rTq+QV0uqQgXGcJaF1c-Gip%xB?s7&%TI;&jM(!4ObjJrmWlylerlrRi2LtVMiq1=dv#G)WmumU=da1SG85DvbnkMfc zr?Mt*Liwa!O1~HSLTIv*J+g`f07p;<9^VNIA?K{$kh$zS|8f8UFSPGxgqOtl#bQ0! zp4oLmr%Ed-tiD_(oh%mWHxSBA&{~VlgICh8zr78lDUB@YLM|$kCsjTABSpHB)_m6@ zA{Rg7y1aruK$%gUImLYyIWBJ7Tnpw^mU?sTalbG05QeU#m%M4FjisIK0BpS04$I#c zJF7}Y^W6RF62_Hh@*$JAWnt}6tO6&_bBia?sUu*Mn?hDmw|hv( z3W=$5E%uHu*{!go1J?E{0L^6LA2spy(S&UE7;|7ih!tip6)-VeANo(_wx8zV-L4lvq&qdGx0U4W8g7DvjvVRF` ze00YSE#J?RJ*_sRFX+!hE0Cmg$YrJ4kIS|fc$!Fq!D`$2n3ZJL=mAW0(YAa|s!opA zJ?$?EhGso~SC%DfIz&wXyh4;QJW=GJ{6)G9FY7xr~QO}dc9Ix?0%Ss|(+ z=cAJ|2XR8ToamCJfQZNJShXB`wK{lDh$Js*8ND{+&&LbMoT<*v7f_5KAZOpovGc4c zVl~lh-StoLXJBevcnU_EW+%iJeG6)etgeFh^}pco3_|M84? zT?pQJQ&Lz3V1>{56Xs6cJ44DqQrZGI1eUR-x`9Of9?Vb|U-`X;9pA=qr;0>!0~p!mX;QXgtvcCzK2OmsWeVa7|G*|)tVWn+i7X=8`T zwE~^;^4F(%u`=AN;n1p*Pc(nJuvEnEeIb8_xA%4sfkP8-lLLps5jTejm8CApDgIcE zcP%aTb%t4_rk!mHqwpcHDp|YOdfAb&b8`IO^}8iKWmPI(w4Q%2gRx$>i#RLVp^irZ zDe5wXsq`3^_F=ru?MRb-@MmRA9VY-&>- z%mFPq)dB{JzhGxHG4opf{zIb}oFWkgp8n7ze5a^dmydxq&DjMXYQZFS7Q$0q6Ce@j{}HbQe#vInSd@q9*S=xC3Tp7ytB;WHg2vY)meF9;Gl@PZ2ah`V zYrlXpY0RV_dSLSNT_P3{k)+=oTs$g8i5eh6PlDua0Pnw-Mw>~7e0iH`-Qt^#6+Vqe ziiGOc4=23DhWWg2qX#*{!{-=*F9<`Ri4j+IgGqCb)iSqWrWdE0EC!Va(<^1cBq@j3 zhF?I`1jfuA#Zg+%t`l-`Jsb8IHY^s%Y(@^nLNZ%e`FfbDTRS^-;=Qk zmqRDHj761{*gxl&37pMen`kp<4KkfbR4o!b%G*k9RHLBn{ zA&b}T$5Er0mmNh7qndXdz^FtuYI(ATf8xv%qqBz{xO7NPkvlaT`6?mQ=fo$;hYDm< zPDVG5WW!{Yr&lG(4`^^q{=ljf&4!hXR-EKGW}Ps=AxsO)u|2WWD8#VMU>a!uER7#6Hh)W9N54|x&3#ysUc-MrvAMe&KlEx=X}S2JGn$2)>*bZM zGpf#KA1x@uj-hq6i8$fb;KNGi9qG+Vz}EE^rX1s9?q>IJd3t+p)gw;|8eZRPd2Q@n zEq${NdVaeT*m(049=M2~eg#-~5+86ysn$H5olUap+MbW>)Ob7HSz?s@I1oo|w@4$^)Eoaf`9=ER)E6PlHWpA%#frPXzCL1Xv{x_ogr4LGyLq+K9zRFC z-7Ze}(1D@&a=3~@lGPd+c=wFboAe>`n{*Ioa$h6@8>_Xw@{4vg6p`2^aa$#$!LCnl z)bC(-I3vD5tz!k%=!`DQVRrl}*js4dC20v(fr(nfPQ}Vpp%jqrPVv;(#fkLz^1Qta z$HSsJ(U9($>(0{j!;^UTeR#|dMdTHjBrp=akdX9v`l6P1Q`DV~nsEc%7}_#!5ULS5 zE800b3OQ2Ya`vPMVo!O1m--8dOR^yx-=jj|9PHH8lrC4ITTpc9DdNRW%0r?Tu(DZC z&&^9b)MS_``^A+X$h}^k#ed?=e)0id`ULsqLZ98)r$KS_7LR(#dYKe^PkYWPvTa)H z?}B34QRp6X>&b=)`?ilt9l)>)F#VIW5Pq{I{{>TWaX8{nA> zGWb(|;Egqn^==#3Z)-AzVN39Af@5n_Z%}92SD!I8S@%-1AMgXI0{*%|H%omblv5dl zRX&>&S(6n`l5;dLYdMWRx9rlS(wI9tD!YpZIr63Y(oW2?-}cbsu7kOnnpJ7>gDStn z4(>-YPzkaP&1O!r-un=_5gxL76rg@=OL9kPrZ&W%cq)!6$%>>Q7?TyDhOjh-u}m4$ zQH;wCula-yHYADW1g*qONG(Lh7`s9E;VB$uPtepKA4)#t?VzLGgdYi`0&|4X5(pVD zU35ri@f$I<7(Ntbn&;lBTE-AuIfG02mZ}g;C^ItD*lH-=9}D4m8TEp$7(hY;!@(gb zbBK{(K(~(DzBHCPK4mHIbmaf_Pg0D9iJz943yuw;tF{g&8y>!yq=U6F-9lL43f40Y``YWNy}L+&hXvC` zf=Vf9tMeLX7|b}q0#N;H0K~$ET*V~3Zx+Fiv-ti~J`jvh?33MW2*9P!^F`ckeaUUt z#H;D1?7KqQ%e_vgAvo~)K4AlS1wq9s(5I-KYKxGtRXWC zt^GOAfx-c{)1dvntVj`J((w(6hf83?_ch-3uE@`nqJyiM&8Pf zVt?5~f<{All}&2V0sa<6to8qgt8;A5EL^vBY}>YN+crA3?YyyV+qP|YY^P&)tj@_= zXYV>y=NHVX`Qf=W#x?%xR2!l-SR4Y@k2UhrxC}0dZ5!`q=0PaGkqd6CN9~%20Pg%{ zfoEKigr&Dm&lb3afVZN=ajT-wrxNh0Fe`PN-M2jzO58om@byDM0`okf?oI~w* z++O@Q)!kMD(cRrVBx|g-s0U&6hi{t;^i?J79ZR_)0ACJFt(dh8Iy`wnI3 z?8BJ}J{l-D{j0hNcp2)VC{qib?#{xLsW^+N82Yj{>yoU2asPr8RCuL~N$xaL=b8%ckq0D6JeG*U$VnvgWHZ{~qDfx_n4fdHxb zp^fq8c2@*V6Z>KK!YVTbFD{pQppv`clIumSit~&v^&d%Rs>-A}W@+~vM-_{SXmqOU zjbGy1sp})7d(mBPb&zWG{(g){Hl7?Noom#CTh&PZ31IzyR}Gr>qx)bAoV{ zokcb*F6iTh*zD}RsNA{P#>JPC4>>KG;^{`hTf#5c>jaVgyhcKkgb0q zEP;3S0{lz`q1tDExvk1H;Ad)gBD(S^42b&Zv9|mdHP^ZG)i^h4yT~4*20G$D+66p@ zW5scKR!KCY^5r|2c)amKazOX@lc?1L8_0i!_g20oN_wdc{UU0u%4KGl=5a)Rd>wc} z&sB_dwf}4Y!sl+4km~!jB#ApqTXw|43DJNQZZ)e z33`1cIJ^5@e5$GKiH?bc8PPzm#Q99j(Zz^z zqesShSD`!^z4g~O&{H!56IBP67{DQoKX&&hR1YjLF}*5w^#(r_8)l}DE2OoEh|$`@ zbHS<;5W3tOtOL7pK|&Q%p~)i1CtqUM>e<72w&SwyLrVRD(j>~0-CLWbE;V$>XFe^v|i@_J3?^&*T4eIoldm$qhrq1 zl6CnH*5gC-ZaGjTn;0mFY*F=cB-8z>L_Xy?!Ick5TH2Oc<+!-6eCc~vpH51dk@H+w z)DW2N`Tp8iGqC+H$nBH(e&60KW8R+BwbPAFX$Yr*ch-mWKrdCKZ!M`qo)@9^pXd$r zQ<28Y#g^+UnX#yymAhlQ%W2=|OTcINDQDpwih-nZge}OejFdq*v{ObsEEfg^vTP(M zLbmVLAG=?(VnaNVm#dvynwnO9*On@b_qeR0OKlYzrCV#Oe#u?;B!O zQF|E@i?kc7F3KwIUZdi0t5dqI8a5PED22hj?d3F=(UH4a&lM`WnOQrK=*Q4?2d<$- zMTa6IB?l3e>DC!7ecG+3+5lzBn}5o1D;}|XVfZ*(%`VhnN)0QiWtp4lKu51Xdai`Sglvtv)Ww$X_b=@Lw;_zA=-;DH2I{M1a4FMpo#t!^o*)RMd z;ddcUHFUpdF0%zKV1`PmkdyYIz{#S7x5IBpnFc~eoIaPlo9U;vrI(Mh?W}ghY`|Dy zSsbs3IEgFxLzC@Tg;-k?5W#(@y4-d=xDr)4QH_f7=-cg?&A02r~AhKD}e;ai5fP0u}4Ejey?Yf5rPnf@LP3 z?el1eGPlA!vH?|9yts;|ZXJDFN2S9VgtU!E{(h1vewR6M0ZPMWpRyn>1c?+&t7Ysb9K4$2V2DQH29A0 z;X+duIfcqxTPDfJcAIFr*~Rg2tW>2WNL1c5tiF9JMu0z%%5pO3*FKsCBQl5%F4w>C z9&6#&@p^Y2Bc#w9jHL~9y(X1ZRaQk+#_;L=(%GrD=hx>g=*$iI&{(ysiNzbpdtTzG zd!0S!aYj)C#SD?Kl7~sAJQOcnlSQwZ7^gW`l^g%umAP-gJ`O~;*)U=1n)-wPiVBW6 z=#y;$5&+OyZCJR6N1(K^?`+nEv^9t%tq?+rc0@_VuOKhJOsT8kM8bOS#j80l@)So^ zD(5T3)wx`RDjTl&$gqRoGJdtJ~3=bxA5e0MsgI(R4CO_Y{Ky?*d#*tB?$uA(GD44oAjMB z6WF(7-OHSgXy8!DL%DGbN1$C+J=YhxK{#XtG@D*oN!^lUxgMg-Fa~*EjrhfdLYOXQ zXND#9%P6BgvY2+}Cz@t~xKxl9;uiRcPy(Ppp#JnEdB42B`1>?X30O9UneT4+Dw7hD zqv>L(y9bj1ISNJH5*VoKKfJnkhCsccRqT&NN_OY_fv3iVlJO*k&qr7_-YN)*Y%SOy z2ARw(#E}Xv%mag7L#hNPH2!|tB}70n#eJEvnSqkByxQ7TAv`s{6fzop% zfFVe3Fo=e~Thq@-_-;x|EqSV0x^PtY^ z8bn{KR@c{bZ^d(wFfP{Sng@&;VhDJBLz?tjS`PwkQ=-(16aM*k&RoCr^FLLIAKxtZ zIiJ2h1oZa=1B12RL@skB1xTwJBA?kkaY;~BM9+F2I%b=FrI`~nzrslN9ilQv6bm5v zUKt_2IVLNJxHf`CKkhu;H+DVTSJa-#_`%BUzr(>s8k*8KN)!G*#%kAyp_EgUHm^C#$d3FN zJB|_d+|-5|A2o*_^UeT$f^8eKE9kpEet>MmKRZ)m28*P$pdL#mi>irHC*{8BfC87- z-*)bn1RoB)zt;eM$?R``ez*0BxXL48MBUM2J^>z zb~L9`<%;3$KGUf5?O$y){@UlZd$?^}FCOivyi=X!udbxk|#C!}`fMD$ifLXRV1sb?+ny?e3nmQbsIct}sE1&xwNKn|R85DSlfQO>$~Z zSb-d-c8m6T{b1z8+6$gAQhoa$IS%DFJHV3z|3<1vpt~fd@_QxdOYAwEH@W|Uq+1dL z&$SU)4q$0~X<7pEjGAv?_J#>V7sIPfFiRXW)v??!j!ut(q5KK zw0gXCSH^useQu-ED%URa-)YN81gOi!DY`NZ&s#0&xp0!2G_d=9rCx4Sy0eC5X zpOfI!(Q^(cW7w2MLBh;^092D2m41ha@8niyTH zVFz~(Qd6FUv5zvW)e@5!BilCOv$e2}Nl(xrO_q zc@~H9shtDH2y=Y}HHJ@?M&LHw?w-%Qf~BAjSsr(=jGDtUY=z9QtPIZf^g+^r^r@VW zE~jIt^O#5Ayp>}~!%+q4rC{jB;hf%+6d`zzp4;g*rLmpiscHx) z>slM3{Ht`nK$XS6Jd?W7Z|W9^1n~wpbw${|Me%B|*pgjM>%J<43P2%9D+q2r(I2G; zE~(|!by})?^jO(p((NuAsGo0U$jj;SWO2U_sZv|NtX4y+Dr0;ItqS7Vc#&G3e#QD+ zqSwnAI6&iWSaICc!^C3YZq^zUaoSwP!LKm)t_TxZg@T=X_$TKF_$>^U zOO@^0(44eb5Sx}y4&dh%utXOT4F_{n0BM3lexAVgf%8v@M~ zahE4lbUjxBR-3sDfP4obfTGP0fYjK8Ca@g#6!Nx|s%bLz4S3gj5l46l@>_(nBMp1h z+EF!4_$I){TVKlu83up(q%sT;a*+|h$0E4yZ&U~Pe}8Fv0qR`(wgbKiv+OG1%LBl1 z3uT6Dnv7tqI}Sn%-~`4(YF*bGp%1r|>oxJ(Z;)W|Sa3&c>Lm55o4HDbPnfZH|5u}Te9!&q4dm$T?6Bw0Xk^`&H~((ieVI(u%S$D^O1i> z;vDFCVd+MOCqY$ma`~XH50}p=6$rwru#d-r$5|otmSTYS%q`%4jW148o^M$SW-{+* z7Gr}lWHZTv%j%jzPgAkO!1t9ZcKtSb1{wuSG`zwY1~Rhw47B$RKyMXqfYy0E2h<-) zD@mbt05-PpF-^LsU9DeOlOe$G=)yI=XG#Xg<|^N$L3fAe;>3fZP`!f8`TUu}#t_Hk z%Jd&lp(&QyceDoHrYy5pOUG z^0Zu&9VI+^NftC6V4L&H{PiKKziIbVm>MbbNL-rsCgT}Jb?2cV;1DJg7L`_aa zbC1SjvFR+I_t|Yw58BQar)KAkQRT6uUh8)6%0Z#mu^>Het0(fn`g@0N%# z*@vUWl(m@+!P5#w=YeBiS`b2wr`wpcS;)Ap{(a4bCXq`jEcK53As!uedFyk*;@+D3 zbM?accjz|!IJ-KVDvvu+3wJIpTe~PE+1fl8UE0`U`swO+zppCljbu@|VRq9X`tZg| zP?Ly0i;*P>aRX3Qd+|clbKBPY6$$`UHDk0@ya`SV*4c~j&zsaZCT7yNpvu^+Hg6x# z`WB+1Up2dH4$gzyUp@E5AAg#=g;g_)xFKeS7>ayXj3jDk8064q`MF~tpE#h1P-ArUv<92lx^KLbDsw; zY#HNbZX3%=LDN#8ugvZw2*Vp9(urcw`ME1@>c255mIsIVq6VD|8Rg^y;v}4sTj?yT zp?z{tB%b45)%<#S>)Z|eO7d~dNe}e4?Jzrzw8wI-w5Tv)pvwoyL*$Zf$+yGHkC%vj zn6E`-x&a=4FiMS$iY>3u|NVK-0^IZctGSm{EWI3(9th2wTBCA4@)Z}(ujeZC9R&to zP)5RsNGy%-uA1~*H;&0iKr?0BEWd^+?VfQ67dsf_01SlIT=lzs*1|SL8eWhAqrPub z+LSjfMNCwvB4Nr%KY)}BiD6;-K`O(d+8|##;Q^4e3YRDiL+A8BG{kK0`3*-KXbC`I z<6j1fhP?`))v357(dz|HuH)7w*Qjt_v;GWo1;*>yLPxcnDTn97D}^s@<4RW)cgq*r zCt@L2H`f0{e6F*X%~i)8k8JU$o>?M?JUak zh65}Z{)rTHWf6!KlurD&PfmHp2}~G^7r<|$37;O?I;`Nuf!JkqHuY17mEB0Am;ec% zs2H{s7w5fVhG{eHyjLR45HdJy4J&L(lf~2<4)r0virbOd24X z&hE2; zDb%AV$`rCiz~S&GGD$wL%pCM41Ry$@x7JFkuj}22dtX@`K`;5`klnT+aLHBV5E#up zR8?F^23C-_^YVK(3FhxC zFUyXFKcnQ3xW1UMnsKocp7>Jr=;Jjj8Mj%4i3s*N0TEDn?!oUR{kYy^PJs7IPZ7#u z@_vXBn_TxuuqN;6V02UO3w9|j4`@2{K!=Q`B((m{!iv+>FT7sf)eauMvx5tqSzRDuc5N5 z2I`NTtOj%*_~em#PpDkxWWd$HR%MBW!Xm%RTqM5p_wsEn5ZB;k;(XUyE6w8AmYZ!; z>kC0*6))*ZRKE0!zGPet$eB=9-i0bD=}^g$ichWOc)0&6Pg6n4n?=rgoQ$l^C*SIB4$Ki%%-}^c9Za(5lF!PWujS+1Cl-&uSJgHoCj^gjg)A!91`Pz z9H-#4C(DGGM4Jw657wiOVjYH4`D2ODKFLUX{4ZV?<}a}^5e%sBX-7Mk>g-+FJYA_R1!BR$gpt)%7Q1D;7byGb_dX#_ zf-sl=TcZ+Qf3%C79RDRPwPH>GL@wO*85F7#K{AsHkR@6v7g%+J2ayS(w)2;8PoUUU zr`?SVRd#baF*EZk)JY5`}ta!dP2=vD- z2@S(W4q+A<(vz{uEFEu^Rcc&njU3d~M9-e$en_H8(h?j}66Y=cErFb1^(B!qE_1`F z@fwk{Ju9knnD$mIadRKB;X)DY*D(J3se^?f4PI@o2lX?ArQkyqyLz^K6>0-3Ya#8A z+1W<3cxT0=MV(~<`YnCB?$&||odO>DQ~MaTUo z$whdXvbdxh0H;WICfcO+x7o!{xTfBWP76)6MSApAWuV{wZw-jx8@*<@Af(GznF#?DCx-8m4Jk9aCfe788k{z z!D7|zV`*`@sD9c-u31n@MU61 zWMCd}0MhO|mX;PBo(a(?(s`8}mO{oRYaf7r5DDFPydzr>^gkiCE-J7S;i*Ct#i_dz zpa&=eMFv{O`@>PQ&q2GFP{X7Ku+%1{$farHRE3LLN=I-`c80ehcLR3a7(TGX&i(T? zJP=FXH2s37bIz6Ij7$r$2s-RaNfOxto^hpnfSVkm7sj<>K+_9hIygw@t+3IS>TQ)q z5doB(Wj0szsQCPjX3s#V91HcYIuKJel(JnpC>m8~M{}@3R?;(n&SOI^(%0fR81uLh zp<}iF5=V2_PbnW(%&O)uEeK488114l+q>trwfg=717|cP3@%9U@gNp`uu938I~ztKshjt^+&k_rZ84mj(k zySszUOF7L$L+)voySyx!w)`7YXdvkdz(tbbvZ|yF@oS#2yybc6e#g&F3RsZfdy zGJ{6&m)|QEIQafAaAa9|9AD>@@t+l^{Cto4-M4JB)2uDx=K&IgBHlI{PMq#@t^Zo7jDJ2rKghNcl^X z=mR$1=Dk?$_>u0=(zSNPAH$g?W6H!|)6kUIpZaiz7PR60{5CUyd2goy`yBLSkMC}p zH@TgtBGh>9}qVFI0UQ~xFXB)isNmf zo1^k+FO(G+b!ph6GvcCxsmfshe8+KLaswiW$=!|KVg)&}VWVKl{GtF~1edRb%;y(p zwfc(TDz+2zN#k||#==%+NF|8}0ZN#W#Yjiq40*+CDVXp>Z19@l1S z=-@m=MQg&b1lt|(C3r(=K_&8Pk{P zqc>?k|EmvVGdlcRA9#~;x{9%bIXAtFG+!V&Mz@}Ua%_0ug5hR45Nq${5A2=(@a?m{ z4ucTP*kM5CYmH&<4#xLxuoysy^q=Af!p)Mt&#Aj;K{KWK8$z~icuT7lylTo{T{xwbRx}$LOaNC17>vo_|eymhXeXn; zi4^i{*v6`QH4_;=BKW$_P~3%Hay8` zx+d{LBZG5%I3%meKr>hnP(FEAoPgcdnpQmFDeEwn-O-PUjl(is4UOiX2yHNgx%}gQ zc2adO6^<}4&3l-;(6Xp>N}Ti0Gqm6V8yVk#U0WQtL-{N*CkITK8yk*kM5!*v5B z@F+)2gRXL(72glr17=R=$7)U(O z#NGVmf&7xZ1FY@fMpWrBa$b?9vyP+Dg$Sd9O4yzzGc4}{^32?k53aUQV&yKgYUf^s97p)e%*LrJLS!Rk;g<8mV*L_!8WqsE>JC< zO$+fiQ|t0Gv%juu0r37@dRGJA?U6ng`+TOan_TQW0Y~}zmy!scz58O%rB^kYG(~Es z&-qa&b?RHGIc+9YFqx6F%c9p7SJkss98Ywh1K26j2lFhL>4g1&kCQbI!aai=1BD8* zwE%K}42&z-WgU1BE0s)ft)YD z&(?hY3P@%cPYrcpSA7fpr+x!o=syWhc1dQp-B#8^7}Wwdl-VVHmCpiLhut8?-OQ(p zf-J-@_!#W~^au+AK;#Rcf44An>id|tjpa5J1OXNDq|0zhUoT0SU$oHNeDq^>p|#Lg zuXcL>$~!?eLK6|-Ld&m5Y4E=$fDAum>6qx%f4BX;PeUMKj(5ff%8LPIyN(LCzpIc^ z49>5j+KB0*93HylE~CmMjwUZ@P-g|mcu=!Vebed}U0N)LGtd_8GM3kPWE2>-v^!Zhsb~i z!umfMa*D99nd=!{9suIO2A zn*ploqqYPK69&g-&viOwqjZnoQkQ(a)XV8a02up~rrL{qShT^8%+FU$U+3=yI~`6% za|29=UM8dv=Zo3lfC;Ir>+H6<=~ivkGTm*akqt#gqZ8l_K4@sv#cb68h>WMrQ3?lh z7aCDO^`?Aiy}vnx^@_V&W$CiwtX3jttyi^%gwj6FL9vYYr#l9D-^xtgS6+K|58L4~ z0IpW(+nxjQ%X#A@HMKQ+*}hNOqT%!!Zh)#8=rM?Vs)C&)CzM!v2yCVhT?B+81rZ#X z%{h5uM1VPRz}_8%MW7KD9@^qdSr!NZYKx8W$<$$vM7X1271>;)8yFo6vP{Wfme8LV z@XB`>?Q~LKRW~zXJ16|Nn|+9SH^F5HFuWdUb*UgviqVuGB6kEW->z3x#tgN{l3f&> zB-G_r-C{}M5igB5f3%}Xok1gM7hR{3b(uWC%>!Sn00uXUP0p7#?zB{~$^^{I_{@vX z`q~n>m{mw!Z^3*uJ*EIC)v5OB7S31|8as$Zpx1HlU%D>{!!S7;dhNW(xxIJ;tdvBO zdFne5kN7bD{$$n_7VAJWX=9)-z_cnR$ewA`xXx~xkWKx{TCK88Y=gXe^d3lVYQwj@ zJ`;6mPlL!+P@wEu*e+-cCYSKi$c*sC2fNQCDo9u|ox$@V6zKJN877+0 zG}$sKYd))KBZr}R=o3A3&Di@5V2c4yh&x+nOQ2@DS;zFQbNLl986vvE_9oxRIc(i+<8(}Lzu7WX0?Dl{fy^GG zH6fQ2zyiumfft7;e3>p@g{qA5md-lqcgj&-1zEsOngpxaSylxsraIsa0Ce>Da0-zQ z32>xCfFGa1b?dNC-2rPX4wnH1xoUG)XFBLZ9Bf>*pOJBf6%O5)(c%bJTI!e^;M8cn z)6X{Pu-^>)5S-lqaglBemtPpkQC;_bSv&c?oexisX2%m!XaQxDH)4?!I?P##fnhl< zn|^jGbF7qh>+4?^7`ILVB<$BJoL-lhqtA(ug@`KHn&(=1oOLUFsu-TvXXQq{MYM)| zMxVEEsSr`qLOCeU+^Po1lqA1FirFcG4Cop9^bJc9d*)kh_WeT^Ms)2N1px3paHbCY zP^Ouldrvd9<36w8s5KafYay_fQMNt8-rf!iXLGec8BQ}5vi6n}FKvNW zFxl(`N2G`4LESK+&_wEL$D7A3QypeZ&yoQT_pl*dbFR=wfr77cL7sP3FuxP415i;-r&{DwnC*}KAH`q^7-XuUI?$kS5=!z0#D+>$7 z2!lZ-J4a+1g+HPFxbNF5D-(2-G-|coi`!d$N~YUnVO=Z|awZ(%+_!t!0_Mj4E&s98 zse?_`FTUhhd(L1VQXsMsG^n>}h1kvGABJA@s36$8qMX&L@j}*6%r$X3ob%lT;pkU2iw>4Y>ul7&9Sj`W#uK^pk@(Q$3XdEZP%K%+ zB~Z8xELp=H%h_eB8D({3tSZ|YH}9_Ns87-YxPYzq-_6t z%vB_~5W7@(0IB{);5@HetJwW`pWS zx2!?6?gaoGC*8tt$Z>$u!Q?cc{=Tha^_)I!p!(y-(LrD$fiP|o9Q{cw`&c^@-_%Ea z6kQBLz}!)p_ZNPglGyY*Sn8GI2w$g6ATM0N{n;I+7cHTWr&e>~4CU6MvvVor#M#Az z5-d)t0NPWC)b$o%Ow8s8TsrRILzh#Q9{kJmj&%kB!9P^|AL&GBY#+|~N39kAjfbqx zDni@TX;2$yjoT=62Opi+IrSIHE zGY-~YM{IB)l(?XOgjPht0|$rTeyk-Pegv?Rumhm~fFJd(GSZPLfl+~((vhuxj!Ufn zOFz8M_%Ho%{PrIjAGn&b-SgxQd=y^LSYY%RhYovs8I)yG5|mVlunKdE;@$?Ncp?Qo zwYYt+)HbAr#i?Mw9};9W5F}yU-N<+M=*p!HF=(hO+Pz^T9GfsqGLZ`MA`c9P)t$$y zQd;(go)Yq^_CuqbNA?Vw*DE&ccB=R*U}+VjAZzBI_UH3^))MIworp|>p#nNd3eQrs z+ppgzIcJWYv`G|rPx^n{}XArIQr5^yD)0^5sSifP!yEcSo zdF`5u;g8j|Usx3+P%gm2P4-=0u`|#oBAK?`g&TMvnEw*lyQ?ZBXPo1>1Y8}e06P`( zQ6WWk<-X_JGq_9a8LZgEG}26zSXPDl<=*LJ+G(p3k6vYe2O_;_!H%G8_>1oI-`Yt- zJ;ZbCqv)Py=iM6zVwy?uvC91d#F6>QaT7pC@FvZ30AL$ecnoS0QX}f7H zOTnptMc>bMi1I_ctaM@*VMMg#_v|(%Q*G_}N9L@n) zLeI9B#f-ubaZr#KK*qW>Iv!GmYz+kqCYoNxD5^-pW98dplEn{iw--21Ms-Ip^2hAXX-K5E zO=a&-m+pBpmDBY4Y?!nL-CU!ynz~4jwF7nE#{a10eeQn;;AlR1=#AVdLHjBVVe}+% zZFh)5##~PsSU|Af=2cHc5AqiD@rw&V4Cr04;_#PKjdb-+&zOoBdU4H=5dn2qo2S|?F(sho@a9sbSQGT5Cw8( z9xR@HtPZ}wDD~DEws$zth+0nXEokk>hBX?(x25aFQU&tInuv8!CNAvK-ePKgg9wEK zJN@^01z}?U?;P>JV7F2&U6=pN5ij-omBB2lVZA`zd2;55WOE%$BX%`qh|*)t7*ggz zLco7wJ}!OcekCL*;kPReY?yJU-+nyPDL23s?e9qcsXJ{>KE(_IPpTk89<)VPqL4<3 zCQ5`>rhzuszT?i>LBBSgN`cYz^3WWvg=4j`{A<6YX0LW64hS<_a9>qoymDJOQ@4j) z^Mt-E${Hx0#^t=19r4QcurFj(#yj6?vw7@ku6KL#?lAQ@#jxe&&kqpY+b6e{kM6>j z1A*jN>7l)dk}DHwxa0XvX<*SWf>6drLZiW`ST*??dV7c{QOZajZk=M9=@Y3XDlyU42(Yh+JV7z`x|LMt4 zys$78BVxRm%%G8>x5UGw+9#AE;Mg7~1|U_TdYBC+0EIXH1-sb|waZ52SgK@2e)Ki% zCV4C0K4fs?wv>mXwIGE;@yg^<0PuiddQ||Y;u{*al7ZGV;WLdw@QMh- z4>i{)w5p$9o}`AAt-ioYY}`{UfMZ~KVE}>YJII8#eIr(V#&~leG1}i-=aj#I$X* zy(unA1Qr|eh~UnnWhJ3U-3pim3xBhozn#bO&J0I&s?2iTyG&s56Dg@BkkNvjBDWWq#%-%^w9 zw_c(za`n_q6-_lqN1_zI+}&l*_cJM^DE$JL_`qCeJ0bw}KRAjm%PC2^eqnS1iQL&} z&5<`bJjCMQYOY~_&&fL^Z3(rnBM!;8mv>Mi`j@4I6J9UyOKYnDJPRf@B>kU_A7HIx z-eqf09-UO>m43pk#nLabvXnMT!HybsD_6h7(s|uQZwVaNYXSQO`Bk2O&_hCHk~^|Z z?p~U2t+*u$xcVFkIlkRRWl(k!>C7%YH@DVpp@+$%L6L~H`nd9VHai@qq?(tvTZb;d zi1B0YwpChaL&S2Th4RtuS3Mnd58zQanL%c)!dg{kS+t^?eNX}6RVzETq>iOIom+)F z?LD%Kt`=IqnS-&U>o5C#z$WoISG6yYs0w*_$$N;cGs#!}23UL0H6f&g1}ZWe5@b0L z0$os14RY$q+?{mTugMlgGwqXJ20QU;KP_TUhil@ht7Ao8+oQN@$MMu(H-Pt&_7f=c zzC<(mo1OE^4zqT+os+b41>N<&++1HlVel9boPx1og6Tsv1PQi`dIbSMY!KYozL>a5 zDum$7j5?7aZUXepnwg{D-|-1ARipSS5DJyEEBx)fTLP8^$t5^B6PgmxlZp;lXvzLy z4-Z6rNmAqnUGk5>0wqCyBmiIBXq>pvAgxD3uAC}Ek>e?IY*MbIYE+w>zE+_RbCX?n zZOK~ej(KnlzUjg6+UQ;a>ZB*whomkYd^*aYr=_HOHfFaU#!uAbOTyla5`^)!=m(=gd@S(9gm_AD)1vI`pxSyFrgpX)Vvia^$0dRCPvGS7G zl%xB4CVwz-)$)468bI*-iC9K)C+%SB6CU9}X^LV=v{x0%#Z@?g657HO;ZFa{ z$0KMnMR%WB);%=ABNww(;w_+km9@!JP#E^)3XpELV+a&d04DY3|wZ1u5rTZ9-ZTQXd_0aWgM zffYoiF+;xO6`Cm{h%-&~wSNDVeX4b^AL)Q7o70!m)7|Tc7*XOOAA*K<0aFq(LdPE| zYJ!@@{rJ05I*({_Qo8N4leZQ?pd{XEJ}E};g`27dVDCeM_hgH3`ziaqh0~FnJ;r>LFZRn^&*aVn&z`d|KAEapbTwu*uMJt7aFsMku~m zfkF4`8n|-d(*%Dy6SoToBS)kO+!$8KK-R;q!3Tr@GR>yZZmD@T+njwVtG*ZJRGVsd z*cv!0z)0nIa$143`BD7}Qh;811bL7y;G9au8tYw$lW^*>V~HV$;`P)b;(b?O-4jqr zR4>ofF5S4GUoeZ+KkUbe5xyGhkN0o$#Qr(9p`#A7J8Cy|v`iw}4DPGn$EiM)G>UZ4 zv|36P|0%;ZVfZI0K`D=0v{SQIpl(g4{K>BhpfrXQ9ik2%Z}~Updq?$;*794~eC2Ie zUpyQtY`Cn>#Y`vSD1wct6{9mUv~0gv{9`cp!0UR;BSkK zx!-Wc7B_ojy09VkZ4wM_q6~yze_g~X*|}-g_)tSgWtMqCm9)0Eq)ePU=&+Ycyvx7Xx)p{^@8ee0+k94^C5V$6iCRP zXr$y2K|-Lf=G~?lugI&adp3Bu{B(v+3*>iR%VxgNMNL1_Y3va4+#*AV0xC+bPqQmi z6vJpYpgd7WJ0^1}BR2x>ri>t+$fLA|;3SE7!-*)B!M}2(t)4gpJLaq~>#OtND z`WIz&M1!5#cpd`XwiC7vt9di+D!m4fxLQ{4kA%U%Ln3<`c2h-=!q>|3QLd(53I#l{Io#FV}c@-OEaZ<5M_cgoIsK(y-ZJ^#Yc|^Cb zoEI#`H|*PO8%r7gb#ROZ@3E{<-sZY>bp}Vq;j=%P(+6V5&O=}*{49|EgB3N3KXDLY zz+^GAzI^DLp%W7UeZm#R-IvVm|L-}=kOAYK&&97F-(|nSEY5)W^ktb@Qac9foAd2nr`t|9k#=1f8IN@ zw{H*uxF~eHuz7@1#ha5YdMm1>FY{6P%CKO}KYxY)JU3{`i6cKaPqzOmlu9-9HIF!u z{C?Np6+0s!zu$!~3xFpnX(i8(3~V&-3^T_;-SBYO@RqiefA^Bg&QUBEx_%hzlD=7= z%;hFVG&@JQtdc(ap*+P=>hYu)pL@+j65vTU5-s0{#+N?kTAurg2q3(J%4CKsG|AK4)pGRlF~B1AHnD$=$DI1u2*+NRJqvMgMZJ17Qoj~N zSXvme*r(;q;o$`v4&Rt}-XVuu+Ll(_PtzWY!uT&dqz?Gw%0| zd(WRWMy;Avd;hArYR(5&P780qwc=|j{L|S0V{xHeZA4+t@t;p8EKX^RUOUM6V|`xs zX|)80GUpJeJuDW#-&Q64zO=@n86lAK0n5Hsz5Hl$uizyNbHNl8fvf_Ag~!UnURiax z7M;1pgpa{M&Lim?zG)OJTXpE@<4f;XBkpM{-!9|sIcr(0`=1~@q_U~ z0t-s4y?Mz`ASDcpuK}KM_X*EDMS||kHwn>XK%96Y3jx#x($O{31(X{VN34H^)S2fP; zJsqUSr))k4@BUi_)lyX{^)=>!_DJft@^BZjcAg%X)AC^?A$vafda3F*m6ecH)$Lo> zmjui(R|BgRVY}ZMo1juNT?V8xgyg(LcQE*^F%UrI`y_w4wroitoxAf8`p>4roE96Y zS24%i=rq1oGfN@??KC1TJj=zL)|s(iYYNBMlLssIi#j&m88TPll4SH`-*cRkpUm??|7_{TbQ2a@wU&)CqZ|50mk^;C=$+cFy4z4$gB^ z3?p~J$vZFOzMP+)jyHK1V@4z*KbIiZH;TkBPKTF|4R3q&Gk{~D8nVopXV3Z%J#T+FhGf#ap@FJ+ zg8(sKWN$$j=`k%IKqhjoa2zoojn7JmMHPu!nOOxdj6~P65#$KZnpc$CR(1Mk*9oK9 z@@fbJP01@ihSF$Djjw357{tymq)M27HGsaje25WeCUq@VSHzhM`;lZ^^Ayfm84xYo zs4SPLD%(fr25VFb(OQrTEAxq20QV4Oa;=Nx@r_;UNBep(~YK=i39vWLwwRHBmiZ=AQwT6 zfd&iY`g*gO1hKKPfH!`b2)LA|T5U3}D;3RK!Uh}tZKLvsKm5Zp!L!Af9W#x@Qz>GP z8;_P3r-N*A_>Cp2X=?glH&Wz0*cUaq!o;eXB4*a#9y1~c(&(WEwUtp+%HqfJM+SZb zvV&##%~@-1r>Poh);pi|HO6oQC6~}Nl0`xR*(7G8gqk=Zr68QPV58TwQrkU>H4zJ- zzr8VGUQJ%B@DzWWO)pWGXb{Q*IKan_g?i3@-d}V7@-Wc(wWEA-5Od!vDo?4=IY)9= zXp3jHCyV>q_j&9!!#XC{+uKN z(O!H2{$AZv)3)jCtTia~eM?c*Of$k23!H|%LeQw2ArWvr)CkEOwG zig}=~IFBp^H=t#A=ZLf#Z`miB<1sYUqAW!2pBecpoLs`3&77+oGny-P{kY#JlLu4GIAqAKB1XP^jeI@WVAJFH79~cL z(c@=I$_qOLfib?6mzG~v`Q@Xsxkao>;l7vkLV9W13NA5%?8;Ab!X#hQBe>9H zz0%LqF?~e}zyrjzwv?*!^!dr+;BoY=Q&{-E6n8yUH;?&K1r`fv8-ay73b$mKtaLv3 z$3w_BU}Hn@V(S}{#?sJ6(nlyhfmNB0L9Nm9)X8kGv=In~iueRfdN` z_B_mw7^ZRA{m2Rxh@epaQODzkdDHK{ekZ)7B}I$wbfEVUQxY=Mfb*gjd}ob5hI9uR z0J9Z4l6W&h+?6FBCh<>_)@p%Aa{8&>zD=4SW$_t92T!$_mF%`Fh~x7d2@KYA8nxrL z$}cEt9682!`P>Gc=(p*_d*p#6R)6Vle3HkGE*}PMv|~LzOWQ*YrAAfG$g%t#KYboJ z3ZOfc|Gj^*F#hKRW|jr;K_T3lG9FzFRslg~aWVdFj)AhUwk4_nn8D!^YO+Zao{>PG zAC>;I62S5g-5b5_Q3GHJ1?TGv?mhYmV64l>{C8hg=Kt)QXaKN=fWxle_*M58;!PLz z_P?_nZFpvYWiYr~wA9YwUqA<8#=QT`r285GFxtqi07;N=567Ua2?79#K?s|FSFv&Y z2V&TE<^br0fJcvS_4NQgGN3*@g#SCw{@;YLM_bMT?@P$?s&2cX zTQO(HF$_Egl(i1xN=nhv9=Rr~?+!9P zS;wA>u~JbokZVw7o6|%T!oG=0+mK3kOa}u!$~6mw{apz@5@8XdwS7QD4z>LSddEoK zF(yNVVgMSOO%+z(3_UB@W(-G_s@ftEd@@WJW1%25sgM{5xHLq^!KRJEh3)XZ0uPq! zDua}Y2v8ORe4|!D7H~G_-Bh!$HDy9Z?yrVN8%TBUJyygLQP_ zXc0VGv>|pKp=B28FEwLZ$jR!A4B|mN5Ry1XHw^@0z$31zmZn`E|A31=Izu{}OpZUo znoLLxsvF#0d@*n8(uL^pdOw*zJQzRpZGvCWaE;!3uttlE8`#DE&7de5&+}*)xRwny z1cUqW4iaeklj&(+s?F1_qlZ(=et`Pb+X)}jAuXSMr+Sdqv)S`*X0(*&X1OugrRtY+ zONTJfFqz{Dvo2lZOGh&LKuv(_UhRu>(k%dN{fjP7u*cmtVsU)R*vpa*<*Je%Mkvq0oG?F+wA<)@3^HHj!CtdcXKwL@oDiOtwP z+{f`sskz+sq6KZDZA2t1NG3CcsvF~0HT?rrNQ^G8TEs1re+ymnyK!3sUb+3*`#C)R zurBxce)hJw^=EhW_4dzg<5kc!rT~M#7O%j=;mK6)&pu1%pl4z%%;>NdI+oG>Gn)#O zc`ioWN_by9;bxm0le*Evx9H~e+^woC2^O}0PC5qzuj1=R3rXwX(Pj{47k`wmKd+%$~ z65j1#OB$klKOFJ_`t$VV^-(V6DWMXCNc=Wgsun<^_wi)ets&mdRwl)5|Ggg?LJ=M7 z9^DZ4HwlVll@W_Sn2%?j8+w{M_@&nz>j(Us+zIoHpl;6Kh<{m94*LtYdiCUi`(*I~ zefB23gWQZz9&Tf~@`uxi{-^0X3k+oC{y684l_|{!#B&$z@vaRZH(tgV9^f6|SBu<7H}x{s1O%(5~|s5J|ttJ=>kmR6mu{i|2i^SB z$e3VpDNpmw`E-4`*6>^R4M)`|bqOIYYuS$2fuw^UH8DeJR9-nqC8)#VuZqrHK9wI> zVmhnh|7HdbuH>EUFMrE_)rr%qq5)jMK2Xi`gLSxR7!9N<$A^!mgx)RN{OiJw`Ab=q0rSlAKSyS%67u3p%Q&GQF*ua5~PW50M9 zX?#-!wSNEtJ?yu{UXMQ#DZJa%Ffxb7Z^v(D`!(P)Rz$xwPQCl-MUy~+ujko99Lv9ndfWAO&y>3L#v zQPWwL-+PRZj{lkVFlrzAjsnX&-gP_1Rt~ls?eA%Z zk#t_Db3UYfEb7nhPKb>M9LdTrC+3PqkAW6R>MNwoRmqeW*kMU_>R?(SZUEVrKTaIl8kr#{76KQ}_<#Ya@BN!djO07N7KGjL-N9 z(WKlEVfIRyjdW`~!*6hjkR%y0?kw<}MpEyAG5ipk4=siVJZ%NP&(Ge@mGYn)bTj>{ zR3JyXRMfk}lYdTM6#s-N(5S0}xj%qVN7=vK!EvV?rt4alB0ZEaC9vF$>0zQq+UFk-Of?^(bGPE?HdsihiYce%s#f0h#V<;+i#0-KEUYtarfa}oc!&%lv|a+ zQdY~;0LK~^XnWkGXM@A5Zy2P`^mauu6W*`r7H;f-7I51fyqqb$qcq^=>{E>(E$q3W z_Eu<*069QMRpr06*!duCCbWoV$En_o#+bZQW1hHV%_wzgFNS(pVefu_u{VxS7)3y1 zDJj=|7Io>AI}DN{M>x5?ZnLa5RL>M8aQk)DbkR8kZb2%H4J6M2L)Vi2u*=zK`u~`@ z&RRsd#~v-0y((5UHV0tlX<4xt!O`0&b~ zsFI}wNJP-|=E#`7GOK+Tiod8f-1j!U7+#Kqo@S?%=8FED?`ysp3!Sk65_VX^9ou<2 zr^ZKC%D9aI35F|(urCI{{L6n+XphT$Hcg5f>wwr}5bP@U2c4%2&DV)Bf&DD@q2l52 za$>Uqoe5%ZHk@kU`L28iBSJuvuFZ{`O z+mEP&hFQUfoZesi^O<9T>92$(q6AuuZMdJx{YSep<8sm7gUoL}x8FnLwon2E9lFOG z&BR{#wDLOI(cd(3C_-5ym52M=#F4j?Mkw%TCc;dvSQPwl2T1NNK&ippc7zjNKV;*? zfLUP1Z=PDlu&KP$x<`D0rV8g!J~MKRAP6;JFVP80i;z|yF3GbdCWE`Gfoc)RfTx|c z+!JB~%UXMmPz=gVT1hCfq^& zKZ=!Lq~x6Z+cA+aei?RD!yC^;xMXfx0})y0?=^OX=&Yuzn=s6S?wBzAVE-Ut{5O2SPxZa@!1k)CM1#`)N^e`>#aNkV#E^C;%y`HDU9Gl zI)Cnzwl)E>BVGT7tu9)qpa5=)Gh;NlgRd`YeFOp8C}~d@C!n%2+6T-VbGYLGAlR-& z>O9wySrZ6M`Hl~jU%IdJB?G2uH~qV&6{E%_G)>l)Um$a;Po7~I*YN<2uXy-(;Q8`h0YkkaCYFw9inEdx+D$u zgCv2DsLBr(oGyNbOiS$#)3FX34@9`!0Kw*O(sBEjjGV3)kx0M#QR7;&fn}Qgzu3Ae z2K9qhwQ*N=Of!*2YrFaJYZP1Q229T#tS)aYIPEGX$-95sU&r9&!X<;trc(V{goTFW zU@eNtG3mSh@dp8-L5i<`s@I+~CPP&y1Gam z8`|+sM9#=rzfz8RAyxL%Nh2ZDe*RZ1q57{HKD|l4WR#oj@nYz@j(*z37+wt6&zMV` z+15f8{t`Lwya$SXn&W@Q{=vIA%2enI55x^u;^bkSQl4kGb6iy zs<95n*03D^=(d#sFw$RB06gYJ-_WTOC_06_C4;MdtYJmdPFj?;)=nGn+Kz!&2`t{L zbM9ybP(rtk`tQ%b;4i-0V_xq5LQCHisL9vW^>W^6pxSqC*rXR8-)@7&h$d~(binH6 z@_l)GJ&LB?G6gdSAmkzPeLP_`e};R6?&_NYm#($8Ev)PyBEWrJ zC`-3IYG#my-D;I&I1wxS7MJR+DXk3HTVP*8ext75 zP!i^f5(qp-+pZ6LLK(sq=bqVqYBJ(P+yM{WLq@zw1@qPT?xNSB>69)8(j1D@(U3s` z&&A7e%uGaFTLUW|H{MP0w0ZrEo-UULpjDg`n4Ht82Dd;#8dd!$H2!mUz=StNCDe@LZ`k`{ za<~=(s$9gxMOYFEmv@WJuHsC^<$HMr(;%3`RIs-z(0qVB%jHxXSG3;f!PEa5&6XZT zA6^1OfHr|eJ++#E_Qfs}$~XR?OwR_m*~Z9w2p$Yct4x-?CMg`jR`HY1`~)&mxuk zA^jUwi&is5Vez=!S?xkwX|1b$m%9_k5=i$@n)GEx&f<+BJUe?dsZ1ejiK07CLekM4 zCM-(M*Vza1)eY=4%SMP`RJ#o@=qwU_v%dhk9#Kp!GONm0RrC&pugeN>^paBklIU?- zRrZ7+$n+h-%hobV>R|c%u;88#%9mB5kA$|Z&>u_*2@)o+R|qfS-S`JF!jXqC4_197 zA%*uk^UR|~=q9esJIJeNviBk@gNu zdwEP-Tpl*yn)qzO4N_wJYEHK9Tq0cap$Q^39HKO_w#rm6*bJ&J8UJ)Ql7DX&k{iYtLDVXo1%wmar1t; z6tRE)3e`PdI-MNe_(sNX>9S|3ex#RdhD4Jwtbqd$TUDRMJqEmPzDSEbybl1fPKSrC zRTQ(u^e!J}$qzVW1@5{+M(x0(U%;a?8p^t&lV=2H;D#6Bg%=Un?YcH+?mp>`^`#)0 zlN45o2t+i6!B_hIHr+?^5uj&P!yCCrGs#5v62P4BKGk%j^N|Kvc6|SZf1e^S4Z93w zhYLXwMe$iZ9?xZ@??3o zr&&L>+y2UsfW{ zfq$)PWn(AL0uO~om;#Bm`IPI*!JhgoK&XYqgb%th<+Qc`2E}Oja_k{H+hpd*; zNv-WfepA5E7($;T#@wEe5wp85yWPuBB1yU-0E&`a`5w*R7$3?peTU!&GN#b$qs`1P z2J0|%bqKS1;!OKXG(8ykA>65lK5JvUuD}ZxsuvvU|Iyw4e-i@pe~QCkOsxL}Ck?0T zIP8g{2W-93-X0S(=e`{{q0rN4lZXzY5$~5ZRVbaITU3|6opHG|b7ML|pKrTy4zhWzd!OTgm#jm>l5(J~dtMyc$$?${v zvbdn3*3SAbpi z{vzkJT^Nhq{xk=acJb%sLi&x7js~y|>e6#k?IJh~{yVg|ct%RuHdp!ZArLXij$+yDo;aAEj9gl1e^Txq9mqux(Yh4YGJw zYp1{IE4eo>#PV5flSfF{6Vj|iprJ3Zz+WuIZSeydj-w{9mBmLB)_>0DjJ4MgXE8k1 z*#6*S@2jB9M=;PQA>|( z-&H)~7b`a(>1EMydqZcrLnt|fB?aq8CG5Ie?05mM#X(g<(s?{riDksv)|w(eo;fZ> zXIiT9f)1fk_z_)+_qMT86WeZAOcwz9sb2|4B<*O-A+QBHlku`2+5+TUtZ-Q#iB4=$ z>u^)+CQLgB0u7J!S5PHmu}@ZlXJ`=2Xbkpfqg`Hs9F_dN3F*1+Tie;Im?B*;3~T(`BJK&DJAHJ;It&!KkV+ZM4B=(9w=>NBRovro+@l?OU= za>iC9Lh=+1UI}&U`VEL=8pvxFwNlalcFlM%cr|5@1qGV9L=Y%sK&qH2N(_xuokajD z;;I5}O+FKCk1I6rjNM=BZNd{o_DdG?OD4h>5%`|_P92Q?%(8p+vqqzKZ2?Ab8%f)M zk~dY5loBRIa!12PG$G{$HSiE6fSA^0d;y+mp0Wvvb)BjG(g1io7&dO{G4OJ@BSmgq zz#d|~H$1i&sJ)U@o+cTTvSeXqimPp98N{w}3*Q16xnnt@gcqJux5~vPku%BE(VOzH zhB*2_k6zww({-(C3&A(XiNjHcHEx+zmsGGvrqfrF-T>i1W5$QvMqS3+iu;~FpneTz z3xQXU@dupzcm+5QSZ}5ari0Z#B|>)v@kpCE{SQF7XLvs)+<*U6e~i-ZO&5g6Aq||ArAkJ6X<=G<$eIE3|OGz zen^hUFfj@AoFw^CE-#dv2`AgrYYkpge^p0P)Y|YOti=4skosyw)7Tv{$UY`CIx$|v zqV#!8(6EG;0ZW1cRFUtpx?wJ}C(7v3%)l?Iy9+V`fv%JpWEkalPclu(_WXBSWKW0D z#oJwjST?Lh!T)tg{l_36-J<|N5B!fmalq9J20w-~ipy~MH`ZT;R;`jK`w5)oWl*bS z9vCZg;zdm>z%PGd@^u>;cV%$N--83Uo}4+OqdS)KZ^Oi#&Tl(C;v-L0))A&n8)S;MXEydOZNnT2;fOmyD6hAt1xuZrzHh{eP#cMzCsmUnKWsXpqJF&V6sf?Wlts-n zv=z{M;kPJcs~pL{J?|&mAAbX*tQ*CsTPb&U2k(l$Q3Y8xoD9wO)dsi9~7#E;*Y?=-3RFr0ET4;R#m^e=pB~?rp4T`DUNNXWHFeQRx+;MLT8Pg%#p#WqGt%i z2?L(CzB(HQ5YH~*vFsEdCd+N5vw}whkqjj2lGZ~;I=@_T$+@YCU{Hi=kN>GC)vjvB za;%ooJLajLsAk<9kH;s+ER%b1-KjsppFFvi1asn782IxgY~EeT3DfEtJ$G}#ee*Zn zt5b4{`eHRRyp+k#PPx#@bi;C8+iMg&#ApIE&+N1}AX)%=Z*{Sn2KD67>}(Y-W3BEA zt}^IjTmRd!SBORtDZ@0;XcuY-2-t+Vv9OAnCJo~%nyCt{vmu3`aG_Zl?k;-UD^u2rVdMCtG0Z~ zgeBP!g2$Wg4CCY38sl3J&K%I^IDJ&lX_l)VdyOfqZTRtri!9p5BS~uILk&C67+i}P zs(OFF-q9Uml26yvS9!Id_*keew}uY4)+uz%Ou1&DQzz7T-Tm7m#z6Semy1!2-UldN z2{4FP!pnlB$8c}912p$8teYGqM`A^?-%%5HsDc6e{6N)HUsGkcH)5xHdAKdz@-j!4Ao7((pFY=DKC-bq%|t z9@NcGoZ1&m3-KiXwf+_xqCZg@%Zw`M39v@TL`^|bISMxjq#Ec*YzIc;lP}3Y5ODUE z`;qjZYyef;P#GWu5}rPYT!6vhF9gt(!7W{(;Oo6_4Zt0er0O?^K=qf{g#eoz?f*zA zEdRpND4GGO;KatQ`{fUVlvN~cOaCL3^_QSx^S^k#oeEH(3y1%&(EpI>+VH0U z(~zWU+2d&jmj)kjnKm@<|09_FUu*}_JOB%l&seaiB)u9xln-UtucY1t5o~vG&=o)0d_G$F7+X@ zr3g_{6h9WsNw9)?Abq0ye=G?f()FW$Yhr~b)#sb7;R6bAy77P=nP(PdB?Ax9HZIs~9=wjIHehI`a!>K_h<#X%@q zpWtGGjeQP5U%gW5G$2@*($F<93HjJzCJ70o-`L=RMwIFyph}x+2TO-K1ctwvuDEQ7nVc zm(h2yiCp2`kmj7`HUU5PW@eQ|F&<50F~)n_|6cFd(z3^ErYx)=Q|hf$HuO(@ueOpk z?0~C6MI-$IM~jaltf%;$$%Yb$0P$BY*O^+P4n}V!hqRFY-mtVq^T!N^vJKtZ5$wYF zSj7xR5pMU5hmjcRlb2jZaSFdi!M#Mo*OOB8mtSo{4p~t-Qg%W_%?w7&&)x23I2*RC zhmIf|t$x49w0$?zKbxbi*bZ3CtCE*bh^}1I?2E?l52WSm zzpstTD{s?fYHF@5&%E3PO=L=-zM8#kBk)H&9t2AR5wr$3 zmw;aTT5K=e8#QW&BFI`Ckqh0C%>)t6zYeol`8~0o%{}Rw`%R?YZZ(|+;%!#e15EKN z8~ut!*C-O_BuuUFL{AY#PerQ+tymWwk|j4|B;|QfUS96646+bCPl@zMJkKnD_j2xH z@8)}GfBSROcjdoFkQD0jiMI`&M*Kwbm~9{aSFnA1qt*%gZ}( zQi#AYfAs>96Z|M!g870sse)ftx*?dttn!%gDJe;jYMm@e*@KhG`UEKwhHe?X!yie? zD!WE`y$4Vfj*y^^jEwq2Nj7y

2<-oqBZ1v|IrAel>czUB5ttkG3*^O8GY@BPfX& z>OOA;2q@-B+yB4w2h4vP4PP3$JK1P$X_tU?7!qstgU)b{Pw;{z!QTHn_`k87|0c20 zXFv-Se3iM(U-zd=j=->2(RBMu0A))oXcH8?QWM#hKHnRhxQL2cy5BQ^vdsk=^cs|; zpF@KGoWURPt?RP-|GzaS6LUIKJp@`?Ivgk=-WM(A-_ZmGXg@qC6Z^lT0v1poLQp2o ze@BeUpizWhf+1haFw$ooK@mWixY84Lz%U?~xH!H(1ssRLsenIST+L_Z*zwohFTbJ5 z*{-+7^0X#L+O4KvH2IdQ(B%@W@nTbYv(4es;%pXO~7o1T6phB{%zPHFa}5HUDqE z6pbKp-!LdNV^cE#R1_V(rDUHRL>2Yc8U&_*V0L^Avf$X-*2D@lp@kK&#syXZFn^Q> z$^L`~p?GvJOZyzym;H1Aakm$wOa}&Ja;>g|?hmPk4goRt)d0q%@Rg(>WIQSX)%ybT z7rHqepErMMEoJ=Q=di&Hv%*=7EUrq1ri@guHeV^4cy`Uc!j{=1tpVd_r-MO(xpD@n~%%6y(#I+?gCB#B^0%q3^ zO&Ph7-4&&|T!O;~MB=eIvY!$+4oyXg2SDrNUZCP%9TkwWPo6XuXQ#${kYmQV&nijm z&xd!7xwl^Zfq_TD-s21{P7qhRsT>drMEUO^ShQ6$pFuXer~BZ|E-xGxpZm94H@%ZE z(Dxu&eKp@#v#-H*N?XFzpQA87YC=k0ca2nE?Ft`K^$K~eTJ zqq}bGgvCrFY7Taki?cCQ(nQ&IL@vwieF7RTM7p(3B zxQV)&79#;T6AQc3%y2G`#7W3nXk-r+G2T$5{M9J9#k8ESm&d2>d%g#aZufXoBLn

alS}-oP!j%MQxNF~! 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 z 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�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 IQ3B?F0h3;b3;+NC From 4f6f1a21abc14820ea1a752856d6f20bf0a0694b Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sat, 13 Nov 2021 14:59:08 -0600 Subject: [PATCH 052/505] Add conflict with CMake 3.19.0 (#1153) There is a bug in 3.19.0 that treats .S files like C-language files. Co-authored-by: Tim Haines --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f394dcb8e..994d3e35ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,10 @@ cmake_minimum_required (VERSION 3.4.0) + +# There is a bug in 3.19.0 that causes .S files to be treated like C files +if(CMAKE_VERSION VERSION_EQUAL "3.19.0") + message(FATAL_ERROR "Dyninst cannot use CMake version 3.19.0") +endif() + project (Dyninst) set (DYNINST_ROOT ${PROJECT_SOURCE_DIR}) From 71027cb36e9deb4291f316fb0a4c897ff2e321dd Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 17 Nov 2021 18:51:26 -0600 Subject: [PATCH 053/505] DwarfWalker: clean up interfaces for findDieName and findName (#1154) findDieName always returned 'true', so any checks for its return value were meaningless. It was also not clear that 'findName' would modify its argument. The new interface removes that surprise by making the name the return value. Co-authored-by: Tim Haines --- symtabAPI/src/Object-elf.C | 11 ++---- symtabAPI/src/dwarfWalker.C | 68 +++++++++++++++---------------------- symtabAPI/src/dwarfWalker.h | 4 +-- 3 files changed, 33 insertions(+), 50 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index e15e0a8715..020356f9fe 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -2243,10 +2243,7 @@ bool Object::dwarf_parse_aranges(Dwarf *dbg, std::set &/*dies_seen*/) auto off_die = dwarf_dieoffset(&cu_die); //if (dies_seen.find(off_die) != dies_seen.end()) continue; - std::string modname; - if (!DwarfWalker::findDieName(cu_die, modname)) { - modname = associated_symtab->file(); // default module - } + std::string modname = DwarfWalker::die_name(cu_die); Offset actual_start, actual_end; convertDebugOffset(start, actual_start); @@ -2301,10 +2298,8 @@ bool Object::fix_global_symbol_modules_static_dwarf() { for (size_t i = 0; i < dies.size(); i++) { Dwarf_Die cu_die = dies[i]; - std::string modname; - if (!DwarfWalker::findDieName(cu_die, modname)) { - modname = associated_symtab->file(); // default module - } + std::string modname = DwarfWalker::die_name(cu_die); + if(modname=="") { auto off_die = dwarf_dieoffset(&cu_die); diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 88426852c9..7fb678598a 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -232,8 +232,7 @@ bool DwarfWalker::parseModule(Dwarf_Die moduleDIE, Module *&fixUnknownMod) { return false; /* Extract the name of this module. */ - std::string moduleName; - if (!findDieName(moduleDIE, moduleName)) return false; + std::string moduleName = die_name(moduleDIE); // DIEs without name or named will be associated to // the default module (whose name is ELF filename) @@ -819,8 +818,7 @@ bool DwarfWalker::parseLexicalBlock() { bool DwarfWalker::parseCommonBlock() { dwarf_printf("(0x%lx) Parsing common block\n", id()); - std::string commonBlockName; - if (!findDieName(entry(), commonBlockName)) return false; + std::string commonBlockName = die_name(entry()); Symbol* commonBlockVar = findSymbolForCommonBlock(commonBlockName); if(!commonBlockVar) { @@ -878,9 +876,7 @@ bool DwarfWalker::parseVariable() { if (!handleSpecification(hasSpecification)) return false; - if (!findName(curName())) - return false; - + curName() = std::move(die_name()); removeFortranUnderscore(curName()); /* We'll start with the location, since that's most likely to @@ -1040,7 +1036,7 @@ bool DwarfWalker::parseFormalParam() { return false; } - if (!findName(curName())) return false; + curName() = std::move(die_name()); /* We can't do anything with anonymous parameters. */ if (!nameDefined()) { dwarf_printf("(0x%lx) No name associated with formal, returning\n", id()); @@ -1085,7 +1081,7 @@ bool DwarfWalker::parseBaseType() { if(!tc()) return false; dwarf_printf("(0x%lx) parseBaseType entry\n", id()); - if (!findName(curName())) return false; + curName() = std::move(die_name()); if (!nameDefined()) { dwarf_printf("(0x%lx) No name for type, returning early\n", id()); return true; @@ -1169,7 +1165,7 @@ bool DwarfWalker::parseTypedef() { boost::shared_ptr referencedType; if (!findType(referencedType, true)) return false; - if (!findName(curName())) return false; + curName() = std::move(die_name()); if (!nameDefined()) { if (!fixName(curName(), referencedType)) return false; } @@ -1201,7 +1197,7 @@ bool DwarfWalker::parseArray() { if (!findType(elementType, false)) return false; if (!elementType) return false; - if (!findName(curName())) return false; + curName() = std::move(die_name()); // curName may get overridden by the subrange parsing code. // TODO: make this part of the context stack. @@ -1262,7 +1258,7 @@ bool DwarfWalker::parseSubrange() { bool DwarfWalker::parseEnum() { if(!tc()) return false; dwarf_printf("(0x%lx) parseEnum entry\n", id()); - if (!findName(curName())) return false; + curName() = std::move(die_name()); //setEnum(tc()->addOrUpdateType( Type::make_shared( type_id(), "enum " + curName()))); setEnum(tc()->addOrUpdateType( Type::make_shared( type_id(), curName()))); return true; @@ -1301,7 +1297,7 @@ bool DwarfWalker::parseStructUnionClass() { return false; } - if (!findName(curName())) return false; + curName() = std::move(die_name()); dwarf_printf("(0x%lx) Struct/Union/Class name from dwarf: %s\n", id(), curName().c_str()); if (!nameDefined()) { @@ -1372,8 +1368,7 @@ bool DwarfWalker::parseStructUnionClass() { bool DwarfWalker::parseEnumEntry() { dwarf_printf("(0x%lx) parseEnumEntry entry\n", id()); - std::string name; - if (!findName(name)) return false; + std::string name = die_name(); long value = 0; bool valid; @@ -1391,7 +1386,7 @@ bool DwarfWalker::parseMember() { if (!findType(memberType, false)) return false; if (!memberType) return false; - if (!findName(curName())) return false; + curName() = std::move(die_name()); long value; bool hasValue; @@ -1447,7 +1442,7 @@ bool DwarfWalker::parseConstPackedVolatile() { boost::shared_ptr type = NULL; if (!findType(type, true)) return false; - if (!findName(curName())) return false; + curName() = std::move(die_name()); if (!nameDefined()) { dwarf_printf("(0x%lx) parseConstPackedVolatile fixName\n", id()); if (!fixName(curName(), type)) return false; @@ -1467,11 +1462,7 @@ bool DwarfWalker::parseTypeReferences() { return false; } - if (!findName(curName())) - { - dwarf_printf("(0x%lx) name not found\n", id()); - return false; - } + curName() = std::move(die_name()); Dwarf_Die e = entry(); boost::shared_ptr indirectType; @@ -1576,22 +1567,21 @@ bool DwarfWalker::handleSpecification(bool &hasSpec) { return true; } -bool DwarfWalker::findDieName(Dwarf_Die die, std::string &name) +std::string DwarfWalker::die_name(Dwarf_Die die) { - auto cname = dwarf_diename(&die); - if (cname == 0) { - name = std::string(); - return true; - } + auto name = dwarf_diename(&die); - name = cname; - return true; + // You cannot construct a std::string from a null pointer + if (name) { + return name; + } + return {}; } -bool DwarfWalker::findName(std::string &name) { - if (!findDieName(specEntry(), name)) return false; +std::string DwarfWalker::die_name() { + auto name = die_name(specEntry()); dwarf_printf("(0x%lx) Found name %s.\n", id(), name.c_str()); - return true; + return name; } @@ -1617,7 +1607,8 @@ bool DwarfWalker::findFuncName() { dwarf_printf("(0x%lx) DW_AT_linkage_name name not found\n", id()); setMangledName(false); - return findDieName(entry(), curName()); + curName() = std::move(die_name(entry())); + return true; } std::vector& DwarfParseActions::getFramePtrRefForInit() @@ -2265,10 +2256,7 @@ bool DwarfWalker::parseSubrangeAUX(Dwarf_Die entry, } /* end if we found an upper bound or count. */ /* Construct the range type. */ - if (!findName(curName())) { - dwarf_printf("cannot find subrange name %s\n", curName().c_str()); - return false; - } + curName() = std::move(die_name()); if (!nameDefined()) { curName() = "{anonymousRange}"; } @@ -2403,8 +2391,8 @@ bool DwarfWalker::decipherBound(Dwarf_Attribute boundAttribute, bool /*is_info*/ if(!ret_p) return false; /* Does it have a name? */ - if (findDieName(boundEntry, boundString) - && !boundString.empty()) + boundString = std::move(die_name(boundEntry)); + if (!boundString.empty()) return true; /* Does it describe a nameless constant? */ diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index 5dd6663c67..c8c74dbfad 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -344,9 +344,9 @@ class DwarfWalker : public DwarfParseActions { bool &hasLineNumber, std::string &filename); public: - static bool findDieName(Dwarf_Die die, std::string &); + static std::string die_name(Dwarf_Die die); private: - bool findName(std::string &); + std::string die_name(); void removeFortranUnderscore(std::string &); bool findSize(unsigned &size); bool findVisibility(visibility_t &visibility); From 29bcc7b203293627bf627a815f5caa6af4202c32 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sat, 20 Nov 2021 11:24:06 -0600 Subject: [PATCH 054/505] Add readable name for Symtab::typeRef (#1157) Arguably, this is completely arbitrary as it could have been spelled 'ref', 'reference', etc. Using the language symbol also allows users to reconstruct source-level syntax more directly. Co-authored-by: Tim Haines --- symtabAPI/src/dwarfWalker.C | 3 +++ 1 file changed, 3 insertions(+) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 7fb678598a..1cea4a47a7 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -1480,6 +1480,9 @@ bool DwarfWalker::parseTypeReferences() { offset(), indirectType->getSize(), (void*)tc(), mod()->fullName().c_str()); break; case DW_TAG_reference_type: + if(!nameDefined()){ + curName() = "&"; + } indirectType = tc()->addOrUpdateType(Type::make_shared( type_id(), typePointedTo, curName())); dwarf_printf("(0x%lx) Created type %p / %s for type_id %d, offset 0x%lx, size %u, in TC %p\n", id(), From 094c567a61cb637338aeeff136cdcff115448040 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 22 Nov 2021 13:29:53 -0600 Subject: [PATCH 055/505] Refactor dwarfWalker::findConst (#1160) This function always returns 'true' and few callsites checked the bool out variable. Using an optional here makes everything simpler. Logging has been substantially improved for better tracing. --- symtabAPI/src/dwarfWalker.C | 48 ++++++++++++++++--------------------- symtabAPI/src/dwarfWalker.h | 3 ++- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 1cea4a47a7..a0c5b14996 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -1370,11 +1370,10 @@ bool DwarfWalker::parseEnumEntry() { std::string name = die_name(); - long value = 0; - bool valid; - if (!findValue(value, valid)) return false; + auto value = findConstValue(); + if(!value) { return false; } - curEnum()->asEnumType().addConstant(name, value); + curEnum()->asEnumType().addConstant(name, *value); return true; } @@ -1388,10 +1387,7 @@ bool DwarfWalker::parseMember() { curName() = std::move(die_name()); - long value; - bool hasValue; - if (!findValue(value, hasValue)) return false; - if (hasValue) { + if (findConstValue()) { if(!nameDefined()) return false; dwarf_printf("(0x%lx) member is a named constant, forwarding to parseConstant\n", id()); return parseConstant(); @@ -1695,15 +1691,8 @@ bool DwarfWalker::isStaticStructMember(std::vector &locs, bool // if parsing a struct-member which is not a regular member (i.e. not with an offset) if (curEnclosure()->getDataClass() == dataStructure && locs.size() == 0) { - long value; - bool hasValue; - if (!findValue(value, hasValue)) return false; - - // and, if it is not a constant, then it must be a static field member - if (!hasValue) { - isStatic = true; - return true; - } + // and it is not a constant, then it must be a static field member + isStatic = !findConstValue(); } return true; @@ -2133,24 +2122,29 @@ bool DwarfWalker::findVisibility(visibility_t &visibility) { return true; } -bool DwarfWalker::findValue(long &value, bool &valid) { - Dwarf_Attribute valueAttr; +boost::optional DwarfWalker::findConstValue() { + dwarf_printf("(0x%lx) findConstValue entry\n", id()); + + Dwarf_Attribute valueAttr{}; Dwarf_Die e = entry(); - auto status = dwarf_attr(&e, DW_AT_const_value, & valueAttr); - if (status == 0) { - valid = false; - return true; + // This also applies to constexpr objects (i.e., DW_AT_const_expr) + if(!dwarf_attr(&e, DW_AT_const_value, & valueAttr)) { + dwarf_printf("No const value found\n"); + return {}; } Dwarf_Sword enumValue; + if(dwarf_formsdata(&valueAttr, &enumValue) != 0) { + dwarf_printf("ERROR: dwarf_formsdata error for entry %p\n", static_cast(&e)); + return {}; + } - DWARF_FAIL_RET(dwarf_formsdata(&valueAttr, &enumValue)); + dwarf_printf("Found value '%ld'\n", static_cast(enumValue)); - value = enumValue; - valid = true; + dwarf_printf("(0x%lx) end findConstValue\n", id()); - return true; + return enumValue; } bool DwarfWalker::fixBitFields(std::vector &locs, diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index c8c74dbfad..545fa9b0b3 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -18,6 +18,7 @@ #include "Object.h" #include #include +#include #include //Concurrent Hash Map @@ -350,7 +351,7 @@ class DwarfWalker : public DwarfParseActions { void removeFortranUnderscore(std::string &); bool findSize(unsigned &size); bool findVisibility(visibility_t &visibility); - bool findValue(long &value, bool &valid); + boost::optional findConstValue(); bool fixName(std::string &name, boost::shared_ptr type); bool fixBitFields(std::vector &locs, long &size); From 1912be31c72961de2f53f6baa094d8f67245322c Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 23 Nov 2021 13:09:53 -0600 Subject: [PATCH 056/505] Increase minimum elfutils version to 0.186 (#1161) This is needed to parse NVIDIA's extended line map information. HPCToolkit makes extensive use of this functionality. --- cmake/ElfUtils.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/ElfUtils.cmake b/cmake/ElfUtils.cmake index 975e361e04..de17e2b991 100644 --- a/cmake/ElfUtils.cmake +++ b/cmake/ElfUtils.cmake @@ -37,8 +37,8 @@ if(NOT UNIX) endif() # Minimum acceptable version of elfutils -# NB: We need >=0.178 because libdw isn't thread-safe before then -set(_min_version 0.178) +# NB: We need >=0.186 because of NVIDIA line map extensions +set(_min_version 0.186) set(ElfUtils_MIN_VERSION ${_min_version} CACHE STRING "Minimum acceptable elfutils version") From e6b188351481b354d6ea4c8b4aaaeb2bfababb32 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 23 Nov 2021 13:44:39 -0600 Subject: [PATCH 057/505] Remove NVIDIA external line map configure check (#1162) Now that we require elfutils >= 0.186, this is no longer needed. --- cmake/ElfUtils.cmake | 10 ---------- cmake/options.cmake | 1 - symtabAPI/CMakeLists.txt | 2 -- symtabAPI/src/Object-elf.C | 5 ----- 4 files changed, 18 deletions(-) diff --git a/cmake/ElfUtils.cmake b/cmake/ElfUtils.cmake index de17e2b991..7eeb3f1b84 100644 --- a/cmake/ElfUtils.cmake +++ b/cmake/ElfUtils.cmake @@ -166,13 +166,3 @@ include_directories(${ElfUtils_INCLUDE_DIRS}) message(STATUS "ElfUtils includes: ${ElfUtils_INCLUDE_DIRS}") message(STATUS "ElfUtils library dirs: ${ElfUtils_LIBRARY_DIRS}") message(STATUS "ElfUtils libraries: ${ElfUtils_LIBRARIES}") - -include(CheckSymbolExists) -if(ENABLE_NVIDIA_EXT_LINE_MAP) - set(CMAKE_REQUIRED_INCLUDES ${ElfUtils_INCLUDE_DIRS}) - set(CMAKE_REQUIRED_LIBRARIES ${ElfUtils_LIBRARIES}) - check_symbol_exists(dwarf_linecontext elfutils/libdw.h _has_exmap) - if(NOT _has_exmap) - message(FATAL_ERROR "ElfUtils does not support NVIDIA line maps") - endif() -endif() diff --git a/cmake/options.cmake b/cmake/options.cmake index 67e9636a95..1f46d90df2 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -16,7 +16,6 @@ option(BUILD_DOCS "Build manuals from LaTeX sources" ON) option (ENABLE_LTO "Enable Link-Time Optimization" OFF) option(ENABLE_DEBUGINFOD "Enable debuginfod support" OFF) -option(ENABLE_NVIDIA_EXT_LINE_MAP "Enable support for NVIDIA extended line map" OFF) # Some global on/off switches if (LIGHTWEIGHT_SYMTAB) diff --git a/symtabAPI/CMakeLists.txt b/symtabAPI/CMakeLists.txt index 1a15d9ff56..4ca6896f83 100644 --- a/symtabAPI/CMakeLists.txt +++ b/symtabAPI/CMakeLists.txt @@ -102,8 +102,6 @@ endif() dyninst_library(symtabAPI ${DEPS}) -target_compile_definitions(symtabAPI PRIVATE $<$:ENABLE_NVIDIA_EXT_LINE_MAP>) - if(TARGET ElfUtils) add_dependencies(symtabAPI ElfUtils) endif() diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 020356f9fe..9c14f9a29a 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3789,9 +3789,6 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) cout << "dwarf_linebeginstatement failed" << endl; continue; } -// ENABLE_NVIDIA_EXT_LINE_MAP is defined if the Dyninst -// user wants to have nvidia ex line map support -#if defined (ENABLE_NVIDIA_EXT_LINE_MAP) // Only attempt to parse inlining context and inline function name // when there is a .debug_str section. @@ -3800,8 +3797,6 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) current_statement.funcname = dwarf_linefunctionname(dbg, line); } -#endif // ENABLE_NVIDIA_EXT_LINE_MAP - if (!isZeroAddress && saved_statement.uninitialized()) { saved_statement = current_statement; } else if (!isZeroAddress) { From 91ede1ff4309c3ebb5518d0a8d43befd3eb5ceae Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 23 Nov 2021 15:46:24 -0600 Subject: [PATCH 058/505] Documentation updates for 12.0.1 release --- CHANGELOG.md | 15 +++++++++++++++ cmake/shared.cmake | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84423abe4d..7857fb5a3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Change Log +## [12.0.1](https://github.com/dyninst/dyninst/tree/v12.0.0) (2021-11-23) +[Full Changelog](https://github.com/dyninst/dyninst/compare/v12.0.0...v12.0.1) + +**Build Changes** + +- Remove NVIDIA external line map configure check ([1162](https://github.com/dyninst/dyninst/issues/1162)) +- Increase minimum elfutils version to 0.186 ([1161](https://github.com/dyninst/dyninst/issues/1161)) +- Add conflict with CMake 3.19.0 ([1153](https://github.com/dyninst/dyninst/issues/1153)) + +**Enhancements** + +- Refactor dwarfWalker::findConst ([1160](https://github.com/dyninst/dyninst/issues/1160)) +- Add readable name for Symtab::typeRef ([1157](https://github.com/dyninst/dyninst/issues/1157)) +- DwarfWalker: clean up interfaces for findDieName and findName ([1154](https://github.com/dyninst/dyninst/issues/1154)) + ## [12.0.0](https://github.com/dyninst/dyninst/tree/v12.0.0) (2021-11-11) [Full Changelog](https://github.com/dyninst/dyninst/compare/v11.0.1...v12.0.0) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 38b21b3ea0..0c3f6afcd1 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,6 +1,6 @@ set (DYNINST_MAJOR_VERSION 12) set (DYNINST_MINOR_VERSION 0) -set (DYNINST_PATCH_VERSION 0) +set (DYNINST_PATCH_VERSION 1) set (SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") set (LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") From 94252b8ce87293da4b10d0cee550e7ad0507a3ae Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sun, 28 Nov 2021 17:44:35 -0600 Subject: [PATCH 059/505] Clean up memoryTracker usage in binaryEdit (#877) * Store memoryTracker_ as a value instead of pointer This provides cleaner semantics for its usage and ensures that the it's default-constructed correctly. * Code cleanup * Give codeRange a virtual destructor This will ensure that memoryTracker objects removed from a codeTree will correctly get destroyed. * Simplify inferiorFree * Free any remaining memoryTrackers on destruction --- dyninstAPI/src/binaryEdit.C | 60 +++++++++++++++---------------------- dyninstAPI/src/binaryEdit.h | 2 +- dyninstAPI/src/codeRange.h | 2 ++ 3 files changed, 27 insertions(+), 37 deletions(-) diff --git a/dyninstAPI/src/binaryEdit.C b/dyninstAPI/src/binaryEdit.C index 7973419e50..55f8b28a4f 100644 --- a/dyninstAPI/src/binaryEdit.C +++ b/dyninstAPI/src/binaryEdit.C @@ -60,7 +60,7 @@ bool BinaryEdit::readTextSpace(const void *inOther, // Look up this address in the code range tree of memory codeRange *range = NULL; - if (!memoryTracker_->find(addr, range)) + if (!memoryTracker_.find(addr, range)) return false; assert(addr >= range->get_address()); @@ -86,7 +86,7 @@ bool BinaryEdit::writeTextSpace(void *inOther, while (to_do) { // Look up this address in the code range tree of memory codeRange *range = NULL; - if (!memoryTracker_->find(addr, range)) { + if (!memoryTracker_.find(addr, range)) { return false; } @@ -197,10 +197,7 @@ Address BinaryEdit::inferiorMalloc(unsigned size, if (ret) { memoryTracker *newTracker = new memoryTracker(ret, size); newTracker->alloced = true; - if (!memoryTracker_) - memoryTracker_ = new codeRangeTree(); - memoryTracker_->insert(newTracker); - + memoryTracker_.insert(newTracker); break; } } @@ -212,17 +209,11 @@ void BinaryEdit::inferiorFree(Address item) { inferiorFreeInternal(item); - codeRange *obj; - if(!memoryTracker_->find(item, obj)) - { - // Warn the user? - return; - } - - - delete obj; - - memoryTracker_->remove(item); + codeRange *obj{}; + if(memoryTracker_.find(item, obj)) delete obj; + + // Remove it from the tree + memoryTracker_.remove(item); } bool BinaryEdit::inferiorRealloc(Address item, unsigned newsize) @@ -234,17 +225,17 @@ bool BinaryEdit::inferiorRealloc(Address item, unsigned newsize) maxAllocedAddr(); codeRange *obj; - result = memoryTracker_->find(item, obj); + result = memoryTracker_.find(item, obj); assert(result); - memoryTracker_->remove(item); + memoryTracker_.remove(item); memoryTracker *mem_track = dynamic_cast(obj); assert(mem_track); mem_track->realloc(newsize); - memoryTracker_->insert(obj); + memoryTracker_.insert(obj); return true; } @@ -276,7 +267,7 @@ BinaryEdit::BinaryEdit() : highWaterMark_(0), lowWaterMark_(0), isDirty_(false), - memoryTracker_(NULL), + memoryTracker_{}, mobj(NULL), multithread_capable_(false), writing_(false) @@ -294,7 +285,12 @@ BinaryEdit::~BinaryEdit() for(auto *rel : dependentRelocations) { delete rel; } - delete memoryTracker_; + + std::vector x; + memoryTracker_.elements(x); + for(auto const *c : x) { + delete c; + } } BinaryEdit *BinaryEdit::openFile(const std::string &file, @@ -528,7 +524,7 @@ bool BinaryEdit::writeFile(const std::string &newFileName) // Now, we need to copy in the memory of the new segments for (unsigned i = 0; i < oldSegs.size(); i++) { codeRange *segRange = NULL; - if (!memoryTracker_->find(oldSegs[i]->getMemOffset(), segRange)) { + if (!memoryTracker_.find(oldSegs[i]->getMemOffset(), segRange)) { #if 0 // Looks like BSS if (newSegs[i].name == ".bss") @@ -556,7 +552,7 @@ bool BinaryEdit::writeFile(const std::string &newFileName) void *newSectionPtr = calloc(highWaterMark_ - lowWaterMark_, 1); std::vector writes; - memoryTracker_->elements(writes); + memoryTracker_.elements(writes); for (unsigned i = 0; i < writes.size(); i++) { assert(newSectionPtr); @@ -747,24 +743,16 @@ bool BinaryEdit::createMemoryBackingStore(mapped_object *obj) { symObj->getAllRegions(regs); for (unsigned i = 0; i < regs.size(); i++) { - memoryTracker *newTracker = NULL; if (regs[i]->getRegionType() == Region::RT_BSS || (regs[i]->getMemSize() == 0)) { continue; } - else { - newTracker = new memoryTracker(regs[i]->getMemOffset(), - regs[i]->getMemSize(), - regs[i]->getPtrToRawData()); - - } + auto *newTracker = new memoryTracker(regs[i]->getMemOffset(), + regs[i]->getMemSize(), + regs[i]->getPtrToRawData()); newTracker->alloced = false; - if (!memoryTracker_) - memoryTracker_ = new codeRangeTree(); - memoryTracker_->insert(newTracker); + memoryTracker_.insert(newTracker); } - - return true; } diff --git a/dyninstAPI/src/binaryEdit.h b/dyninstAPI/src/binaryEdit.h index 28d7e2d7a5..c9d3d9e2dc 100644 --- a/dyninstAPI/src/binaryEdit.h +++ b/dyninstAPI/src/binaryEdit.h @@ -211,7 +211,7 @@ class BinaryEdit : public AddressSpace { /* Function specific to rewritting static binaries */ bool doStaticBinarySpecialCases(); - codeRangeTree* memoryTracker_; + codeRangeTree memoryTracker_; mapped_object * addSharedObject(const std::string *fullPath); diff --git a/dyninstAPI/src/codeRange.h b/dyninstAPI/src/codeRange.h index 47a7ead81b..31d60105d8 100644 --- a/dyninstAPI/src/codeRange.h +++ b/dyninstAPI/src/codeRange.h @@ -102,6 +102,8 @@ class codeRange : public patchTarget { void print_range(Address addr = 0); friend ostream &operator<<(ostream &s, const codeRange &c); + + virtual ~codeRange() = default; }; class codeRangeTree { From f6d12af97ed8a3a5167d7950564b0ba5ec92d5c1 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Fri, 7 Jan 2022 12:48:48 -0600 Subject: [PATCH 060/505] Remove erroneous use of realloc in symtabAPI/Type-mem.h (#1170) --- symtabAPI/src/Type-mem.h | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/symtabAPI/src/Type-mem.h b/symtabAPI/src/Type-mem.h index 356664982c..325c9721b9 100644 --- a/symtabAPI/src/Type-mem.h +++ b/symtabAPI/src/Type-mem.h @@ -41,16 +41,12 @@ using namespace SymtabAPI; template T *upgradePlaceholder(Type *placeholder, T *new_type) { - assert(sizeof(T) <= Type::max_size); - - void* mem = realloc((void *) placeholder, sizeof(T)); - assert(mem == (void *) placeholder); - memset(mem, 0, sizeof(T)); - - T *ret = new(mem) T(); - assert(mem == (void *) ret); - *ret = *new_type; - return ret; + assert(sizeof(T) <= Type::max_size); + memset(static_cast(placeholder), 0, Type::max_size); + T* ret = new(placeholder) T{}; + assert(static_cast(placeholder) == static_cast(ret)); + *ret = *new_type; + return ret; } template From 1cfbe939a7c26041f7718233b6a47509c96a8ef8 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Tue, 11 Jan 2022 22:29:09 -0700 Subject: [PATCH 061/505] Adding first stage of automated docker build (#1180) * adding first stage of automated docker build this first workflow include a base container with ubuntu 20.04 and a set of dependencies chosen by Tim. The base container will be set (after this PR) as a scheduled, nightly build, and we do this so testing each day can simply pull it, re-add the new source code and testsuite, and quickly compile again (on the order of 3.5 minutes vs. 1 hour+ for the entire container build. This update will happen in two stages - this first to deploy the base container, and a follow up to add automated testing using it. Currently this does not upload test results to Tims server, and this is only because I want to talk to him about it first and then test the workflow before PR here. Signed-off-by: vsoch Co-authored-by: vsoch --- .github/workflows/base-containers.yaml | 80 +++++++++++ CHANGELOG.md | 1 + README.md | 8 ++ docker/Dockerfile | 125 +++++++++++++++++ docker/README.md | 179 +++++++++++++++++++++++++ docker/build.sh | 38 ++++++ 6 files changed, 431 insertions(+) create mode 100644 .github/workflows/base-containers.yaml create mode 100644 docker/Dockerfile create mode 100644 docker/README.md create mode 100644 docker/build.sh diff --git a/.github/workflows/base-containers.yaml b/.github/workflows/base-containers.yaml new file mode 100644 index 0000000000..efbcfd2363 --- /dev/null +++ b/.github/workflows/base-containers.yaml @@ -0,0 +1,80 @@ +name: Build Deploy Containers + +on: + + # Always have a base image ready to go - this is a nightly build + schedule: + - cron: 0 3 * * * + + # On pull request we test updates to images + pull_request: [] + + # On push to main we build and deploy images + push: + branches: + - main + +jobs: + build: + permissions: + packages: write + strategy: + fail-fast: false + matrix: + + # Note: this can be extended in two ways + # 1. Add more configurations to the matrix, either like this or flattening + # 2. Generate matrix programatically and pipe in (recommended) + # perl is 5.30.0 provided by 20.04 container base + ubuntu: ["20.04"] + boost: ["1.73.0"] + elfutils: ["0.186"] + libiberty: ["2.33.1"] + inteltbb: ["2020.2"] + + runs-on: ubuntu-latest + name: Build + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Make Space For Build + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + + - name: Set Organization Name + if: (github.event_name != 'schedule') + env: + org: ${{ github.event.repository.owner.login }} + run: echo "org=${org}" >> ${GITHUB_ENV} + + - name: Set Organization Name + if: (github.event_name == 'schedule') + run: echo "org=dyninst" >> ${GITHUB_ENV} + + - name: Pull Layers for "Cache" + run: docker pull ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest || echo "No cache available" + + - name: Build Dyninst Base Container + run: | + cd docker/ + docker build --build-arg ubuntu_version=${{ matrix.ubuntu }} \ + --build-arg BOOST_VERSION=${{ matrix.boost }} \ + --build-arg ELFUTILS_VERSION=${{ matrix.elfutils }} \ + --build-arg LIBIBERTY_VERSION=${{ matrix.libiberty }} \ + --build-arg INTELTBB_VERSION=${{ matrix.inteltbb }} \ + -f Dockerfile \ + -t ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest ../ + + - name: GHCR Login + if: (github.event_name != 'pull_request') + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Deploy + if: (github.event_name != 'pull_request') + run: docker push ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest diff --git a/CHANGELOG.md b/CHANGELOG.md index 7857fb5a3e..5003fd307b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Refactor dwarfWalker::findConst ([1160](https://github.com/dyninst/dyninst/issues/1160)) - Add readable name for Symtab::typeRef ([1157](https://github.com/dyninst/dyninst/issues/1157)) - DwarfWalker: clean up interfaces for findDieName and findName ([1154](https://github.com/dyninst/dyninst/issues/1154)) +- Added automated docker build for development and testing ## [12.0.0](https://github.com/dyninst/dyninst/tree/v12.0.0) (2021-11-11) [Full Changelog](https://github.com/dyninst/dyninst/compare/v11.0.1...v12.0.0) diff --git a/README.md b/README.md index e33974941b..dc8f82095f 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,14 @@ ## Build DyninstAPI and its subcomponents +### Docker Containers + +Containers are provided that can be used for Dyninst development (e.g., make changes to Dyninst and quickly rebuild it) +or for development of your own tools (e.g., have a container ready to go with Dyninst). Links will be added +here when the containers are pushed to the Dyninst associated package registries. Instructions for usage +and building locally are provided in the [docker](docker) directory. + + ### Install with Spack ```spack install dyninst``` diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000000..4e26864a15 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,125 @@ +ARG ubuntu_version=20.04 +FROM ubuntu:${ubuntu_version} + +# Build the Dockerfile in this directory, context one level up +# docker build -t dyninst -f Dockerfile ../ + +LABEL maintainer="@hainest,@vsoch" + +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=America/Los_Angeles + +# We can use build args to populate the specific versions of dependencies (with defaults here) +ARG BOOST_VERSION=1.73.0 +ARG ELFUTILS_VERSION=0.186 +ARG LIBIBERTY_VERSION=2.33.1 +ARG INTELTBB_VERSION=2020.2 +ARG PERL_VERSION=5.32.1 + +# Sort of separate from dyninst (but used to build/test) +ARG CMAKE_VERSION=3.21.2 +ENV CMAKE_VERSION=${CMAKE_VERSION} + +# Set the branch name for spack to use (should be master even for PR) +ARG DYNINST_BRANCH=master +ENV DYNINST_BRANCH=${DYNINST_BRANCH} + +# Note that perl 5.30.0 is provided by ubuntu + +# Args need to be passed into envars to be used in RUN +ENV BOOST_VERSION=${BOOST_VERSION} +ENV ELFUTILS_VERSION=${ELFUTILS_VERSION} +ENV LIBIBERTY_VERSION=${LIBIBERTY_VERSION} +ENV INTELTBB_VERSION=${INTELTBB_VERSION} +ENV PERL_VERSION=${PERL_VERSION} + +RUN apt-get -qq update && \ + apt-get -qq install -fy tzdata && \ + apt-get -qq install -y --no-install-recommends \ + build-essential \ + bzip2 \ + ca-certificates \ + curl \ + dh-autoreconf \ + git \ + gnupg2 \ + lcov \ + libssl-dev \ + ninja-build \ + pkg-config \ + python-dev \ + python3-pip \ + sudo \ + valgrind \ + vim \ + wget \ + xsltproc + +# Install Clingo for Spack +RUN python3 -m pip install --upgrade pip && \ + python3 -m pip install clingo && \ + dpkg-reconfigure tzdata + +# Update gcc to 11.1.1 (otherwise we'd have 9.3.0) +RUN apt-get install -y software-properties-common && \ + add-apt-repository 'deb http://mirrors.kernel.org/ubuntu hirsute main universe' && \ + apt-get update && \ + apt-get install -y gcc-11 g++-11 && \ + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9 && \ + update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11; + +# Install spack +WORKDIR /opt +RUN git clone --depth 1 https://github.com/spack/spack +ENV PATH=/opt/spack/bin:$PATH + +# Use the autamus build cache for faster install +# Note that autamus currently uses 18.04 +RUN python3 -m pip install botocore boto3 && \ + spack mirror add autamus s3://autamus-cache && \ + curl http://s3.amazonaws.com/autamus-cache/build_cache/_pgp/FFEB24B0A9D81F6D5597F9900B59588C86C41BE7.pub > key.pub && \ + spack gpg trust key.pub + +# Find packages already installed on system, e.g. autoconf +RUN spack external find && \ + spack config add 'packages:all:target:[x86_64]' && \ + # Install a new CMake (Tim originally wanted 3.17.1 but spack doesn't have it) + spack install cmake@${CMAKE_VERSION} perl + +# Add cmake to a view +RUN spack view --dependencies no symlink --ignore-conflicts /opt/view cmake@${CMAKE_VERSION} perl +ENV PATH=/opt/view/bin:$PATH + +RUN spack external find cmake && \ + spack config add 'packages:cmake:buildable:False' + +# Add Dyninst source code here (e.g., from PR or master) +WORKDIR /code +COPY . /code + +# Add test code to base container so we can build tests here +RUN git clone https://github.com/dyninst/testsuite /opt/testsuite + +# Install Dyninst to its own view +WORKDIR /opt/dyninst-env +RUN . /opt/spack/share/spack/setup-env.sh && \ + spack env create -d . && \ + echo " concretization: together" >> spack.yaml && \ + spack env activate . && \ + + # This adds metadata for dyninst to spack.yaml + spack develop --path /code dyninst@${DYNINST_BRANCH} && \ + + # ...but we need spack add to add to the install list! + spack add dyninst@${DYNINST_BRANCH} && \ + + # Add our hard coded versions here. + spack add boost@${BOOST_VERSION} && \ + spack add elfutils@${ELFUTILS_VERSION} && \ + spack add libiberty@${LIBIBERTY_VERSION} && \ + spack add intel-tbb@${INTELTBB_VERSION} && \ + spack install --reuse + +# Build tests (but don't run) +COPY ./docker/build.sh build.sh +RUN /bin/bash build.sh diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000000..e1c06734c6 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,179 @@ +# Dyninst Containers + +This is a testing set of Dockerfile for building a Dyninst base container. + +## Strategy + +For development, we want to be able to: + + 1. Pull a container with dyninst ready to go (for development or dyninst or another library) + 2. Quickly update with our own source code without needing to build everything. + +And for testing, we want to be able to: + + 1. Have a set of base containers that make dependency preparation minimal + 2. Use those base containers to quickly test a PR's dyninst and report results + +To do this we will have two workflows: + +### Base Containers + +The [base-containers.yaml](../.github/workflows/base-containers.yaml) workflow will build updated base +containers nightly or at an appropriate frequency. Right now we are providing one container build with a reasonable set of dependencies +and dyninst, and this is done by way of installing via spack, and setting versions +in an environment via build args. The current workflow, although there is just one container, +done by using a matrix so in the future when additional build configurations are added, +we can just extend the matrix. When this time comes, we can have a simple script (e.g., Python) +that generates this same matrix, and then pipes it into the GitHub workflow to still use as +build args in the Dockerfile. It's setup right now to still use this build arg -> environment -> matrix +strategy so the transition is easier. + +### Test Container + +This will be added via a second PR here! This second Dockerfile starts with a base container (ready to go with +dependencies) and then adds Dyninst to it, updates with the changes, and then run tests. It should +be fairly speedy given that the base containers are pre-built. + +**to be added** + +## Usage + +While most of this is done via recipes in CI, here is how to interact with the repository locally. + +### Build + +A [Dockerfile](Dockerfile) is provided that makes it easy to bring up a development environment. + +```bash +$ docker build -t dyninst -f Dockerfile ../ +``` + +### Develop + +You can then shell inside to interact with dyninst - there will be a spack environment +directory right in the root where you shell in: + +```bash +$ docker run -it dyninst bash +``` +```bash +# ls +spack.lock spack.yaml +``` + +This lock and spack yaml defines a spack envirironment, which is generated during the container build. If we inspect closer, we would see: + +```yaml +# This is a Spack Environment file. +# +# It describes a set of packages to be installed, along with +# configuration settings. +spack: + # add package specs to the `specs` list + specs: [boost@1.73.0, elfutils@0.186, libiberty@2.33.1, intel-tbb@2020.2, perl@5.32.1] + view: true + concretization: together + develop: + dyninst: + path: /code + spec: dyninst@master +``` + +Which includes a set of depdencies and versions we want to build. If you are just running a container as a developer, you are ready to go, +because you can find all the dyninst libraries in the spack enviroment: + +```bash +.spack-env/view/lib/libdynC_API.so +.spack-env/view/lib/libdynC_API.so.11.0 +.spack-env/view/lib/libdynC_API.so.11.0.1 +.spack-env/view/lib/libdynDwarf.so +.spack-env/view/lib/libdynDwarf.so.11.0 +.spack-env/view/lib/libdynDwarf.so.11.0.1 +.spack-env/view/lib/libdynElf.so +.spack-env/view/lib/libdynElf.so.11.0 +.spack-env/view/lib/libdynElf.so.11.0.1 +.spack-env/view/lib/libdyninstAPI.so +.spack-env/view/lib/libdyninstAPI.so.11.0 +.spack-env/view/lib/libdyninstAPI.so.11.0.1 +.spack-env/view/lib/libdyninstAPI_RT.a +.spack-env/view/lib/libdyninstAPI_RT.so +.spack-env/view/lib/libdyninstAPI_RT.so.11.0 +.spack-env/view/lib/libdyninstAPI_RT.so.11.0.1 +``` +Which you can then activate + +```bash +$ . /opt/spack/share/spack/setup-env.sh +$ spack env activate . +``` + +And here is an example of what activation does to the `LD_LIBRARY_PATH`: + +```bash +# env | grep LD_LIBRARY_PATH +LD_LIBRARY_PATH=/opt/dyninst-env/.spack-env/view/lib64:/opt/dyninst-env/.spack-env/view/lib:/opt/view/lib:/opt/view/lib64 +``` +You could then make any changes to the source code at `/code` (even if you've bound from your local machine to open with your editor of choice) and then run spack install again to rebuild (without needing to rebuild dependencies!) + +```bash +$ spack install --reuse +``` + +Note that we've added "reuse" to tell spack to be as flexible as it can to reuse what it has. +And that's it! For a more interactive development environment, you can bind the present working directory with the +Dyninst source code bound to `/code` instead: + +```bash +$ docker run -it -v $PWD:/code dyninst +``` + +If you do the same steps as above, you'll be in the activated environment: + +```bash +$ . /opt/spack/share/spack/setup-env.sh +$ spack env activate . +``` + +And again navigate to the bound source code - this time the files are on your local machine, so you can edit +them locally and build in the container! + +```bash +# This is bound to your host - edit files there +$ cd /code +``` + +And then again do: + +```bash +$ spack install --reuse +``` + +Finally, if you just want a container for development with Dyninst ready to go, you +can use [ghcr.io/autamus/dyninst](https://github.com/orgs/autamus/packages/container/package/dyninst) +(view the page there for tags available). New tags are automatically detected when there is +a release to the repository here, and the container built and deployed. You can find the libraries +under the root `/opt/view` (and then lib, bin, share, etc.) + +```bash +# ls /opt/view/lib/libd* +libdw-0.185.so libdynC_API.so libdynDwarf.so.11.0 libdynElf.so.11.0.1 libdyninstAPI_RT.a +libdw.a libdynC_API.so.11.0 libdynDwarf.so.11.0.1 libdyninstAPI.so libdyninstAPI_RT.so +libdw.so libdynC_API.so.11.0.1 libdynElf.so libdyninstAPI.so.11.0 libdyninstAPI_RT.so.11.0 +libdw.so.1 libdynDwarf.so libdynElf.so.11.0 libdyninstAPI.so.11.0.1 libdyninstAPI_RT.so.11.0.1 +root@89e4fbb001b5:/# ls /opt/view/lib/libsym* +libsymLite.so libsymLite.so.11.0 libsymLite.so.11.0.1 libsymtabAPI.so libsymtabAPI.so.11.0 libsymtabAPI.so.11.0.1 +``` + +## Test + +**Note will be added in followup PR** + +To build the test container, you'll want to use [Dockerfile.test](Dockerfile.test). If you want to use +the base dyninst container from GitHub packages, leave out build args (it will default to this). Otherwise, if you want to use a container you just built, specify that as the build arg `dyninst_base`: + +```bash +$ docker build -f Dockerfile.test --build-arg dyninst_base=dyninst -t dyninst-test ../ +``` + +The tests are added and run during build, so if they fail inside the container, the container build will fail +(and trigger any CI building it to fail). diff --git a/docker/build.sh b/docker/build.sh new file mode 100644 index 0000000000..4d86095e55 --- /dev/null +++ b/docker/build.sh @@ -0,0 +1,38 @@ +#!/bin/bash +set -euo pipefail + +# This script builds dyninst and the test suite (but does not run tests) + +printf "⭐️ Setting up spack environment for Dyninst\n" +. /opt/spack/share/spack/setup-env.sh +spack env activate . +mkdir -p build/dyninst + +# 1. Build Dyninst +printf "⭐️ Preparing to build Dyninst\n" +echo "::group::build dyninst" +cd build/dyninst +cmake -H/code -B. -DCMAKE_INSTALL_PREFIX=. > >(tee config.out) 2> >(tee config.err >&2) +make VERBOSE=1 -j2 > >(tee build.out) 2> >(tee build.err >&2) +make install VERBOSE=1 -j2 > >(tee build-install.out) 2> >(tee build-install.err >&2) +echo "::endgroup::" + +# 2. Update the test suite +printf "⭐️ Updating the testsuite\n" +echo "::group::update testsuite" +cd /opt/testsuite +git pull origin master +cd - +echo "::endgroup::" + +# 3. Build the test suite +printf "⭐️ Preparing to build the testsuite\n" +echo "::group::build tests" +cd /opt/dyninst-env/ +mkdir -p build/testsuite/tests +cd build/testsuite + +cmake -H/opt/testsuite -B. -DCMAKE_INSTALL_PREFIX=$PWD/tests -DDyninst_DIR=/opt/dyninst-env/build/dyninst/lib/cmake/Dyninst > >(tee config.out) 2> >(tee config.err >&2) +make VERBOSE=1 -j2 > >(tee build.out) 2> >(tee build.err >&2) +make install VERBOSE=1 -j2 > >(tee build-install.out) 2> >(tee build-install.err >&2) +echo "::endgroup::" From 67c2ec44cd28596c14a93e5eb8718692e43089b4 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Tue, 11 Jan 2022 22:39:13 -0700 Subject: [PATCH 062/505] fixing workflow trigger (#1182) we do not need the build on PR, but we do need on merge into MASTER not MAIN Signed-off-by: vsoch Co-authored-by: vsoch --- .github/workflows/base-containers.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/base-containers.yaml b/.github/workflows/base-containers.yaml index efbcfd2363..07c40716c3 100644 --- a/.github/workflows/base-containers.yaml +++ b/.github/workflows/base-containers.yaml @@ -5,14 +5,11 @@ on: # Always have a base image ready to go - this is a nightly build schedule: - cron: 0 3 * * * - - # On pull request we test updates to images - pull_request: [] # On push to main we build and deploy images push: branches: - - main + - master jobs: build: From 8ff2424c9f687dbf5f309a76087d0c9822c335f9 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Wed, 12 Jan 2022 12:36:55 -0700 Subject: [PATCH 063/505] adding dyninst release trigger (#1181) to release a tagged (versioned) container on publication of a release we just need to add the release -> published trigger, derive the tag from the GITHUB_REF environment variable, and then tag and push the container Signed-off-by: vsoch Co-authored-by: vsoch --- .github/workflows/base-containers.yaml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/.github/workflows/base-containers.yaml b/.github/workflows/base-containers.yaml index 07c40716c3..1fb33bc023 100644 --- a/.github/workflows/base-containers.yaml +++ b/.github/workflows/base-containers.yaml @@ -5,7 +5,11 @@ on: # Always have a base image ready to go - this is a nightly build schedule: - cron: 0 3 * * * - + + # Publish packages on release + release: + types: [published] + # On push to main we build and deploy images push: branches: @@ -72,6 +76,14 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} + - name: Tag and Push Release Image + if: (github.event_name == 'release') + run: | + tag=${GITHUB_REF#refs/tags/} + echo "Tagging and releasing ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:${tag}" + docker tag ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:${tag} + docker push ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:${tag} + - name: Deploy if: (github.event_name != 'pull_request') run: docker push ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest From 23416d71782f2b281d77ad9f11693b47522138ed Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Wed, 12 Jan 2022 12:50:12 -0700 Subject: [PATCH 064/505] start of work to add automated testing to dyninst! (#1183) start of work to add automated testing to dyninst! Signed-off-by: vsoch Co-authored-by: vsoch --- .github/workflows/test-dyninst.yaml | 39 +++++++++++++++++++++++++++++ docker/Dockerfile.test | 17 +++++++++++++ docker/README.md | 21 ++++++++++------ docker/test.sh | 19 ++++++++++++++ 4 files changed, 88 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/test-dyninst.yaml create mode 100644 docker/Dockerfile.test create mode 100755 docker/test.sh diff --git a/.github/workflows/test-dyninst.yaml b/.github/workflows/test-dyninst.yaml new file mode 100644 index 0000000000..664a6e9021 --- /dev/null +++ b/.github/workflows/test-dyninst.yaml @@ -0,0 +1,39 @@ +name: Test Dyninst + +on: + pull_request: [] + push: + branches: + - master + +jobs: + build: + permissions: + packages: read + strategy: + fail-fast: false + matrix: + + # Testing containers named by ubuntu version for now + ubuntu: ["20.04"] + + runs-on: ubuntu-latest + name: Build + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Make Space For Build + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + + - name: Set Organization Name for Packages Registry + env: + org: ${{ github.event.repository.owner.login }} + run: echo "org=${org}" >> $GITHUB_ENV + + - name: Build Test Container + run: | + cd docker/ + docker build -f Dockerfile.test --build-arg dyninst_base=ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest -t dyninst-test ../ diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test new file mode 100644 index 0000000000..fb1ed8c763 --- /dev/null +++ b/docker/Dockerfile.test @@ -0,0 +1,17 @@ +ARG dyninst_base=ghcr.io/dyninst/dyninst-ubuntu-20.04:latest +FROM ${dyninst_base} + +# docker build --build-arg dyninst_base=ghcr.io/dyninst/dyninst-ubuntu-20.04:latest -f Dockerfile.test -t dyninst-test ../ + +# Add updated Dyninst code +COPY . /code + +# Add testing and build script to run +COPY ./docker/build.sh /opt/dyninst-env/build.sh +COPY ./docker/test.sh /opt/dyninst-env/test.sh + +# Previous WORKDIR, just to be careful - reinstall dyninst if needed +# Thenbuild and run the test suite +WORKDIR /opt/dyninst-env +RUN /bin/bash build.sh && \ + /bin/bash test.sh diff --git a/docker/README.md b/docker/README.md index e1c06734c6..c241f94253 100644 --- a/docker/README.md +++ b/docker/README.md @@ -30,11 +30,11 @@ strategy so the transition is easier. ### Test Container -This will be added via a second PR here! This second Dockerfile starts with a base container (ready to go with -dependencies) and then adds Dyninst to it, updates with the changes, and then run tests. It should -be fairly speedy given that the base containers are pre-built. - -**to be added** +The [test-dyninst.yaml](../.github/workflows/test-dyninst.yaml) workflow +has it's own Dockerfile, [Dockerfile.test](docker/Dockerfile.test) that starts with a base container (ready to go with +dependencies, Dyninst compiler, and the testsuite compiler) and then adds Dyninst +and an updated testsuite to it, compiles changes, and then runs tests. Given that the base +containers are pre-built, the entire workflow takes only a few minutes. ## Usage @@ -166,10 +166,15 @@ libsymLite.so libsymLite.so.11.0 libsymLite.so.11.0.1 libsymta ## Test -**Note will be added in followup PR** +To build the test container, you'll want to use [Dockerfile.test](docker/Dockerfile.test). If you want to use +the base dyninst container from GitHub packages, leave out build args (it will default to this). + +```bash +$ cd docker/ +$ docker build -f Dockerfile.test -t dyninst-test ../ +``` -To build the test container, you'll want to use [Dockerfile.test](Dockerfile.test). If you want to use -the base dyninst container from GitHub packages, leave out build args (it will default to this). Otherwise, if you want to use a container you just built, specify that as the build arg `dyninst_base`: +Otherwise, if you want to use a container you just built, specify that as the build arg `dyninst_base`: ```bash $ docker build -f Dockerfile.test --build-arg dyninst_base=dyninst -t dyninst-test ../ diff --git a/docker/test.sh b/docker/test.sh new file mode 100755 index 0000000000..072cc69960 --- /dev/null +++ b/docker/test.sh @@ -0,0 +1,19 @@ +#!/bin/bash +set -euo pipefail + +printf "⭐️ Setting up spack environment for Dyninst\n" +. /opt/spack/share/spack/setup-env.sh +spack env activate . + +# 3. Run the tests +printf "⭐️ Running tests...\n" +cd /opt/dyninst-env/build/testsuite +export DYNINSTAPI_RT_LIB=/opt/dyninst-env/build/dyninst/lib/libdyninstAPI_RT.so +export OMP_NUM_THREADS=2 +export LD_LIBRARY_PATH=/opt/dyninst-env/build/dyninst/lib:$PWD:$LD_LIBRARY_PATH +./runTests -64 -all -log test.log -j1 > >(tee stdout.log) 2> >(tee stderr.log >&2) + +# TODO will update here to upload given merge to master +# Run the build script to collect and process the logs then upload them +# cd /opt/dyninst-env && \ +# perl /opt/testsuite/scripts/build/build.pl --hostname=ci-github --quiet --restart=build --no-run-tests --upload --auth-token=xxxxxxxxxxxxxxxxxxx From 273803a4c643ed3506f9a69c6ec71d5ab337489c Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Wed, 12 Jan 2022 21:00:50 -0500 Subject: [PATCH 065/505] Remove interposed definition of _r_debug (#1176) Previously there was a dynamic relocation against _r_debug in the loader which picked up the interposed definition, but glibc now uses a direct internal hidden symbol reference and thus no longer updates the interposed object. --- dyninstAPI_RT/src/RTlinux.c | 1 - 1 file changed, 1 deletion(-) diff --git a/dyninstAPI_RT/src/RTlinux.c b/dyninstAPI_RT/src/RTlinux.c index 0ddfc12ff6..0ca7a41d43 100644 --- a/dyninstAPI_RT/src/RTlinux.c +++ b/dyninstAPI_RT/src/RTlinux.c @@ -404,7 +404,6 @@ void dyninstTrapHandler(int sig, siginfo_t *sg, ucontext_t *context) #if defined(cap_binary_rewriter) extern struct r_debug _r_debug; -DLLEXPORT struct r_debug _r_debug __attribute__ ((weak)); /* Verify that the r_debug variable is visible */ void r_debugCheck() { assert(_r_debug.r_map); } From f01e178a2c17c3aef7e260462226620759be660b Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Wed, 12 Jan 2022 21:28:29 -0600 Subject: [PATCH 066/505] ELF+DWARF: always parse first entry in source file table (#1184) rocm-4.5 starts to emit AMD GPU binaries with DWARF 5. I noticed missing source line information for these binaries. The root cause is that dyninst assumes that source file table entry 0 represents "unknown file". This no longer seems to be true in DWARF 5, where entry 0 can represents a real application source file. --- symtabAPI/src/Object-elf.C | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 9c14f9a29a..b3e76d3f47 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3388,12 +3388,9 @@ void Object::parseLineInfoForCU(Dwarf_Die cuDIE, LineInformation* li_for_module) return s_name; }; - // dwarf_line_srcfileno == 0 means unknown; 1...n means files[0...n-1] - // so we ensure that we're adding a block of unknown, 1...n to the string table - // and that offset + dwarf_line_srcfileno points to the correct string using namespace boost::filesystem; strings->emplace_back("",""); - for(size_t i = 1; i < filecount; i++) + for(size_t i = 0; i < filecount; i++) { auto filename = dwarf_filesrc(files, i, nullptr, nullptr); if(!filename) continue; @@ -3676,12 +3673,9 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) boost::unique_lock l(strings->lock); size_t offset = strings->size(); - // dwarf_line_srcfileno == 0 means unknown; 1...n means files[0...n-1] - // so we ensure that we're adding a block of unknown, 1...n to the string table - // and that offset + dwarf_line_srcfileno points to the correct string using namespace boost::filesystem; strings->emplace_back("",""); - for(size_t i = 1; i < fileCount; i++) + for(size_t i = 0; i < fileCount; i++) { auto filename = dwarf_filesrc(files, i, nullptr, nullptr); if(!filename) continue; From 5c01c39956034ce57f92d9327fac18b843d27a7a Mon Sep 17 00:00:00 2001 From: Jonathon Anderson <17242663+blue42u@users.noreply.github.com> Date: Fri, 4 Feb 2022 13:57:51 -0600 Subject: [PATCH 067/505] ParseAPI: Speed up the case where a function is called from many locations (#1190) In some binaries a single function has many callers, so copying out the source edges for the entry Block takes a while and causes significant contention on the Block's lock. The case in Parser::finalize where this becomes a hotspot likely does not need to read every edge, so this commit inlines those cases into methods on Block instead. --- parseAPI/h/CFG.h | 13 ++++--------- parseAPI/src/Block.C | 23 +++++++++++++++++++++++ parseAPI/src/Parser.C | 17 ++--------------- 3 files changed, 29 insertions(+), 24 deletions(-) diff --git a/parseAPI/h/CFG.h b/parseAPI/h/CFG.h index f2ea37463c..d78fe31ef8 100644 --- a/parseAPI/h/CFG.h +++ b/parseAPI/h/CFG.h @@ -254,7 +254,6 @@ class PARSER_EXPORT Block : Address end, Address last, Function* f = NULL); virtual ~Block(); - boost::recursive_mutex& lockable() { return boost::lockable_adapter::lockable(); } inline Address start() const { return _start; } inline Address end() const { return _end; } @@ -271,15 +270,11 @@ class PARSER_EXPORT Block : /* Edge access */ const edgelist & sources() const { return _srclist; } const edgelist & targets() const { return _trglist; } - void copy_sources(edgelist & src) { - boost::lock_guard g(*this); - src = _srclist; - } - void copy_targets(edgelist & trg) { - boost::lock_guard g(*this); - trg = _trglist; - } + void copy_sources(edgelist & src) const; + void copy_targets(edgelist & trg) const; + bool hasCallSource() const; + Edge* getOnlyIncomingEdge() const; bool consistent(Address addr, Address & prev_insn); int containingFuncs() const; diff --git a/parseAPI/src/Block.C b/parseAPI/src/Block.C index 2e819dcbb9..2269b4607b 100644 --- a/parseAPI/src/Block.C +++ b/parseAPI/src/Block.C @@ -356,3 +356,26 @@ void Block::moveTargetEdges(Block* B) { } trgs.clear(); } + +void Block::copy_sources(edgelist & src) const { + boost::lock_guard g(lockable()); + src = _srclist; +} + +void Block::copy_targets(edgelist & trg) const { + boost::lock_guard g(lockable()); + trg = _trglist; +} + +bool Block::hasCallSource() const { + boost::lock_guard g(lockable()); + for (auto e: _srclist) + if (e->type() == CALL) + return true; + return false; +} + +Edge* Block::getOnlyIncomingEdge() const { + boost::lock_guard g(lockable()); + return _srclist.size() == 1 ? *_srclist.begin() : nullptr; +} diff --git a/parseAPI/src/Parser.C b/parseAPI/src/Parser.C index 37276bd47b..a1654672a2 100644 --- a/parseAPI/src/Parser.C +++ b/parseAPI/src/Parser.C @@ -852,14 +852,7 @@ Parser::finalize(Function *f) Block* trg_block = e->trg(); - bool trg_has_call_edge = false; - Block::edgelist sources; - trg_block->copy_sources(sources); - for (auto e2: sources) - if (e2->type() == CALL) { - trg_has_call_edge = true; - break; - } + bool trg_has_call_edge = trg_block->hasCallSource(); // Rule 1: // If an edge is currently not a tail call, but the edge target has a CALL incoming edge, @@ -900,13 +893,7 @@ Parser::finalize(Function *f) // Rule 3: // If an edge is currently a tail call, but the edge target has only the current edge as incoming edges, // we treat this as not tail call. - bool only_incoming = true; - for (auto e2: sources) - if (e2 != e) { - only_incoming = false; - break; - } - if (only_incoming) { + if (trg_block->getOnlyIncomingEdge() == e) { e->_type._interproc = false; parsing_printf("from %lx to %lx, marked as not tail call (single entry), re-finalize\n", b->last(), e->trg()->start()); return false; From 3489263edbb3f8a4b10f35b8104cefbfab08a9f0 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Fri, 4 Feb 2022 13:04:29 -0700 Subject: [PATCH 068/505] Dockerfile: use explicit packages for 'spack external find' (#1195) currently gettext in ubuntu 20.04 is being added as an external dependency (just added about 24 hours ago) and it is breaking the build. This change will test removing from the OS (probably not recommended but okay in the context of the Dyninst image) Signed-off-by: vsoch Co-authored-by: vsoch --- .github/workflows/base-containers.yaml | 2 +- docker/Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/base-containers.yaml b/.github/workflows/base-containers.yaml index 1fb33bc023..74522bbf18 100644 --- a/.github/workflows/base-containers.yaml +++ b/.github/workflows/base-containers.yaml @@ -9,7 +9,7 @@ on: # Publish packages on release release: types: [published] - + # On push to main we build and deploy images push: branches: diff --git a/docker/Dockerfile b/docker/Dockerfile index 4e26864a15..36ff99d7ba 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -67,7 +67,7 @@ RUN apt-get install -y software-properties-common && \ apt-get install -y gcc-11 g++-11 && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9 && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 --slave /usr/bin/g++ g++ /usr/bin/g++-11 --slave /usr/bin/gcov gcov /usr/bin/gcov-11 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-11 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-11; - + # Install spack WORKDIR /opt RUN git clone --depth 1 https://github.com/spack/spack @@ -81,7 +81,7 @@ RUN python3 -m pip install botocore boto3 && \ spack gpg trust key.pub # Find packages already installed on system, e.g. autoconf -RUN spack external find && \ +RUN spack external find gcc@11.0.1 autoconf bzip2 git tar xz perl && \ spack config add 'packages:all:target:[x86_64]' && \ # Install a new CMake (Tim originally wanted 3.17.1 but spack doesn't have it) spack install cmake@${CMAKE_VERSION} perl From 458d04f1130d7a678a80dec68bf6141f5b761d49 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 4 Feb 2022 14:06:30 -0600 Subject: [PATCH 069/505] Symtab::module documentation cleanup (#1189) * Remove docs for hasLineInformation This was removed by 0dee1c8 in 2016 * Remove getAllVariables This was by b3ad134 in 2021. It was removed there because this function was never implemented. Co-authored-by: Tim Haines --- symtabAPI/doc/API/Symtab/Module.tex | 9 --------- 1 file changed, 9 deletions(-) diff --git a/symtabAPI/doc/API/Symtab/Module.tex b/symtabAPI/doc/API/Symtab/Module.tex index 30424305ca..5036ac942f 100644 --- a/symtabAPI/doc/API/Symtab/Module.tex +++ b/symtabAPI/doc/API/Symtab/Module.tex @@ -28,7 +28,6 @@ \subsection{Class Module}\label{Module} language & supportedLanguages & The source language used by the Module. \\ addr & Offset & Offset of the start of the module, as reported by the symbol table, assuming contiguous modules. \\ exec & Symtab * & Symtab object that contains the module. \\ -hasLineInformation & bool & True if the module has line information. \\ \bottomrule \end{tabular} @@ -99,14 +98,6 @@ \subsubsection{Function, Variable, Symbol lookup} \code{false}. The error value is set to \code{No\_Such\_Variable}. } -\begin{apient} -bool getAllVariables(vector &ret) -\end{apient} -\apidesc{ -This method returns all variables in the object file. Returns \code{true} on success -and \code{false} if there are no modules. The error value is set to \code{No\_Such\_Variable}. -} - \begin{apient} bool getAllSymbols(vector &ret) \end{apient} From 2c94ce001356b55d6c83c2265b905de4f1e86a51 Mon Sep 17 00:00:00 2001 From: Stan Cox Date: Fri, 4 Feb 2022 15:35:36 -0500 Subject: [PATCH 070/505] glibc r_debug extensions to support multiple namespaces (#1175) * Remove interposed definition of _r_debug Previously there was a dynamic relocation against _r_debug in the loader which picked up the interposed definition, but glibc now uses a direct internal hidden symbol reference and thus no longer updates the interposed object. * Update the elf _DYNAMIC symbol When the symbol table is created in emitElf::createSymbolTables, also update the elf _DYNAMIC symbol to reflect the new address of the .dynamic section. --- symtabAPI/src/emitElf.C | 42 +++++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 8 deletions(-) diff --git a/symtabAPI/src/emitElf.C b/symtabAPI/src/emitElf.C index 139504181d..6e8a0014da 100644 --- a/symtabAPI/src/emitElf.C +++ b/symtabAPI/src/emitElf.C @@ -342,7 +342,7 @@ bool emitElf::createElfSymbol(Symbol *symbol, unsigned strIndex, vecto else { if (vers) { // There should only be one version string by this time - //If the verison name already exists then add the same version number to the version symbol table + //If the version name already exists then add the same version number to the version symbol table //Else give a new number and add it to the mapping. if (versionNames.find((*vers)[0]) == versionNames.end()) { mpos += sprintf(mpos, " new version name: %s\n", (*vers)[0].c_str()); @@ -694,7 +694,7 @@ bool emitElf::driver(std::string fName) { } // Change offsets of sections based on the newly added sections if (movePHdrsFirst) { - /* This special case is specific to FreeBSD but there is no hurt in + /* This special case is specific to FreeBSD but there is no harm in * handling it on other platforms. * * This is necessary because the INTERP header must be located within in @@ -1105,7 +1105,7 @@ void emitElf::fixPhdrs(unsigned &extraAlignSize) { return; //We made a new section to contain the program headers--keeps - // libelf from overwriting the program headers data when outputing + // libelf from overwriting the program headers data when outputting // sections. Fill in the new section's data with what we just wrote. Elf_Data *data = elf_newdata(phdrs_scn); size_t total_size = (size_t) newEhdr->e_phnum * (size_t) newEhdr->e_phentsize; @@ -1135,7 +1135,7 @@ void emitElf::fixPhdrs(unsigned &extraAlignSize) { template void emitElf::updateDynamic(unsigned tag, Elf_Addr val) { if (isStaticBinary) return; - // This is for REL/RELA if it doesnt already exist in the original binary; + // This is for REL/RELA if it doesn't already exist in the original binary; if(dynamicSecData.find(tag) != dynamicSecData.end()) dynamicSecData[tag][0]->d_tag = tag; else return; @@ -1277,7 +1277,7 @@ bool emitElf::createLoadableSections(Elf_Shdr *&shdr, unsigned &extraA } else if (!firstNewLoadSec || !newSecs[i]->getDiskOffset()) { newshdr->sh_offset = shdr->sh_offset + shdr->sh_size; } else { - // The offset can be computed by determing the difference from + // The offset can be computed by determining the difference from // the first new loadable section newshdr->sh_offset = firstNewLoadSec->sh_offset + library_adjust + (newSecs[i]->getDiskOffset() - firstNewLoadSec->sh_addr); @@ -1632,7 +1632,7 @@ bool emitElf::createNonLoadableSections(Elf_Shdr *&shdr) { /* Regenerates the .symtab, .strtab sections from the symbols * Add new .dynsym, .dynstr sections for the newly added dynamic symbols - * Method - For every symbol call createElfSymbol to get a Elf_Sym corresposnding + * Method - For every symbol call createElfSymbol to get a Elf_Sym corresponding * to a Symbol object. Accumulate all and their names to form the sections * and add them to the list of new sections */ @@ -1718,7 +1718,7 @@ bool emitElf::createSymbolTables(set &allSymbols) { + errMsg; Symtab::setSymtabError(Emit_Error); symtab_log_perror(linkStaticError.c_str()); - fprintf(stderr, "##### %s\n", linkStaticError.c_str()); + fprintf(stderr, "##### %s\n", linkStaticError.c_str()); return false; } @@ -1755,7 +1755,7 @@ bool emitElf::createSymbolTables(set &allSymbols) { } } - // sort allSymbols in a way that every symmbol with index -1 are in order of offset + // sort allSymbols in a way that every symbol with index -1 are in order of offset std::sort(allDynSymbols.begin(), allDynSymbols.end(), sortByOffsetNewIndices()); int max_index = -1; @@ -1990,6 +1990,32 @@ bool emitElf::createSymbolTables(set &allSymbols) { if (!obj->getAllNewRegions(newSecs)) log_elferror(err_func_, "No new sections to add"); + unsigned int prev_size = 0; + unsigned long sec_addr = 0; + for (unsigned long nsi = 0; nsi < newSecs.size(); nsi++) { + // Update the _DYNAMIC symbol; described in the elf standard as: + // The program header table will have an element of type PT_DYNAMIC. + // This "segment" contains the .dynamic section. A special symbol, + // _DYNAMIC, labels the section + if (newSecs[nsi]->getDiskOffset()) + sec_addr = newSecs[nsi]->getDiskOffset() + library_adjust; + else + sec_addr += prev_size; + prev_size = newSecs[nsi]->getDiskSize(); + if (".dynamic" == newSecs[nsi]->getRegionName()) { + // Found the .dynamic section + for (unsigned long symi = 0; symi < symbolStrs.size(); symi++) + if ("_DYNAMIC" == symbolStrs[symi]) { + // Found the _DYNAMIC symbol + rewrite_printf("update _DYNAMIC symbol from %#lx to %#lx\n", + (unsigned long) syms[symi].st_value, (unsigned long) sec_addr); + syms[symi].st_value = sec_addr; + break; + } + break; + } + } + return true; } From 8afa925fd7b421ce6eb9ad3734d00c6907c8c610 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 25 Jan 2022 20:34:23 -0600 Subject: [PATCH 071/505] Remove dead code Object::elf_vaddr_to_ptr (#1192) --- symtabAPI/src/Object-elf.C | 14 -------------- symtabAPI/src/Object-elf.h | 3 +-- 2 files changed, 1 insertion(+), 16 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index b3e76d3f47..4aec0f8ad5 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -2429,20 +2429,6 @@ void Object::find_code_and_data(Elf_X &elf, //if (addressWidth_nbytes == 8) bperr( ">>> 64-bit find_code_and_data() successful\n"); } -const char *Object::elf_vaddr_to_ptr(Offset vaddr) const { - const char *ret = NULL; - unsigned code_size_ = code_len_; - unsigned data_size_ = data_len_; - - if (vaddr >= code_off_ && vaddr < code_off_ + code_size_) { - ret = ((char *) code_ptr_) + (vaddr - code_off_); - } else if (vaddr >= data_off_ && vaddr < data_off_ + data_size_) { - ret = ((char *) data_ptr_) + (vaddr - data_off_); - } - - return ret; -} - Object::Object(MappedFile *mf_, bool, void (*err_func)(const char *), bool alloc_syms, Symtab *st) : AObject(mf_, err_func, st), diff --git a/symtabAPI/src/Object-elf.h b/symtabAPI/src/Object-elf.h index 69b9fa8596..0f29ec1a3a 100644 --- a/symtabAPI/src/Object-elf.h +++ b/symtabAPI/src/Object-elf.h @@ -156,8 +156,7 @@ class Object : public AObject virtual ~Object(); bool emitDriver(std::string fName, std::set &allSymbols, unsigned flag); - - const char *elf_vaddr_to_ptr(Offset vaddr) const; + bool hasDwarfInfo() const { return dwarvenDebugInfo; } std::string getFileName() const; void getModuleLanguageInfo(dyn_hash_map *mod_langs); From fd8744ee667874c6780f4f3a4ce9297d0f8388bd Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 25 Jan 2022 20:44:17 -0600 Subject: [PATCH 072/505] Remove dead code and variables related to Symtab::data_ptr_ and Symtab::code_ptr_ (#1192) --- symtabAPI/h/Symtab.h | 2 -- symtabAPI/src/Symtab.C | 18 ------------------ 2 files changed, 20 deletions(-) diff --git a/symtabAPI/h/Symtab.h b/symtabAPI/h/Symtab.h index 71e3a338c9..4a06cadad8 100644 --- a/symtabAPI/h/Symtab.h +++ b/symtabAPI/h/Symtab.h @@ -508,8 +508,6 @@ class SYMTAB_EXPORT Symtab : public LookupInterface, Offset main_call_addr_; // address of call to main() unsigned address_width_; - char *code_ptr_; - char *data_ptr_; std::string interpreter_name_; Offset entry_address_; Offset base_address_; diff --git a/symtabAPI/src/Symtab.C b/symtabAPI/src/Symtab.C index 24f52a7c88..2308b5276e 100644 --- a/symtabAPI/src/Symtab.C +++ b/symtabAPI/src/Symtab.C @@ -313,7 +313,6 @@ SYMTAB_EXPORT Symtab::Symtab(MappedFile *mf_) : is_a_out(false), main_call_addr_(0), address_width_(sizeof(int)), - code_ptr_(NULL), data_ptr_(NULL), entry_address_(0), base_address_(0), load_address_(0), object_type_(obj_Unknown), is_eel_(false), no_of_sections(0), @@ -343,7 +342,6 @@ SYMTAB_EXPORT Symtab::Symtab() : is_a_out(false), main_call_addr_(0), address_width_(sizeof(int)), - code_ptr_(NULL), data_ptr_(NULL), entry_address_(0), base_address_(0), load_address_(0), object_type_(obj_Unknown), is_eel_(false), no_of_sections(0), @@ -426,17 +424,6 @@ SYMTAB_EXPORT void Symtab::fixup_code_and_data(Offset newImageOffset, // Should we update the underlying Object? } -/* -SYMTAB_EXPORT char* Symtab::image_ptr () const -{ - return code_ptr_; -} - -SYMTAB_EXPORT char* Symtab::data_ptr () const -{ - return data_ptr_; -} -*/ SYMTAB_EXPORT const char* Symtab::getInterpreterName() const { if (interpreter_name_.length()) @@ -1069,7 +1056,6 @@ Symtab::Symtab(std::string filename, bool defensive_bin, bool &err) : is_a_out(false), main_call_addr_(0), address_width_(sizeof(int)), - code_ptr_(NULL), data_ptr_(NULL), entry_address_(0), base_address_(0), load_address_(0), object_type_(obj_Unknown), is_eel_(false), no_of_sections(0), @@ -1139,7 +1125,6 @@ Symtab::Symtab(unsigned char *mem_image, size_t image_size, is_a_out(false), main_call_addr_(0), address_width_(sizeof(int)), - code_ptr_(NULL), data_ptr_(NULL), entry_address_(0), base_address_(0), load_address_(0), object_type_(obj_Unknown), is_eel_(false), no_of_sections(0), @@ -1318,8 +1303,6 @@ bool Symtab::extractInfo(Object *linkedFile) /* insert error check here. check if parsed */ address_width_ = linkedFile->getAddressWidth(); is_a_out = linkedFile->is_aout(); - code_ptr_ = linkedFile->code_ptr(); - data_ptr_ = linkedFile->data_ptr(); if (linkedFile->interpreter_name()) interpreter_name_ = std::string(linkedFile->interpreter_name()); @@ -1419,7 +1402,6 @@ Symtab::Symtab(const Symtab& obj) : is_a_out(obj.is_a_out), main_call_addr_(obj.main_call_addr_), address_width_(sizeof(int)), - code_ptr_(NULL), data_ptr_(NULL), entry_address_(0), base_address_(0), load_address_(0), object_type_(obj_Unknown), is_eel_(false), defaultNamespacePrefix(obj.defaultNamespacePrefix), From 645e38a33fa5a86153bd08d923355f432289f7d5 Mon Sep 17 00:00:00 2001 From: Xiaozhu Meng Date: Tue, 25 Jan 2022 20:30:53 -0600 Subject: [PATCH 073/505] Allow zero-length ELF program headers (#1192) CUDA-11.6 binaries do not have program headers, which causes ELF parsing to stop early and miss line info --- symtabAPI/src/Object-elf.C | 6 ------ 1 file changed, 6 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 4aec0f8ad5..d70477d7d5 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -1489,12 +1489,6 @@ void Object::load_object(bool alloc_syms) { // find code and data segments.... find_code_and_data(*elfHdr, txtaddr, dataddr); - if (elfHdr->e_type() != ET_REL) { - if (!code_ptr_ || !code_len_) { - //bpfatal( "no text segment\n"); - goto cleanup; - } - } get_valid_memory_areas(*elfHdr); #if (defined(os_linux) || defined(os_freebsd)) From 7c8d841b1321eefa8349423356b1f884cb3e60c1 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 4 Feb 2022 19:08:30 -0600 Subject: [PATCH 074/505] Additional cleanup of memory emulation for hybrid analysis (#1172) * Remove vestiges of runtime functions * Remove translation for emulation shadow pages Co-authored-by: Tim Haines --- dyninstAPI/src/IAPI_to_AST.C | 9 +-------- dyninstAPI_RT/h/dyninstRTExport.h | 3 --- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/dyninstAPI/src/IAPI_to_AST.C b/dyninstAPI/src/IAPI_to_AST.C index a27909a396..15e6b89270 100644 --- a/dyninstAPI/src/IAPI_to_AST.C +++ b/dyninstAPI/src/IAPI_to_AST.C @@ -69,14 +69,7 @@ void ASTFactory::visit(Dereference* ) { AstNodePtr effaddr = m_stack.back(); m_stack.pop_back(); - // We need to translate the addr to handle emulation shadow pages - // before we dereference - std::vector args; - args.push_back(effaddr); - args.push_back(AstNode::operandNode(AstNode::Constant, (void *) 0xdeadbeef)); - args.push_back(AstNode::operandNode(AstNode::Constant, (void *) 0xcafebabe)); - AstNodePtr funcCall = AstNode::funcCallNode("RTtranslateMemory", args); - m_stack.push_back(AstNode::operandNode(AstNode::DataIndir, funcCall)); + m_stack.push_back(AstNode::operandNode(AstNode::DataIndir, effaddr)); } void ASTFactory::visit(Immediate* i) diff --git a/dyninstAPI_RT/h/dyninstRTExport.h b/dyninstAPI_RT/h/dyninstRTExport.h index ed9f9c3016..526298c54d 100644 --- a/dyninstAPI_RT/h/dyninstRTExport.h +++ b/dyninstAPI_RT/h/dyninstRTExport.h @@ -102,9 +102,6 @@ DLLEXPORT void DYNINSTinit(); DLLEXPORT void DYNINST_snippetBreakpoint(); DLLEXPORT void DYNINST_stopThread(void *, void *, void *, void *); DLLEXPORT void DYNINST_stopInterProc(void *, void *, void *, void *, void *, void *); -DLLEXPORT void RThandleShadow(void *, void *, void *, void *, void *); -DLLEXPORT unsigned long RTtranslateMemory(unsigned long, unsigned long, unsigned long); -DLLEXPORT unsigned long RTtranslateMemoryShift(unsigned long, unsigned long, unsigned long); DLLEXPORT void *DYNINSTos_malloc(size_t, void *, void *); DLLEXPORT int DYNINSTloadLibrary(char *); From b8fed71b204e98b016dc751f2273da5fa2d5967f Mon Sep 17 00:00:00 2001 From: kupsch Date: Wed, 9 Feb 2022 10:41:16 -0600 Subject: [PATCH 075/505] fix building of symlite (#1197) - add missing pure virtual functions isReadOnly - fix isCode and isData methods to use program header permissions instead of just returning true - fix printf compiler warning - disable parseThat if using symlite as it is not compatible - remove #include from proccontrol/src/linux.h on aarch64 if SYMLITE is configured as it is incompatible with --- CMakeLists.txt | 6 ++++-- parseAPI/h/SymLiteCodeSource.h | 8 +++++--- parseAPI/src/SymLiteCodeSource.C | 28 +++++++++++++++++++++++++--- proccontrol/src/linux.C | 2 ++ 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 994d3e35ba..a4c6d7d76e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,7 +92,6 @@ if(NOT ${PLATFORM} MATCHES nt) add_subdirectory (elf) add_subdirectory (dwarf) add_subdirectory (symlite) - add_subdirectory (parseThat) endif() add_subdirectory (instructionAPI) add_subdirectory (symtabAPI) @@ -104,6 +103,7 @@ add_subdirectory (patchAPI) if(${SYMREADER} MATCHES symtabAPI) add_subdirectory (dyninstAPI) add_subdirectory (dynC_API) + add_subdirectory (parseThat) endif() if(BUILD_RTLIB) @@ -143,7 +143,9 @@ if(BUILD_RTLIB) if(TARGET TBB) add_dependencies(DyninstRT TBB) endif() - add_dependencies(dyninstAPI DyninstRT) + if(TARGET dyninstAPI) + add_dependencies(dyninstAPI DyninstRT) + endif() if(TARGET dyninstAPI-static) add_dependencies(dyninstAPI-static DyninstRT) endif() diff --git a/parseAPI/h/SymLiteCodeSource.h b/parseAPI/h/SymLiteCodeSource.h index fad01eae29..054dd1f378 100644 --- a/parseAPI/h/SymLiteCodeSource.h +++ b/parseAPI/h/SymLiteCodeSource.h @@ -65,9 +65,10 @@ class SymReaderCodeRegion : public CodeRegion { PARSER_EXPORT bool isValidAddress(const Address) const; PARSER_EXPORT void* getPtrToInstruction(const Address) const; PARSER_EXPORT void* getPtrToData(const Address) const; - PARSER_EXPORT unsigned int getAddressWidth() const; - PARSER_EXPORT bool isCode(const Address) const; - PARSER_EXPORT bool isData(const Address) const; + PARSER_EXPORT unsigned int getAddressWidth() const override; + PARSER_EXPORT bool isCode(const Address) const override; + PARSER_EXPORT bool isData(const Address) const override; + PARSER_EXPORT bool isReadOnly(const Address) const override; PARSER_EXPORT Address offset() const; PARSER_EXPORT Address length() const; PARSER_EXPORT Architecture getArch() const; @@ -109,6 +110,7 @@ class SymReaderCodeSource : public CodeSource { PARSER_EXPORT unsigned int getAddressWidth() const; PARSER_EXPORT bool isCode(const Address) const; PARSER_EXPORT bool isData(const Address) const; + PARSER_EXPORT bool isReadOnly(const Address) const; PARSER_EXPORT Address offset() const; PARSER_EXPORT Address length() const; PARSER_EXPORT Architecture getArch() const; diff --git a/parseAPI/src/SymLiteCodeSource.C b/parseAPI/src/SymLiteCodeSource.C index f826165a1a..8b9475870c 100644 --- a/parseAPI/src/SymLiteCodeSource.C +++ b/parseAPI/src/SymLiteCodeSource.C @@ -148,7 +148,7 @@ bool SymReaderCodeRegion::isCode(const Address addr) const { if(!contains(addr)) return false; - return true; + return _region->perms & PF_X; /* // XXX this is the predicate from SymReader::isCode(a) + @@ -163,7 +163,7 @@ bool SymReaderCodeRegion::isData(const Address addr) const { if(!contains(addr)) return false; - return true; + return !(_region->perms & PF_X); /* @@ -174,6 +174,16 @@ SymReaderCodeRegion::isData(const Address addr) const */ } +bool +SymReaderCodeRegion::isReadOnly(const Address addr) const +{ + if (!contains(addr)) { + return false; + } + + return !(_region->perms & PF_W); +} + Address SymReaderCodeRegion::offset() const { @@ -400,7 +410,7 @@ inline void SymReaderCodeSource::overlapping_warn(const char * file, unsigned line) const { if(regionsOverlap()) { - fprintf(stderr,"Invocation of routine at %s:%d is ambiguous for " + fprintf(stderr,"Invocation of routine at %s:%u is ambiguous for " "binaries with overlapping code regions\n", file,line); } @@ -484,6 +494,18 @@ SymReaderCodeSource::isData(const Address addr) const return false; } +bool +SymReaderCodeSource::isReadOnly(const Address addr) const +{ + overlapping_warn(FILE__,__LINE__); + + CodeRegion * cr = lookup_region(addr); + if(cr) + return cr->isReadOnly(addr); + else + return false; +} + Address SymReaderCodeSource::offset() const { diff --git a/proccontrol/src/linux.C b/proccontrol/src/linux.C index c51c7e3b1e..5e46507acf 100644 --- a/proccontrol/src/linux.C +++ b/proccontrol/src/linux.C @@ -75,8 +75,10 @@ #include #include #include +#if !defined(WITH_SYMLITE) #include #endif +#endif // Before glibc-2.7, sys/ptrace.h lacked PTRACE_O_* and PTRACE_EVENT_*, so we // need them from linux/ptrace.h. (Conditionally, as later glibc conflicts.) From a85835269188c24a5c27a50bbd06751c1badc3d7 Mon Sep 17 00:00:00 2001 From: bbiiggppiigg Date: Wed, 23 Feb 2022 09:16:55 -0600 Subject: [PATCH 076/505] Add Support for AMDGPU CDNA2 Architectures based on XML ISA spec (#1107) Add Initial Support for cdna based on the lastest version of XML file ( 20210720 ) Added new register names based on the latest xml-isa drop Decoder implementation updated based on the latest xml-isa drop renumbered registers to make low registers have the same value as full register (or its super set) add larger memoery types for representing consecutive registers used as a single operand Modify the format function to output multiple registers as a single operand correctly, handling for certain registers are still being worked on split register-vector into multiple registers --- common/h/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h | 617 ++ common/h/amdgpu_cdna2_op_table.h | 1135 ++ common/h/amdgpu_cdna2_sys_regs.h | 1563 +++ common/h/amdgpu_cdna_op_table.h | 1152 ++ common/h/amdgpu_cdna_sys_regs.h | 1563 +++ common/h/amdgpu_op_table.h | 783 +- common/h/dyn_regs.h | 3954 +++---- common/h/entryIDs.h | 2 + common/src/dyn_regs.C | 452 +- dwarf/src/dwarfHandle.C | 6 +- elf/src/Elf_X.C | 6 +- instructionAPI/CMakeLists.txt | 5 +- instructionAPI/h/Instruction.h | 2 + instructionAPI/h/Operation_impl.h | 3 + instructionAPI/h/Result.h | 1095 +- .../cdna2/InstructionDecoder-amdgpu-cdna2.C | 310 + .../cdna2/InstructionDecoder-amdgpu-cdna2.h | 317 + .../AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C | 2195 ++++ .../AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h | 378 + .../AMDGPU/cdna2/amdgpu_cdna2_insn_entry.h | 30 + .../src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h | 1135 ++ .../AMDGPU/cdna2/amdgpu_cdna2_opcode_tables.C | 2879 +++++ .../src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h | 617 ++ .../src/AMDGPU/cdna2/decodeOperands.C | 6648 +++++++++++ .../src/AMDGPU/cdna2/decodeOperands.h | 41 + .../src/AMDGPU/cdna2/finalizeOperands.C | 9860 +++++++++++++++++ .../vega}/InstructionDecoder-amdgpu-vega.C | 17 +- .../vega}/InstructionDecoder-amdgpu-vega.h | 8 +- .../vega/amdgpu_vega_decoder_impl.C} | 64 +- .../vega/amdgpu_vega_decoder_impl.h} | 0 .../src/AMDGPU/vega/amdgpu_vega_insn_entry.h | 24 + .../vega/amdgpu_vega_opcode_tables.C} | 128 +- instructionAPI/src/Instruction.C | 1077 +- instructionAPI/src/InstructionCategories.C | 1 + instructionAPI/src/InstructionDecoderImpl.C | 5 +- instructionAPI/src/Operand.C | 195 +- instructionAPI/src/Operation.C | 924 +- instructionAPI/src/Register.C | 34 +- instructionAPI/src/amdgpu_branchinsn_table.h | 16 + instructionAPI/src/amdgpu_insn_entry.h | 24 - parseAPI/src/IA_IAPI.C | 31 +- parseAPI/src/IA_amdgpu.C | 3 +- parseAPI/src/SymbolicExpression.C | 2 +- proccontrol/src/process.C | 3 +- 44 files changed, 35037 insertions(+), 4267 deletions(-) create mode 100644 common/h/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h create mode 100644 common/h/amdgpu_cdna2_op_table.h create mode 100644 common/h/amdgpu_cdna2_sys_regs.h create mode 100644 common/h/amdgpu_cdna_op_table.h create mode 100644 common/h/amdgpu_cdna_sys_regs.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C create mode 100644 instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C create mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_insn_entry.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_opcode_tables.C create mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/decodeOperands.C create mode 100644 instructionAPI/src/AMDGPU/cdna2/decodeOperands.h create mode 100644 instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C rename instructionAPI/src/{ => AMDGPU/vega}/InstructionDecoder-amdgpu-vega.C (98%) rename instructionAPI/src/{ => AMDGPU/vega}/InstructionDecoder-amdgpu-vega.h (98%) rename instructionAPI/src/{amdgpu_decoder_impl_vega.C => AMDGPU/vega/amdgpu_vega_decoder_impl.C} (84%) rename instructionAPI/src/{amdgpu_decoder_impl_vega.h => AMDGPU/vega/amdgpu_vega_decoder_impl.h} (100%) create mode 100644 instructionAPI/src/AMDGPU/vega/amdgpu_vega_insn_entry.h rename instructionAPI/src/{amdgpu_opcode_tables.C => AMDGPU/vega/amdgpu_vega_opcode_tables.C} (96%) delete mode 100644 instructionAPI/src/amdgpu_insn_entry.h diff --git a/common/h/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h b/common/h/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h new file mode 100644 index 0000000000..8515f8630b --- /dev/null +++ b/common/h/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h @@ -0,0 +1,617 @@ +#ifndef DYNINST_AMDGPU_CDNA2_SYS_REGS_H +#define DYNINST_AMDGPU_CDNA2_SYS_REGS_H +DEF_REGISTER(s0, Arch_amdgpu_cdna2| SGPR | BITS_32 | 0 , "amdgpu_cdna2"); +DEF_REGISTER(s1, Arch_amdgpu_cdna2| SGPR | BITS_32 | 1 , "amdgpu_cdna2"); +DEF_REGISTER(s2, Arch_amdgpu_cdna2| SGPR | BITS_32 | 2 , "amdgpu_cdna2"); +DEF_REGISTER(s3, Arch_amdgpu_cdna2| SGPR | BITS_32 | 3 , "amdgpu_cdna2"); +DEF_REGISTER(s4, Arch_amdgpu_cdna2| SGPR | BITS_32 | 4 , "amdgpu_cdna2"); +DEF_REGISTER(s5, Arch_amdgpu_cdna2| SGPR | BITS_32 | 5 , "amdgpu_cdna2"); +DEF_REGISTER(s6, Arch_amdgpu_cdna2| SGPR | BITS_32 | 6 , "amdgpu_cdna2"); +DEF_REGISTER(s7, Arch_amdgpu_cdna2| SGPR | BITS_32 | 7 , "amdgpu_cdna2"); +DEF_REGISTER(s8, Arch_amdgpu_cdna2| SGPR | BITS_32 | 8 , "amdgpu_cdna2"); +DEF_REGISTER(s9, Arch_amdgpu_cdna2| SGPR | BITS_32 | 9 , "amdgpu_cdna2"); +DEF_REGISTER(s10, Arch_amdgpu_cdna2| SGPR | BITS_32 | 10 , "amdgpu_cdna2"); +DEF_REGISTER(s11, Arch_amdgpu_cdna2| SGPR | BITS_32 | 11 , "amdgpu_cdna2"); +DEF_REGISTER(s12, Arch_amdgpu_cdna2| SGPR | BITS_32 | 12 , "amdgpu_cdna2"); +DEF_REGISTER(s13, Arch_amdgpu_cdna2| SGPR | BITS_32 | 13 , "amdgpu_cdna2"); +DEF_REGISTER(s14, Arch_amdgpu_cdna2| SGPR | BITS_32 | 14 , "amdgpu_cdna2"); +DEF_REGISTER(s15, Arch_amdgpu_cdna2| SGPR | BITS_32 | 15 , "amdgpu_cdna2"); +DEF_REGISTER(s16, Arch_amdgpu_cdna2| SGPR | BITS_32 | 16 , "amdgpu_cdna2"); +DEF_REGISTER(s17, Arch_amdgpu_cdna2| SGPR | BITS_32 | 17 , "amdgpu_cdna2"); +DEF_REGISTER(s18, Arch_amdgpu_cdna2| SGPR | BITS_32 | 18 , "amdgpu_cdna2"); +DEF_REGISTER(s19, Arch_amdgpu_cdna2| SGPR | BITS_32 | 19 , "amdgpu_cdna2"); +DEF_REGISTER(s20, Arch_amdgpu_cdna2| SGPR | BITS_32 | 20 , "amdgpu_cdna2"); +DEF_REGISTER(s21, Arch_amdgpu_cdna2| SGPR | BITS_32 | 21 , "amdgpu_cdna2"); +DEF_REGISTER(s22, Arch_amdgpu_cdna2| SGPR | BITS_32 | 22 , "amdgpu_cdna2"); +DEF_REGISTER(s23, Arch_amdgpu_cdna2| SGPR | BITS_32 | 23 , "amdgpu_cdna2"); +DEF_REGISTER(s24, Arch_amdgpu_cdna2| SGPR | BITS_32 | 24 , "amdgpu_cdna2"); +DEF_REGISTER(s25, Arch_amdgpu_cdna2| SGPR | BITS_32 | 25 , "amdgpu_cdna2"); +DEF_REGISTER(s26, Arch_amdgpu_cdna2| SGPR | BITS_32 | 26 , "amdgpu_cdna2"); +DEF_REGISTER(s27, Arch_amdgpu_cdna2| SGPR | BITS_32 | 27 , "amdgpu_cdna2"); +DEF_REGISTER(s28, Arch_amdgpu_cdna2| SGPR | BITS_32 | 28 , "amdgpu_cdna2"); +DEF_REGISTER(s29, Arch_amdgpu_cdna2| SGPR | BITS_32 | 29 , "amdgpu_cdna2"); +DEF_REGISTER(s30, Arch_amdgpu_cdna2| SGPR | BITS_32 | 30 , "amdgpu_cdna2"); +DEF_REGISTER(s31, Arch_amdgpu_cdna2| SGPR | BITS_32 | 31 , "amdgpu_cdna2"); +DEF_REGISTER(s32, Arch_amdgpu_cdna2| SGPR | BITS_32 | 32 , "amdgpu_cdna2"); +DEF_REGISTER(s33, Arch_amdgpu_cdna2| SGPR | BITS_32 | 33 , "amdgpu_cdna2"); +DEF_REGISTER(s34, Arch_amdgpu_cdna2| SGPR | BITS_32 | 34 , "amdgpu_cdna2"); +DEF_REGISTER(s35, Arch_amdgpu_cdna2| SGPR | BITS_32 | 35 , "amdgpu_cdna2"); +DEF_REGISTER(s36, Arch_amdgpu_cdna2| SGPR | BITS_32 | 36 , "amdgpu_cdna2"); +DEF_REGISTER(s37, Arch_amdgpu_cdna2| SGPR | BITS_32 | 37 , "amdgpu_cdna2"); +DEF_REGISTER(s38, Arch_amdgpu_cdna2| SGPR | BITS_32 | 38 , "amdgpu_cdna2"); +DEF_REGISTER(s39, Arch_amdgpu_cdna2| SGPR | BITS_32 | 39 , "amdgpu_cdna2"); +DEF_REGISTER(s40, Arch_amdgpu_cdna2| SGPR | BITS_32 | 40 , "amdgpu_cdna2"); +DEF_REGISTER(s41, Arch_amdgpu_cdna2| SGPR | BITS_32 | 41 , "amdgpu_cdna2"); +DEF_REGISTER(s42, Arch_amdgpu_cdna2| SGPR | BITS_32 | 42 , "amdgpu_cdna2"); +DEF_REGISTER(s43, Arch_amdgpu_cdna2| SGPR | BITS_32 | 43 , "amdgpu_cdna2"); +DEF_REGISTER(s44, Arch_amdgpu_cdna2| SGPR | BITS_32 | 44 , "amdgpu_cdna2"); +DEF_REGISTER(s45, Arch_amdgpu_cdna2| SGPR | BITS_32 | 45 , "amdgpu_cdna2"); +DEF_REGISTER(s46, Arch_amdgpu_cdna2| SGPR | BITS_32 | 46 , "amdgpu_cdna2"); +DEF_REGISTER(s47, Arch_amdgpu_cdna2| SGPR | BITS_32 | 47 , "amdgpu_cdna2"); +DEF_REGISTER(s48, Arch_amdgpu_cdna2| SGPR | BITS_32 | 48 , "amdgpu_cdna2"); +DEF_REGISTER(s49, Arch_amdgpu_cdna2| SGPR | BITS_32 | 49 , "amdgpu_cdna2"); +DEF_REGISTER(s50, Arch_amdgpu_cdna2| SGPR | BITS_32 | 50 , "amdgpu_cdna2"); +DEF_REGISTER(s51, Arch_amdgpu_cdna2| SGPR | BITS_32 | 51 , "amdgpu_cdna2"); +DEF_REGISTER(s52, Arch_amdgpu_cdna2| SGPR | BITS_32 | 52 , "amdgpu_cdna2"); +DEF_REGISTER(s53, Arch_amdgpu_cdna2| SGPR | BITS_32 | 53 , "amdgpu_cdna2"); +DEF_REGISTER(s54, Arch_amdgpu_cdna2| SGPR | BITS_32 | 54 , "amdgpu_cdna2"); +DEF_REGISTER(s55, Arch_amdgpu_cdna2| SGPR | BITS_32 | 55 , "amdgpu_cdna2"); +DEF_REGISTER(s56, Arch_amdgpu_cdna2| SGPR | BITS_32 | 56 , "amdgpu_cdna2"); +DEF_REGISTER(s57, Arch_amdgpu_cdna2| SGPR | BITS_32 | 57 , "amdgpu_cdna2"); +DEF_REGISTER(s58, Arch_amdgpu_cdna2| SGPR | BITS_32 | 58 , "amdgpu_cdna2"); +DEF_REGISTER(s59, Arch_amdgpu_cdna2| SGPR | BITS_32 | 59 , "amdgpu_cdna2"); +DEF_REGISTER(s60, Arch_amdgpu_cdna2| SGPR | BITS_32 | 60 , "amdgpu_cdna2"); +DEF_REGISTER(s61, Arch_amdgpu_cdna2| SGPR | BITS_32 | 61 , "amdgpu_cdna2"); +DEF_REGISTER(s62, Arch_amdgpu_cdna2| SGPR | BITS_32 | 62 , "amdgpu_cdna2"); +DEF_REGISTER(s63, Arch_amdgpu_cdna2| SGPR | BITS_32 | 63 , "amdgpu_cdna2"); +DEF_REGISTER(s64, Arch_amdgpu_cdna2| SGPR | BITS_32 | 64 , "amdgpu_cdna2"); +DEF_REGISTER(s65, Arch_amdgpu_cdna2| SGPR | BITS_32 | 65 , "amdgpu_cdna2"); +DEF_REGISTER(s66, Arch_amdgpu_cdna2| SGPR | BITS_32 | 66 , "amdgpu_cdna2"); +DEF_REGISTER(s67, Arch_amdgpu_cdna2| SGPR | BITS_32 | 67 , "amdgpu_cdna2"); +DEF_REGISTER(s68, Arch_amdgpu_cdna2| SGPR | BITS_32 | 68 , "amdgpu_cdna2"); +DEF_REGISTER(s69, Arch_amdgpu_cdna2| SGPR | BITS_32 | 69 , "amdgpu_cdna2"); +DEF_REGISTER(s70, Arch_amdgpu_cdna2| SGPR | BITS_32 | 70 , "amdgpu_cdna2"); +DEF_REGISTER(s71, Arch_amdgpu_cdna2| SGPR | BITS_32 | 71 , "amdgpu_cdna2"); +DEF_REGISTER(s72, Arch_amdgpu_cdna2| SGPR | BITS_32 | 72 , "amdgpu_cdna2"); +DEF_REGISTER(s73, Arch_amdgpu_cdna2| SGPR | BITS_32 | 73 , "amdgpu_cdna2"); +DEF_REGISTER(s74, Arch_amdgpu_cdna2| SGPR | BITS_32 | 74 , "amdgpu_cdna2"); +DEF_REGISTER(s75, Arch_amdgpu_cdna2| SGPR | BITS_32 | 75 , "amdgpu_cdna2"); +DEF_REGISTER(s76, Arch_amdgpu_cdna2| SGPR | BITS_32 | 76 , "amdgpu_cdna2"); +DEF_REGISTER(s77, Arch_amdgpu_cdna2| SGPR | BITS_32 | 77 , "amdgpu_cdna2"); +DEF_REGISTER(s78, Arch_amdgpu_cdna2| SGPR | BITS_32 | 78 , "amdgpu_cdna2"); +DEF_REGISTER(s79, Arch_amdgpu_cdna2| SGPR | BITS_32 | 79 , "amdgpu_cdna2"); +DEF_REGISTER(s80, Arch_amdgpu_cdna2| SGPR | BITS_32 | 80 , "amdgpu_cdna2"); +DEF_REGISTER(s81, Arch_amdgpu_cdna2| SGPR | BITS_32 | 81 , "amdgpu_cdna2"); +DEF_REGISTER(s82, Arch_amdgpu_cdna2| SGPR | BITS_32 | 82 , "amdgpu_cdna2"); +DEF_REGISTER(s83, Arch_amdgpu_cdna2| SGPR | BITS_32 | 83 , "amdgpu_cdna2"); +DEF_REGISTER(s84, Arch_amdgpu_cdna2| SGPR | BITS_32 | 84 , "amdgpu_cdna2"); +DEF_REGISTER(s85, Arch_amdgpu_cdna2| SGPR | BITS_32 | 85 , "amdgpu_cdna2"); +DEF_REGISTER(s86, Arch_amdgpu_cdna2| SGPR | BITS_32 | 86 , "amdgpu_cdna2"); +DEF_REGISTER(s87, Arch_amdgpu_cdna2| SGPR | BITS_32 | 87 , "amdgpu_cdna2"); +DEF_REGISTER(s88, Arch_amdgpu_cdna2| SGPR | BITS_32 | 88 , "amdgpu_cdna2"); +DEF_REGISTER(s89, Arch_amdgpu_cdna2| SGPR | BITS_32 | 89 , "amdgpu_cdna2"); +DEF_REGISTER(s90, Arch_amdgpu_cdna2| SGPR | BITS_32 | 90 , "amdgpu_cdna2"); +DEF_REGISTER(s91, Arch_amdgpu_cdna2| SGPR | BITS_32 | 91 , "amdgpu_cdna2"); +DEF_REGISTER(s92, Arch_amdgpu_cdna2| SGPR | BITS_32 | 92 , "amdgpu_cdna2"); +DEF_REGISTER(s93, Arch_amdgpu_cdna2| SGPR | BITS_32 | 93 , "amdgpu_cdna2"); +DEF_REGISTER(s94, Arch_amdgpu_cdna2| SGPR | BITS_32 | 94 , "amdgpu_cdna2"); +DEF_REGISTER(s95, Arch_amdgpu_cdna2| SGPR | BITS_32 | 95 , "amdgpu_cdna2"); +DEF_REGISTER(s96, Arch_amdgpu_cdna2| SGPR | BITS_32 | 96 , "amdgpu_cdna2"); +DEF_REGISTER(s97, Arch_amdgpu_cdna2| SGPR | BITS_32 | 97 , "amdgpu_cdna2"); +DEF_REGISTER(s98, Arch_amdgpu_cdna2| SGPR | BITS_32 | 98 , "amdgpu_cdna2"); +DEF_REGISTER(s99, Arch_amdgpu_cdna2| SGPR | BITS_32 | 99 , "amdgpu_cdna2"); +DEF_REGISTER(s100, Arch_amdgpu_cdna2| SGPR | BITS_32 | 100 , "amdgpu_cdna2"); +DEF_REGISTER(s101, Arch_amdgpu_cdna2| SGPR | BITS_32 | 101 , "amdgpu_cdna2"); +DEF_REGISTER(v0, Arch_amdgpu_cdna2| VGPR | BITS_32 | 0 , "amdgpu_cdna2"); +DEF_REGISTER(v1, Arch_amdgpu_cdna2| VGPR | BITS_32 | 1 , "amdgpu_cdna2"); +DEF_REGISTER(v2, Arch_amdgpu_cdna2| VGPR | BITS_32 | 2 , "amdgpu_cdna2"); +DEF_REGISTER(v3, Arch_amdgpu_cdna2| VGPR | BITS_32 | 3 , "amdgpu_cdna2"); +DEF_REGISTER(v4, Arch_amdgpu_cdna2| VGPR | BITS_32 | 4 , "amdgpu_cdna2"); +DEF_REGISTER(v5, Arch_amdgpu_cdna2| VGPR | BITS_32 | 5 , "amdgpu_cdna2"); +DEF_REGISTER(v6, Arch_amdgpu_cdna2| VGPR | BITS_32 | 6 , "amdgpu_cdna2"); +DEF_REGISTER(v7, Arch_amdgpu_cdna2| VGPR | BITS_32 | 7 , "amdgpu_cdna2"); +DEF_REGISTER(v8, Arch_amdgpu_cdna2| VGPR | BITS_32 | 8 , "amdgpu_cdna2"); +DEF_REGISTER(v9, Arch_amdgpu_cdna2| VGPR | BITS_32 | 9 , "amdgpu_cdna2"); +DEF_REGISTER(v10, Arch_amdgpu_cdna2| VGPR | BITS_32 | 10 , "amdgpu_cdna2"); +DEF_REGISTER(v11, Arch_amdgpu_cdna2| VGPR | BITS_32 | 11 , "amdgpu_cdna2"); +DEF_REGISTER(v12, Arch_amdgpu_cdna2| VGPR | BITS_32 | 12 , "amdgpu_cdna2"); +DEF_REGISTER(v13, Arch_amdgpu_cdna2| VGPR | BITS_32 | 13 , "amdgpu_cdna2"); +DEF_REGISTER(v14, Arch_amdgpu_cdna2| VGPR | BITS_32 | 14 , "amdgpu_cdna2"); +DEF_REGISTER(v15, Arch_amdgpu_cdna2| VGPR | BITS_32 | 15 , "amdgpu_cdna2"); +DEF_REGISTER(v16, Arch_amdgpu_cdna2| VGPR | BITS_32 | 16 , "amdgpu_cdna2"); +DEF_REGISTER(v17, Arch_amdgpu_cdna2| VGPR | BITS_32 | 17 , "amdgpu_cdna2"); +DEF_REGISTER(v18, Arch_amdgpu_cdna2| VGPR | BITS_32 | 18 , "amdgpu_cdna2"); +DEF_REGISTER(v19, Arch_amdgpu_cdna2| VGPR | BITS_32 | 19 , "amdgpu_cdna2"); +DEF_REGISTER(v20, Arch_amdgpu_cdna2| VGPR | BITS_32 | 20 , "amdgpu_cdna2"); +DEF_REGISTER(v21, Arch_amdgpu_cdna2| VGPR | BITS_32 | 21 , "amdgpu_cdna2"); +DEF_REGISTER(v22, Arch_amdgpu_cdna2| VGPR | BITS_32 | 22 , "amdgpu_cdna2"); +DEF_REGISTER(v23, Arch_amdgpu_cdna2| VGPR | BITS_32 | 23 , "amdgpu_cdna2"); +DEF_REGISTER(v24, Arch_amdgpu_cdna2| VGPR | BITS_32 | 24 , "amdgpu_cdna2"); +DEF_REGISTER(v25, Arch_amdgpu_cdna2| VGPR | BITS_32 | 25 , "amdgpu_cdna2"); +DEF_REGISTER(v26, Arch_amdgpu_cdna2| VGPR | BITS_32 | 26 , "amdgpu_cdna2"); +DEF_REGISTER(v27, Arch_amdgpu_cdna2| VGPR | BITS_32 | 27 , "amdgpu_cdna2"); +DEF_REGISTER(v28, Arch_amdgpu_cdna2| VGPR | BITS_32 | 28 , "amdgpu_cdna2"); +DEF_REGISTER(v29, Arch_amdgpu_cdna2| VGPR | BITS_32 | 29 , "amdgpu_cdna2"); +DEF_REGISTER(v30, Arch_amdgpu_cdna2| VGPR | BITS_32 | 30 , "amdgpu_cdna2"); +DEF_REGISTER(v31, Arch_amdgpu_cdna2| VGPR | BITS_32 | 31 , "amdgpu_cdna2"); +DEF_REGISTER(v32, Arch_amdgpu_cdna2| VGPR | BITS_32 | 32 , "amdgpu_cdna2"); +DEF_REGISTER(v33, Arch_amdgpu_cdna2| VGPR | BITS_32 | 33 , "amdgpu_cdna2"); +DEF_REGISTER(v34, Arch_amdgpu_cdna2| VGPR | BITS_32 | 34 , "amdgpu_cdna2"); +DEF_REGISTER(v35, Arch_amdgpu_cdna2| VGPR | BITS_32 | 35 , "amdgpu_cdna2"); +DEF_REGISTER(v36, Arch_amdgpu_cdna2| VGPR | BITS_32 | 36 , "amdgpu_cdna2"); +DEF_REGISTER(v37, Arch_amdgpu_cdna2| VGPR | BITS_32 | 37 , "amdgpu_cdna2"); +DEF_REGISTER(v38, Arch_amdgpu_cdna2| VGPR | BITS_32 | 38 , "amdgpu_cdna2"); +DEF_REGISTER(v39, Arch_amdgpu_cdna2| VGPR | BITS_32 | 39 , "amdgpu_cdna2"); +DEF_REGISTER(v40, Arch_amdgpu_cdna2| VGPR | BITS_32 | 40 , "amdgpu_cdna2"); +DEF_REGISTER(v41, Arch_amdgpu_cdna2| VGPR | BITS_32 | 41 , "amdgpu_cdna2"); +DEF_REGISTER(v42, Arch_amdgpu_cdna2| VGPR | BITS_32 | 42 , "amdgpu_cdna2"); +DEF_REGISTER(v43, Arch_amdgpu_cdna2| VGPR | BITS_32 | 43 , "amdgpu_cdna2"); +DEF_REGISTER(v44, Arch_amdgpu_cdna2| VGPR | BITS_32 | 44 , "amdgpu_cdna2"); +DEF_REGISTER(v45, Arch_amdgpu_cdna2| VGPR | BITS_32 | 45 , "amdgpu_cdna2"); +DEF_REGISTER(v46, Arch_amdgpu_cdna2| VGPR | BITS_32 | 46 , "amdgpu_cdna2"); +DEF_REGISTER(v47, Arch_amdgpu_cdna2| VGPR | BITS_32 | 47 , "amdgpu_cdna2"); +DEF_REGISTER(v48, Arch_amdgpu_cdna2| VGPR | BITS_32 | 48 , "amdgpu_cdna2"); +DEF_REGISTER(v49, Arch_amdgpu_cdna2| VGPR | BITS_32 | 49 , "amdgpu_cdna2"); +DEF_REGISTER(v50, Arch_amdgpu_cdna2| VGPR | BITS_32 | 50 , "amdgpu_cdna2"); +DEF_REGISTER(v51, Arch_amdgpu_cdna2| VGPR | BITS_32 | 51 , "amdgpu_cdna2"); +DEF_REGISTER(v52, Arch_amdgpu_cdna2| VGPR | BITS_32 | 52 , "amdgpu_cdna2"); +DEF_REGISTER(v53, Arch_amdgpu_cdna2| VGPR | BITS_32 | 53 , "amdgpu_cdna2"); +DEF_REGISTER(v54, Arch_amdgpu_cdna2| VGPR | BITS_32 | 54 , "amdgpu_cdna2"); +DEF_REGISTER(v55, Arch_amdgpu_cdna2| VGPR | BITS_32 | 55 , "amdgpu_cdna2"); +DEF_REGISTER(v56, Arch_amdgpu_cdna2| VGPR | BITS_32 | 56 , "amdgpu_cdna2"); +DEF_REGISTER(v57, Arch_amdgpu_cdna2| VGPR | BITS_32 | 57 , "amdgpu_cdna2"); +DEF_REGISTER(v58, Arch_amdgpu_cdna2| VGPR | BITS_32 | 58 , "amdgpu_cdna2"); +DEF_REGISTER(v59, Arch_amdgpu_cdna2| VGPR | BITS_32 | 59 , "amdgpu_cdna2"); +DEF_REGISTER(v60, Arch_amdgpu_cdna2| VGPR | BITS_32 | 60 , "amdgpu_cdna2"); +DEF_REGISTER(v61, Arch_amdgpu_cdna2| VGPR | BITS_32 | 61 , "amdgpu_cdna2"); +DEF_REGISTER(v62, Arch_amdgpu_cdna2| VGPR | BITS_32 | 62 , "amdgpu_cdna2"); +DEF_REGISTER(v63, Arch_amdgpu_cdna2| VGPR | BITS_32 | 63 , "amdgpu_cdna2"); +DEF_REGISTER(v64, Arch_amdgpu_cdna2| VGPR | BITS_32 | 64 , "amdgpu_cdna2"); +DEF_REGISTER(v65, Arch_amdgpu_cdna2| VGPR | BITS_32 | 65 , "amdgpu_cdna2"); +DEF_REGISTER(v66, Arch_amdgpu_cdna2| VGPR | BITS_32 | 66 , "amdgpu_cdna2"); +DEF_REGISTER(v67, Arch_amdgpu_cdna2| VGPR | BITS_32 | 67 , "amdgpu_cdna2"); +DEF_REGISTER(v68, Arch_amdgpu_cdna2| VGPR | BITS_32 | 68 , "amdgpu_cdna2"); +DEF_REGISTER(v69, Arch_amdgpu_cdna2| VGPR | BITS_32 | 69 , "amdgpu_cdna2"); +DEF_REGISTER(v70, Arch_amdgpu_cdna2| VGPR | BITS_32 | 70 , "amdgpu_cdna2"); +DEF_REGISTER(v71, Arch_amdgpu_cdna2| VGPR | BITS_32 | 71 , "amdgpu_cdna2"); +DEF_REGISTER(v72, Arch_amdgpu_cdna2| VGPR | BITS_32 | 72 , "amdgpu_cdna2"); +DEF_REGISTER(v73, Arch_amdgpu_cdna2| VGPR | BITS_32 | 73 , "amdgpu_cdna2"); +DEF_REGISTER(v74, Arch_amdgpu_cdna2| VGPR | BITS_32 | 74 , "amdgpu_cdna2"); +DEF_REGISTER(v75, Arch_amdgpu_cdna2| VGPR | BITS_32 | 75 , "amdgpu_cdna2"); +DEF_REGISTER(v76, Arch_amdgpu_cdna2| VGPR | BITS_32 | 76 , "amdgpu_cdna2"); +DEF_REGISTER(v77, Arch_amdgpu_cdna2| VGPR | BITS_32 | 77 , "amdgpu_cdna2"); +DEF_REGISTER(v78, Arch_amdgpu_cdna2| VGPR | BITS_32 | 78 , "amdgpu_cdna2"); +DEF_REGISTER(v79, Arch_amdgpu_cdna2| VGPR | BITS_32 | 79 , "amdgpu_cdna2"); +DEF_REGISTER(v80, Arch_amdgpu_cdna2| VGPR | BITS_32 | 80 , "amdgpu_cdna2"); +DEF_REGISTER(v81, Arch_amdgpu_cdna2| VGPR | BITS_32 | 81 , "amdgpu_cdna2"); +DEF_REGISTER(v82, Arch_amdgpu_cdna2| VGPR | BITS_32 | 82 , "amdgpu_cdna2"); +DEF_REGISTER(v83, Arch_amdgpu_cdna2| VGPR | BITS_32 | 83 , "amdgpu_cdna2"); +DEF_REGISTER(v84, Arch_amdgpu_cdna2| VGPR | BITS_32 | 84 , "amdgpu_cdna2"); +DEF_REGISTER(v85, Arch_amdgpu_cdna2| VGPR | BITS_32 | 85 , "amdgpu_cdna2"); +DEF_REGISTER(v86, Arch_amdgpu_cdna2| VGPR | BITS_32 | 86 , "amdgpu_cdna2"); +DEF_REGISTER(v87, Arch_amdgpu_cdna2| VGPR | BITS_32 | 87 , "amdgpu_cdna2"); +DEF_REGISTER(v88, Arch_amdgpu_cdna2| VGPR | BITS_32 | 88 , "amdgpu_cdna2"); +DEF_REGISTER(v89, Arch_amdgpu_cdna2| VGPR | BITS_32 | 89 , "amdgpu_cdna2"); +DEF_REGISTER(v90, Arch_amdgpu_cdna2| VGPR | BITS_32 | 90 , "amdgpu_cdna2"); +DEF_REGISTER(v91, Arch_amdgpu_cdna2| VGPR | BITS_32 | 91 , "amdgpu_cdna2"); +DEF_REGISTER(v92, Arch_amdgpu_cdna2| VGPR | BITS_32 | 92 , "amdgpu_cdna2"); +DEF_REGISTER(v93, Arch_amdgpu_cdna2| VGPR | BITS_32 | 93 , "amdgpu_cdna2"); +DEF_REGISTER(v94, Arch_amdgpu_cdna2| VGPR | BITS_32 | 94 , "amdgpu_cdna2"); +DEF_REGISTER(v95, Arch_amdgpu_cdna2| VGPR | BITS_32 | 95 , "amdgpu_cdna2"); +DEF_REGISTER(v96, Arch_amdgpu_cdna2| VGPR | BITS_32 | 96 , "amdgpu_cdna2"); +DEF_REGISTER(v97, Arch_amdgpu_cdna2| VGPR | BITS_32 | 97 , "amdgpu_cdna2"); +DEF_REGISTER(v98, Arch_amdgpu_cdna2| VGPR | BITS_32 | 98 , "amdgpu_cdna2"); +DEF_REGISTER(v99, Arch_amdgpu_cdna2| VGPR | BITS_32 | 99 , "amdgpu_cdna2"); +DEF_REGISTER(v100, Arch_amdgpu_cdna2| VGPR | BITS_32 | 100 , "amdgpu_cdna2"); +DEF_REGISTER(v101, Arch_amdgpu_cdna2| VGPR | BITS_32 | 101 , "amdgpu_cdna2"); +DEF_REGISTER(v102, Arch_amdgpu_cdna2| VGPR | BITS_32 | 102 , "amdgpu_cdna2"); +DEF_REGISTER(v103, Arch_amdgpu_cdna2| VGPR | BITS_32 | 103 , "amdgpu_cdna2"); +DEF_REGISTER(v104, Arch_amdgpu_cdna2| VGPR | BITS_32 | 104 , "amdgpu_cdna2"); +DEF_REGISTER(v105, Arch_amdgpu_cdna2| VGPR | BITS_32 | 105 , "amdgpu_cdna2"); +DEF_REGISTER(v106, Arch_amdgpu_cdna2| VGPR | BITS_32 | 106 , "amdgpu_cdna2"); +DEF_REGISTER(v107, Arch_amdgpu_cdna2| VGPR | BITS_32 | 107 , "amdgpu_cdna2"); +DEF_REGISTER(v108, Arch_amdgpu_cdna2| VGPR | BITS_32 | 108 , "amdgpu_cdna2"); +DEF_REGISTER(v109, Arch_amdgpu_cdna2| VGPR | BITS_32 | 109 , "amdgpu_cdna2"); +DEF_REGISTER(v110, Arch_amdgpu_cdna2| VGPR | BITS_32 | 110 , "amdgpu_cdna2"); +DEF_REGISTER(v111, Arch_amdgpu_cdna2| VGPR | BITS_32 | 111 , "amdgpu_cdna2"); +DEF_REGISTER(v112, Arch_amdgpu_cdna2| VGPR | BITS_32 | 112 , "amdgpu_cdna2"); +DEF_REGISTER(v113, Arch_amdgpu_cdna2| VGPR | BITS_32 | 113 , "amdgpu_cdna2"); +DEF_REGISTER(v114, Arch_amdgpu_cdna2| VGPR | BITS_32 | 114 , "amdgpu_cdna2"); +DEF_REGISTER(v115, Arch_amdgpu_cdna2| VGPR | BITS_32 | 115 , "amdgpu_cdna2"); +DEF_REGISTER(v116, Arch_amdgpu_cdna2| VGPR | BITS_32 | 116 , "amdgpu_cdna2"); +DEF_REGISTER(v117, Arch_amdgpu_cdna2| VGPR | BITS_32 | 117 , "amdgpu_cdna2"); +DEF_REGISTER(v118, Arch_amdgpu_cdna2| VGPR | BITS_32 | 118 , "amdgpu_cdna2"); +DEF_REGISTER(v119, Arch_amdgpu_cdna2| VGPR | BITS_32 | 119 , "amdgpu_cdna2"); +DEF_REGISTER(v120, Arch_amdgpu_cdna2| VGPR | BITS_32 | 120 , "amdgpu_cdna2"); +DEF_REGISTER(v121, Arch_amdgpu_cdna2| VGPR | BITS_32 | 121 , "amdgpu_cdna2"); +DEF_REGISTER(v122, Arch_amdgpu_cdna2| VGPR | BITS_32 | 122 , "amdgpu_cdna2"); +DEF_REGISTER(v123, Arch_amdgpu_cdna2| VGPR | BITS_32 | 123 , "amdgpu_cdna2"); +DEF_REGISTER(v124, Arch_amdgpu_cdna2| VGPR | BITS_32 | 124 , "amdgpu_cdna2"); +DEF_REGISTER(v125, Arch_amdgpu_cdna2| VGPR | BITS_32 | 125 , "amdgpu_cdna2"); +DEF_REGISTER(v126, Arch_amdgpu_cdna2| VGPR | BITS_32 | 126 , "amdgpu_cdna2"); +DEF_REGISTER(v127, Arch_amdgpu_cdna2| VGPR | BITS_32 | 127 , "amdgpu_cdna2"); +DEF_REGISTER(v128, Arch_amdgpu_cdna2| VGPR | BITS_32 | 128 , "amdgpu_cdna2"); +DEF_REGISTER(v129, Arch_amdgpu_cdna2| VGPR | BITS_32 | 129 , "amdgpu_cdna2"); +DEF_REGISTER(v130, Arch_amdgpu_cdna2| VGPR | BITS_32 | 130 , "amdgpu_cdna2"); +DEF_REGISTER(v131, Arch_amdgpu_cdna2| VGPR | BITS_32 | 131 , "amdgpu_cdna2"); +DEF_REGISTER(v132, Arch_amdgpu_cdna2| VGPR | BITS_32 | 132 , "amdgpu_cdna2"); +DEF_REGISTER(v133, Arch_amdgpu_cdna2| VGPR | BITS_32 | 133 , "amdgpu_cdna2"); +DEF_REGISTER(v134, Arch_amdgpu_cdna2| VGPR | BITS_32 | 134 , "amdgpu_cdna2"); +DEF_REGISTER(v135, Arch_amdgpu_cdna2| VGPR | BITS_32 | 135 , "amdgpu_cdna2"); +DEF_REGISTER(v136, Arch_amdgpu_cdna2| VGPR | BITS_32 | 136 , "amdgpu_cdna2"); +DEF_REGISTER(v137, Arch_amdgpu_cdna2| VGPR | BITS_32 | 137 , "amdgpu_cdna2"); +DEF_REGISTER(v138, Arch_amdgpu_cdna2| VGPR | BITS_32 | 138 , "amdgpu_cdna2"); +DEF_REGISTER(v139, Arch_amdgpu_cdna2| VGPR | BITS_32 | 139 , "amdgpu_cdna2"); +DEF_REGISTER(v140, Arch_amdgpu_cdna2| VGPR | BITS_32 | 140 , "amdgpu_cdna2"); +DEF_REGISTER(v141, Arch_amdgpu_cdna2| VGPR | BITS_32 | 141 , "amdgpu_cdna2"); +DEF_REGISTER(v142, Arch_amdgpu_cdna2| VGPR | BITS_32 | 142 , "amdgpu_cdna2"); +DEF_REGISTER(v143, Arch_amdgpu_cdna2| VGPR | BITS_32 | 143 , "amdgpu_cdna2"); +DEF_REGISTER(v144, Arch_amdgpu_cdna2| VGPR | BITS_32 | 144 , "amdgpu_cdna2"); +DEF_REGISTER(v145, Arch_amdgpu_cdna2| VGPR | BITS_32 | 145 , "amdgpu_cdna2"); +DEF_REGISTER(v146, Arch_amdgpu_cdna2| VGPR | BITS_32 | 146 , "amdgpu_cdna2"); +DEF_REGISTER(v147, Arch_amdgpu_cdna2| VGPR | BITS_32 | 147 , "amdgpu_cdna2"); +DEF_REGISTER(v148, Arch_amdgpu_cdna2| VGPR | BITS_32 | 148 , "amdgpu_cdna2"); +DEF_REGISTER(v149, Arch_amdgpu_cdna2| VGPR | BITS_32 | 149 , "amdgpu_cdna2"); +DEF_REGISTER(v150, Arch_amdgpu_cdna2| VGPR | BITS_32 | 150 , "amdgpu_cdna2"); +DEF_REGISTER(v151, Arch_amdgpu_cdna2| VGPR | BITS_32 | 151 , "amdgpu_cdna2"); +DEF_REGISTER(v152, Arch_amdgpu_cdna2| VGPR | BITS_32 | 152 , "amdgpu_cdna2"); +DEF_REGISTER(v153, Arch_amdgpu_cdna2| VGPR | BITS_32 | 153 , "amdgpu_cdna2"); +DEF_REGISTER(v154, Arch_amdgpu_cdna2| VGPR | BITS_32 | 154 , "amdgpu_cdna2"); +DEF_REGISTER(v155, Arch_amdgpu_cdna2| VGPR | BITS_32 | 155 , "amdgpu_cdna2"); +DEF_REGISTER(v156, Arch_amdgpu_cdna2| VGPR | BITS_32 | 156 , "amdgpu_cdna2"); +DEF_REGISTER(v157, Arch_amdgpu_cdna2| VGPR | BITS_32 | 157 , "amdgpu_cdna2"); +DEF_REGISTER(v158, Arch_amdgpu_cdna2| VGPR | BITS_32 | 158 , "amdgpu_cdna2"); +DEF_REGISTER(v159, Arch_amdgpu_cdna2| VGPR | BITS_32 | 159 , "amdgpu_cdna2"); +DEF_REGISTER(v160, Arch_amdgpu_cdna2| VGPR | BITS_32 | 160 , "amdgpu_cdna2"); +DEF_REGISTER(v161, Arch_amdgpu_cdna2| VGPR | BITS_32 | 161 , "amdgpu_cdna2"); +DEF_REGISTER(v162, Arch_amdgpu_cdna2| VGPR | BITS_32 | 162 , "amdgpu_cdna2"); +DEF_REGISTER(v163, Arch_amdgpu_cdna2| VGPR | BITS_32 | 163 , "amdgpu_cdna2"); +DEF_REGISTER(v164, Arch_amdgpu_cdna2| VGPR | BITS_32 | 164 , "amdgpu_cdna2"); +DEF_REGISTER(v165, Arch_amdgpu_cdna2| VGPR | BITS_32 | 165 , "amdgpu_cdna2"); +DEF_REGISTER(v166, Arch_amdgpu_cdna2| VGPR | BITS_32 | 166 , "amdgpu_cdna2"); +DEF_REGISTER(v167, Arch_amdgpu_cdna2| VGPR | BITS_32 | 167 , "amdgpu_cdna2"); +DEF_REGISTER(v168, Arch_amdgpu_cdna2| VGPR | BITS_32 | 168 , "amdgpu_cdna2"); +DEF_REGISTER(v169, Arch_amdgpu_cdna2| VGPR | BITS_32 | 169 , "amdgpu_cdna2"); +DEF_REGISTER(v170, Arch_amdgpu_cdna2| VGPR | BITS_32 | 170 , "amdgpu_cdna2"); +DEF_REGISTER(v171, Arch_amdgpu_cdna2| VGPR | BITS_32 | 171 , "amdgpu_cdna2"); +DEF_REGISTER(v172, Arch_amdgpu_cdna2| VGPR | BITS_32 | 172 , "amdgpu_cdna2"); +DEF_REGISTER(v173, Arch_amdgpu_cdna2| VGPR | BITS_32 | 173 , "amdgpu_cdna2"); +DEF_REGISTER(v174, Arch_amdgpu_cdna2| VGPR | BITS_32 | 174 , "amdgpu_cdna2"); +DEF_REGISTER(v175, Arch_amdgpu_cdna2| VGPR | BITS_32 | 175 , "amdgpu_cdna2"); +DEF_REGISTER(v176, Arch_amdgpu_cdna2| VGPR | BITS_32 | 176 , "amdgpu_cdna2"); +DEF_REGISTER(v177, Arch_amdgpu_cdna2| VGPR | BITS_32 | 177 , "amdgpu_cdna2"); +DEF_REGISTER(v178, Arch_amdgpu_cdna2| VGPR | BITS_32 | 178 , "amdgpu_cdna2"); +DEF_REGISTER(v179, Arch_amdgpu_cdna2| VGPR | BITS_32 | 179 , "amdgpu_cdna2"); +DEF_REGISTER(v180, Arch_amdgpu_cdna2| VGPR | BITS_32 | 180 , "amdgpu_cdna2"); +DEF_REGISTER(v181, Arch_amdgpu_cdna2| VGPR | BITS_32 | 181 , "amdgpu_cdna2"); +DEF_REGISTER(v182, Arch_amdgpu_cdna2| VGPR | BITS_32 | 182 , "amdgpu_cdna2"); +DEF_REGISTER(v183, Arch_amdgpu_cdna2| VGPR | BITS_32 | 183 , "amdgpu_cdna2"); +DEF_REGISTER(v184, Arch_amdgpu_cdna2| VGPR | BITS_32 | 184 , "amdgpu_cdna2"); +DEF_REGISTER(v185, Arch_amdgpu_cdna2| VGPR | BITS_32 | 185 , "amdgpu_cdna2"); +DEF_REGISTER(v186, Arch_amdgpu_cdna2| VGPR | BITS_32 | 186 , "amdgpu_cdna2"); +DEF_REGISTER(v187, Arch_amdgpu_cdna2| VGPR | BITS_32 | 187 , "amdgpu_cdna2"); +DEF_REGISTER(v188, Arch_amdgpu_cdna2| VGPR | BITS_32 | 188 , "amdgpu_cdna2"); +DEF_REGISTER(v189, Arch_amdgpu_cdna2| VGPR | BITS_32 | 189 , "amdgpu_cdna2"); +DEF_REGISTER(v190, Arch_amdgpu_cdna2| VGPR | BITS_32 | 190 , "amdgpu_cdna2"); +DEF_REGISTER(v191, Arch_amdgpu_cdna2| VGPR | BITS_32 | 191 , "amdgpu_cdna2"); +DEF_REGISTER(v192, Arch_amdgpu_cdna2| VGPR | BITS_32 | 192 , "amdgpu_cdna2"); +DEF_REGISTER(v193, Arch_amdgpu_cdna2| VGPR | BITS_32 | 193 , "amdgpu_cdna2"); +DEF_REGISTER(v194, Arch_amdgpu_cdna2| VGPR | BITS_32 | 194 , "amdgpu_cdna2"); +DEF_REGISTER(v195, Arch_amdgpu_cdna2| VGPR | BITS_32 | 195 , "amdgpu_cdna2"); +DEF_REGISTER(v196, Arch_amdgpu_cdna2| VGPR | BITS_32 | 196 , "amdgpu_cdna2"); +DEF_REGISTER(v197, Arch_amdgpu_cdna2| VGPR | BITS_32 | 197 , "amdgpu_cdna2"); +DEF_REGISTER(v198, Arch_amdgpu_cdna2| VGPR | BITS_32 | 198 , "amdgpu_cdna2"); +DEF_REGISTER(v199, Arch_amdgpu_cdna2| VGPR | BITS_32 | 199 , "amdgpu_cdna2"); +DEF_REGISTER(v200, Arch_amdgpu_cdna2| VGPR | BITS_32 | 200 , "amdgpu_cdna2"); +DEF_REGISTER(v201, Arch_amdgpu_cdna2| VGPR | BITS_32 | 201 , "amdgpu_cdna2"); +DEF_REGISTER(v202, Arch_amdgpu_cdna2| VGPR | BITS_32 | 202 , "amdgpu_cdna2"); +DEF_REGISTER(v203, Arch_amdgpu_cdna2| VGPR | BITS_32 | 203 , "amdgpu_cdna2"); +DEF_REGISTER(v204, Arch_amdgpu_cdna2| VGPR | BITS_32 | 204 , "amdgpu_cdna2"); +DEF_REGISTER(v205, Arch_amdgpu_cdna2| VGPR | BITS_32 | 205 , "amdgpu_cdna2"); +DEF_REGISTER(v206, Arch_amdgpu_cdna2| VGPR | BITS_32 | 206 , "amdgpu_cdna2"); +DEF_REGISTER(v207, Arch_amdgpu_cdna2| VGPR | BITS_32 | 207 , "amdgpu_cdna2"); +DEF_REGISTER(v208, Arch_amdgpu_cdna2| VGPR | BITS_32 | 208 , "amdgpu_cdna2"); +DEF_REGISTER(v209, Arch_amdgpu_cdna2| VGPR | BITS_32 | 209 , "amdgpu_cdna2"); +DEF_REGISTER(v210, Arch_amdgpu_cdna2| VGPR | BITS_32 | 210 , "amdgpu_cdna2"); +DEF_REGISTER(v211, Arch_amdgpu_cdna2| VGPR | BITS_32 | 211 , "amdgpu_cdna2"); +DEF_REGISTER(v212, Arch_amdgpu_cdna2| VGPR | BITS_32 | 212 , "amdgpu_cdna2"); +DEF_REGISTER(v213, Arch_amdgpu_cdna2| VGPR | BITS_32 | 213 , "amdgpu_cdna2"); +DEF_REGISTER(v214, Arch_amdgpu_cdna2| VGPR | BITS_32 | 214 , "amdgpu_cdna2"); +DEF_REGISTER(v215, Arch_amdgpu_cdna2| VGPR | BITS_32 | 215 , "amdgpu_cdna2"); +DEF_REGISTER(v216, Arch_amdgpu_cdna2| VGPR | BITS_32 | 216 , "amdgpu_cdna2"); +DEF_REGISTER(v217, Arch_amdgpu_cdna2| VGPR | BITS_32 | 217 , "amdgpu_cdna2"); +DEF_REGISTER(v218, Arch_amdgpu_cdna2| VGPR | BITS_32 | 218 , "amdgpu_cdna2"); +DEF_REGISTER(v219, Arch_amdgpu_cdna2| VGPR | BITS_32 | 219 , "amdgpu_cdna2"); +DEF_REGISTER(v220, Arch_amdgpu_cdna2| VGPR | BITS_32 | 220 , "amdgpu_cdna2"); +DEF_REGISTER(v221, Arch_amdgpu_cdna2| VGPR | BITS_32 | 221 , "amdgpu_cdna2"); +DEF_REGISTER(v222, Arch_amdgpu_cdna2| VGPR | BITS_32 | 222 , "amdgpu_cdna2"); +DEF_REGISTER(v223, Arch_amdgpu_cdna2| VGPR | BITS_32 | 223 , "amdgpu_cdna2"); +DEF_REGISTER(v224, Arch_amdgpu_cdna2| VGPR | BITS_32 | 224 , "amdgpu_cdna2"); +DEF_REGISTER(v225, Arch_amdgpu_cdna2| VGPR | BITS_32 | 225 , "amdgpu_cdna2"); +DEF_REGISTER(v226, Arch_amdgpu_cdna2| VGPR | BITS_32 | 226 , "amdgpu_cdna2"); +DEF_REGISTER(v227, Arch_amdgpu_cdna2| VGPR | BITS_32 | 227 , "amdgpu_cdna2"); +DEF_REGISTER(v228, Arch_amdgpu_cdna2| VGPR | BITS_32 | 228 , "amdgpu_cdna2"); +DEF_REGISTER(v229, Arch_amdgpu_cdna2| VGPR | BITS_32 | 229 , "amdgpu_cdna2"); +DEF_REGISTER(v230, Arch_amdgpu_cdna2| VGPR | BITS_32 | 230 , "amdgpu_cdna2"); +DEF_REGISTER(v231, Arch_amdgpu_cdna2| VGPR | BITS_32 | 231 , "amdgpu_cdna2"); +DEF_REGISTER(v232, Arch_amdgpu_cdna2| VGPR | BITS_32 | 232 , "amdgpu_cdna2"); +DEF_REGISTER(v233, Arch_amdgpu_cdna2| VGPR | BITS_32 | 233 , "amdgpu_cdna2"); +DEF_REGISTER(v234, Arch_amdgpu_cdna2| VGPR | BITS_32 | 234 , "amdgpu_cdna2"); +DEF_REGISTER(v235, Arch_amdgpu_cdna2| VGPR | BITS_32 | 235 , "amdgpu_cdna2"); +DEF_REGISTER(v236, Arch_amdgpu_cdna2| VGPR | BITS_32 | 236 , "amdgpu_cdna2"); +DEF_REGISTER(v237, Arch_amdgpu_cdna2| VGPR | BITS_32 | 237 , "amdgpu_cdna2"); +DEF_REGISTER(v238, Arch_amdgpu_cdna2| VGPR | BITS_32 | 238 , "amdgpu_cdna2"); +DEF_REGISTER(v239, Arch_amdgpu_cdna2| VGPR | BITS_32 | 239 , "amdgpu_cdna2"); +DEF_REGISTER(v240, Arch_amdgpu_cdna2| VGPR | BITS_32 | 240 , "amdgpu_cdna2"); +DEF_REGISTER(v241, Arch_amdgpu_cdna2| VGPR | BITS_32 | 241 , "amdgpu_cdna2"); +DEF_REGISTER(v242, Arch_amdgpu_cdna2| VGPR | BITS_32 | 242 , "amdgpu_cdna2"); +DEF_REGISTER(v243, Arch_amdgpu_cdna2| VGPR | BITS_32 | 243 , "amdgpu_cdna2"); +DEF_REGISTER(v244, Arch_amdgpu_cdna2| VGPR | BITS_32 | 244 , "amdgpu_cdna2"); +DEF_REGISTER(v245, Arch_amdgpu_cdna2| VGPR | BITS_32 | 245 , "amdgpu_cdna2"); +DEF_REGISTER(v246, Arch_amdgpu_cdna2| VGPR | BITS_32 | 246 , "amdgpu_cdna2"); +DEF_REGISTER(v247, Arch_amdgpu_cdna2| VGPR | BITS_32 | 247 , "amdgpu_cdna2"); +DEF_REGISTER(v248, Arch_amdgpu_cdna2| VGPR | BITS_32 | 248 , "amdgpu_cdna2"); +DEF_REGISTER(v249, Arch_amdgpu_cdna2| VGPR | BITS_32 | 249 , "amdgpu_cdna2"); +DEF_REGISTER(v250, Arch_amdgpu_cdna2| VGPR | BITS_32 | 250 , "amdgpu_cdna2"); +DEF_REGISTER(v251, Arch_amdgpu_cdna2| VGPR | BITS_32 | 251 , "amdgpu_cdna2"); +DEF_REGISTER(v252, Arch_amdgpu_cdna2| VGPR | BITS_32 | 252 , "amdgpu_cdna2"); +DEF_REGISTER(v253, Arch_amdgpu_cdna2| VGPR | BITS_32 | 253 , "amdgpu_cdna2"); +DEF_REGISTER(v254, Arch_amdgpu_cdna2| VGPR | BITS_32 | 254 , "amdgpu_cdna2"); +DEF_REGISTER(v255, Arch_amdgpu_cdna2| VGPR | BITS_32 | 255 , "amdgpu_cdna2"); +DEF_REGISTER(acc0, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 0 , "amdgpu_cdna2"); +DEF_REGISTER(acc1, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 1 , "amdgpu_cdna2"); +DEF_REGISTER(acc2, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 2 , "amdgpu_cdna2"); +DEF_REGISTER(acc3, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 3 , "amdgpu_cdna2"); +DEF_REGISTER(acc4, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 4 , "amdgpu_cdna2"); +DEF_REGISTER(acc5, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 5 , "amdgpu_cdna2"); +DEF_REGISTER(acc6, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 6 , "amdgpu_cdna2"); +DEF_REGISTER(acc7, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 7 , "amdgpu_cdna2"); +DEF_REGISTER(acc8, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 8 , "amdgpu_cdna2"); +DEF_REGISTER(acc9, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 9 , "amdgpu_cdna2"); +DEF_REGISTER(acc10, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 10 , "amdgpu_cdna2"); +DEF_REGISTER(acc11, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 11 , "amdgpu_cdna2"); +DEF_REGISTER(acc12, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 12 , "amdgpu_cdna2"); +DEF_REGISTER(acc13, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 13 , "amdgpu_cdna2"); +DEF_REGISTER(acc14, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 14 , "amdgpu_cdna2"); +DEF_REGISTER(acc15, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 15 , "amdgpu_cdna2"); +DEF_REGISTER(acc16, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 16 , "amdgpu_cdna2"); +DEF_REGISTER(acc17, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 17 , "amdgpu_cdna2"); +DEF_REGISTER(acc18, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 18 , "amdgpu_cdna2"); +DEF_REGISTER(acc19, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 19 , "amdgpu_cdna2"); +DEF_REGISTER(acc20, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 20 , "amdgpu_cdna2"); +DEF_REGISTER(acc21, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 21 , "amdgpu_cdna2"); +DEF_REGISTER(acc22, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 22 , "amdgpu_cdna2"); +DEF_REGISTER(acc23, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 23 , "amdgpu_cdna2"); +DEF_REGISTER(acc24, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 24 , "amdgpu_cdna2"); +DEF_REGISTER(acc25, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 25 , "amdgpu_cdna2"); +DEF_REGISTER(acc26, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 26 , "amdgpu_cdna2"); +DEF_REGISTER(acc27, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 27 , "amdgpu_cdna2"); +DEF_REGISTER(acc28, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 28 , "amdgpu_cdna2"); +DEF_REGISTER(acc29, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 29 , "amdgpu_cdna2"); +DEF_REGISTER(acc30, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 30 , "amdgpu_cdna2"); +DEF_REGISTER(acc31, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 31 , "amdgpu_cdna2"); +DEF_REGISTER(acc32, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 32 , "amdgpu_cdna2"); +DEF_REGISTER(acc33, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 33 , "amdgpu_cdna2"); +DEF_REGISTER(acc34, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 34 , "amdgpu_cdna2"); +DEF_REGISTER(acc35, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 35 , "amdgpu_cdna2"); +DEF_REGISTER(acc36, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 36 , "amdgpu_cdna2"); +DEF_REGISTER(acc37, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 37 , "amdgpu_cdna2"); +DEF_REGISTER(acc38, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 38 , "amdgpu_cdna2"); +DEF_REGISTER(acc39, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 39 , "amdgpu_cdna2"); +DEF_REGISTER(acc40, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 40 , "amdgpu_cdna2"); +DEF_REGISTER(acc41, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 41 , "amdgpu_cdna2"); +DEF_REGISTER(acc42, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 42 , "amdgpu_cdna2"); +DEF_REGISTER(acc43, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 43 , "amdgpu_cdna2"); +DEF_REGISTER(acc44, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 44 , "amdgpu_cdna2"); +DEF_REGISTER(acc45, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 45 , "amdgpu_cdna2"); +DEF_REGISTER(acc46, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 46 , "amdgpu_cdna2"); +DEF_REGISTER(acc47, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 47 , "amdgpu_cdna2"); +DEF_REGISTER(acc48, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 48 , "amdgpu_cdna2"); +DEF_REGISTER(acc49, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 49 , "amdgpu_cdna2"); +DEF_REGISTER(acc50, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 50 , "amdgpu_cdna2"); +DEF_REGISTER(acc51, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 51 , "amdgpu_cdna2"); +DEF_REGISTER(acc52, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 52 , "amdgpu_cdna2"); +DEF_REGISTER(acc53, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 53 , "amdgpu_cdna2"); +DEF_REGISTER(acc54, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 54 , "amdgpu_cdna2"); +DEF_REGISTER(acc55, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 55 , "amdgpu_cdna2"); +DEF_REGISTER(acc56, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 56 , "amdgpu_cdna2"); +DEF_REGISTER(acc57, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 57 , "amdgpu_cdna2"); +DEF_REGISTER(acc58, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 58 , "amdgpu_cdna2"); +DEF_REGISTER(acc59, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 59 , "amdgpu_cdna2"); +DEF_REGISTER(acc60, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 60 , "amdgpu_cdna2"); +DEF_REGISTER(acc61, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 61 , "amdgpu_cdna2"); +DEF_REGISTER(acc62, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 62 , "amdgpu_cdna2"); +DEF_REGISTER(acc63, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 63 , "amdgpu_cdna2"); +DEF_REGISTER(acc64, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 64 , "amdgpu_cdna2"); +DEF_REGISTER(acc65, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 65 , "amdgpu_cdna2"); +DEF_REGISTER(acc66, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 66 , "amdgpu_cdna2"); +DEF_REGISTER(acc67, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 67 , "amdgpu_cdna2"); +DEF_REGISTER(acc68, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 68 , "amdgpu_cdna2"); +DEF_REGISTER(acc69, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 69 , "amdgpu_cdna2"); +DEF_REGISTER(acc70, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 70 , "amdgpu_cdna2"); +DEF_REGISTER(acc71, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 71 , "amdgpu_cdna2"); +DEF_REGISTER(acc72, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 72 , "amdgpu_cdna2"); +DEF_REGISTER(acc73, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 73 , "amdgpu_cdna2"); +DEF_REGISTER(acc74, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 74 , "amdgpu_cdna2"); +DEF_REGISTER(acc75, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 75 , "amdgpu_cdna2"); +DEF_REGISTER(acc76, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 76 , "amdgpu_cdna2"); +DEF_REGISTER(acc77, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 77 , "amdgpu_cdna2"); +DEF_REGISTER(acc78, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 78 , "amdgpu_cdna2"); +DEF_REGISTER(acc79, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 79 , "amdgpu_cdna2"); +DEF_REGISTER(acc80, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 80 , "amdgpu_cdna2"); +DEF_REGISTER(acc81, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 81 , "amdgpu_cdna2"); +DEF_REGISTER(acc82, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 82 , "amdgpu_cdna2"); +DEF_REGISTER(acc83, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 83 , "amdgpu_cdna2"); +DEF_REGISTER(acc84, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 84 , "amdgpu_cdna2"); +DEF_REGISTER(acc85, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 85 , "amdgpu_cdna2"); +DEF_REGISTER(acc86, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 86 , "amdgpu_cdna2"); +DEF_REGISTER(acc87, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 87 , "amdgpu_cdna2"); +DEF_REGISTER(acc88, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 88 , "amdgpu_cdna2"); +DEF_REGISTER(acc89, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 89 , "amdgpu_cdna2"); +DEF_REGISTER(acc90, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 90 , "amdgpu_cdna2"); +DEF_REGISTER(acc91, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 91 , "amdgpu_cdna2"); +DEF_REGISTER(acc92, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 92 , "amdgpu_cdna2"); +DEF_REGISTER(acc93, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 93 , "amdgpu_cdna2"); +DEF_REGISTER(acc94, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 94 , "amdgpu_cdna2"); +DEF_REGISTER(acc95, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 95 , "amdgpu_cdna2"); +DEF_REGISTER(acc96, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 96 , "amdgpu_cdna2"); +DEF_REGISTER(acc97, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 97 , "amdgpu_cdna2"); +DEF_REGISTER(acc98, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 98 , "amdgpu_cdna2"); +DEF_REGISTER(acc99, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 99 , "amdgpu_cdna2"); +DEF_REGISTER(acc100, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 100 , "amdgpu_cdna2"); +DEF_REGISTER(acc101, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 101 , "amdgpu_cdna2"); +DEF_REGISTER(acc102, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 102 , "amdgpu_cdna2"); +DEF_REGISTER(acc103, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 103 , "amdgpu_cdna2"); +DEF_REGISTER(acc104, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 104 , "amdgpu_cdna2"); +DEF_REGISTER(acc105, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 105 , "amdgpu_cdna2"); +DEF_REGISTER(acc106, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 106 , "amdgpu_cdna2"); +DEF_REGISTER(acc107, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 107 , "amdgpu_cdna2"); +DEF_REGISTER(acc108, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 108 , "amdgpu_cdna2"); +DEF_REGISTER(acc109, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 109 , "amdgpu_cdna2"); +DEF_REGISTER(acc110, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 110 , "amdgpu_cdna2"); +DEF_REGISTER(acc111, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 111 , "amdgpu_cdna2"); +DEF_REGISTER(acc112, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 112 , "amdgpu_cdna2"); +DEF_REGISTER(acc113, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 113 , "amdgpu_cdna2"); +DEF_REGISTER(acc114, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 114 , "amdgpu_cdna2"); +DEF_REGISTER(acc115, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 115 , "amdgpu_cdna2"); +DEF_REGISTER(acc116, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 116 , "amdgpu_cdna2"); +DEF_REGISTER(acc117, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 117 , "amdgpu_cdna2"); +DEF_REGISTER(acc118, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 118 , "amdgpu_cdna2"); +DEF_REGISTER(acc119, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 119 , "amdgpu_cdna2"); +DEF_REGISTER(acc120, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 120 , "amdgpu_cdna2"); +DEF_REGISTER(acc121, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 121 , "amdgpu_cdna2"); +DEF_REGISTER(acc122, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 122 , "amdgpu_cdna2"); +DEF_REGISTER(acc123, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 123 , "amdgpu_cdna2"); +DEF_REGISTER(acc124, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 124 , "amdgpu_cdna2"); +DEF_REGISTER(acc125, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 125 , "amdgpu_cdna2"); +DEF_REGISTER(acc126, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 126 , "amdgpu_cdna2"); +DEF_REGISTER(acc127, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 127 , "amdgpu_cdna2"); +DEF_REGISTER(acc128, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 128 , "amdgpu_cdna2"); +DEF_REGISTER(acc129, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 129 , "amdgpu_cdna2"); +DEF_REGISTER(acc130, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 130 , "amdgpu_cdna2"); +DEF_REGISTER(acc131, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 131 , "amdgpu_cdna2"); +DEF_REGISTER(acc132, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 132 , "amdgpu_cdna2"); +DEF_REGISTER(acc133, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 133 , "amdgpu_cdna2"); +DEF_REGISTER(acc134, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 134 , "amdgpu_cdna2"); +DEF_REGISTER(acc135, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 135 , "amdgpu_cdna2"); +DEF_REGISTER(acc136, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 136 , "amdgpu_cdna2"); +DEF_REGISTER(acc137, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 137 , "amdgpu_cdna2"); +DEF_REGISTER(acc138, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 138 , "amdgpu_cdna2"); +DEF_REGISTER(acc139, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 139 , "amdgpu_cdna2"); +DEF_REGISTER(acc140, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 140 , "amdgpu_cdna2"); +DEF_REGISTER(acc141, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 141 , "amdgpu_cdna2"); +DEF_REGISTER(acc142, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 142 , "amdgpu_cdna2"); +DEF_REGISTER(acc143, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 143 , "amdgpu_cdna2"); +DEF_REGISTER(acc144, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 144 , "amdgpu_cdna2"); +DEF_REGISTER(acc145, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 145 , "amdgpu_cdna2"); +DEF_REGISTER(acc146, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 146 , "amdgpu_cdna2"); +DEF_REGISTER(acc147, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 147 , "amdgpu_cdna2"); +DEF_REGISTER(acc148, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 148 , "amdgpu_cdna2"); +DEF_REGISTER(acc149, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 149 , "amdgpu_cdna2"); +DEF_REGISTER(acc150, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 150 , "amdgpu_cdna2"); +DEF_REGISTER(acc151, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 151 , "amdgpu_cdna2"); +DEF_REGISTER(acc152, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 152 , "amdgpu_cdna2"); +DEF_REGISTER(acc153, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 153 , "amdgpu_cdna2"); +DEF_REGISTER(acc154, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 154 , "amdgpu_cdna2"); +DEF_REGISTER(acc155, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 155 , "amdgpu_cdna2"); +DEF_REGISTER(acc156, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 156 , "amdgpu_cdna2"); +DEF_REGISTER(acc157, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 157 , "amdgpu_cdna2"); +DEF_REGISTER(acc158, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 158 , "amdgpu_cdna2"); +DEF_REGISTER(acc159, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 159 , "amdgpu_cdna2"); +DEF_REGISTER(acc160, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 160 , "amdgpu_cdna2"); +DEF_REGISTER(acc161, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 161 , "amdgpu_cdna2"); +DEF_REGISTER(acc162, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 162 , "amdgpu_cdna2"); +DEF_REGISTER(acc163, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 163 , "amdgpu_cdna2"); +DEF_REGISTER(acc164, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 164 , "amdgpu_cdna2"); +DEF_REGISTER(acc165, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 165 , "amdgpu_cdna2"); +DEF_REGISTER(acc166, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 166 , "amdgpu_cdna2"); +DEF_REGISTER(acc167, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 167 , "amdgpu_cdna2"); +DEF_REGISTER(acc168, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 168 , "amdgpu_cdna2"); +DEF_REGISTER(acc169, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 169 , "amdgpu_cdna2"); +DEF_REGISTER(acc170, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 170 , "amdgpu_cdna2"); +DEF_REGISTER(acc171, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 171 , "amdgpu_cdna2"); +DEF_REGISTER(acc172, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 172 , "amdgpu_cdna2"); +DEF_REGISTER(acc173, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 173 , "amdgpu_cdna2"); +DEF_REGISTER(acc174, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 174 , "amdgpu_cdna2"); +DEF_REGISTER(acc175, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 175 , "amdgpu_cdna2"); +DEF_REGISTER(acc176, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 176 , "amdgpu_cdna2"); +DEF_REGISTER(acc177, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 177 , "amdgpu_cdna2"); +DEF_REGISTER(acc178, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 178 , "amdgpu_cdna2"); +DEF_REGISTER(acc179, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 179 , "amdgpu_cdna2"); +DEF_REGISTER(acc180, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 180 , "amdgpu_cdna2"); +DEF_REGISTER(acc181, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 181 , "amdgpu_cdna2"); +DEF_REGISTER(acc182, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 182 , "amdgpu_cdna2"); +DEF_REGISTER(acc183, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 183 , "amdgpu_cdna2"); +DEF_REGISTER(acc184, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 184 , "amdgpu_cdna2"); +DEF_REGISTER(acc185, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 185 , "amdgpu_cdna2"); +DEF_REGISTER(acc186, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 186 , "amdgpu_cdna2"); +DEF_REGISTER(acc187, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 187 , "amdgpu_cdna2"); +DEF_REGISTER(acc188, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 188 , "amdgpu_cdna2"); +DEF_REGISTER(acc189, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 189 , "amdgpu_cdna2"); +DEF_REGISTER(acc190, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 190 , "amdgpu_cdna2"); +DEF_REGISTER(acc191, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 191 , "amdgpu_cdna2"); +DEF_REGISTER(acc192, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 192 , "amdgpu_cdna2"); +DEF_REGISTER(acc193, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 193 , "amdgpu_cdna2"); +DEF_REGISTER(acc194, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 194 , "amdgpu_cdna2"); +DEF_REGISTER(acc195, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 195 , "amdgpu_cdna2"); +DEF_REGISTER(acc196, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 196 , "amdgpu_cdna2"); +DEF_REGISTER(acc197, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 197 , "amdgpu_cdna2"); +DEF_REGISTER(acc198, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 198 , "amdgpu_cdna2"); +DEF_REGISTER(acc199, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 199 , "amdgpu_cdna2"); +DEF_REGISTER(acc200, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 200 , "amdgpu_cdna2"); +DEF_REGISTER(acc201, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 201 , "amdgpu_cdna2"); +DEF_REGISTER(acc202, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 202 , "amdgpu_cdna2"); +DEF_REGISTER(acc203, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 203 , "amdgpu_cdna2"); +DEF_REGISTER(acc204, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 204 , "amdgpu_cdna2"); +DEF_REGISTER(acc205, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 205 , "amdgpu_cdna2"); +DEF_REGISTER(acc206, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 206 , "amdgpu_cdna2"); +DEF_REGISTER(acc207, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 207 , "amdgpu_cdna2"); +DEF_REGISTER(acc208, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 208 , "amdgpu_cdna2"); +DEF_REGISTER(acc209, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 209 , "amdgpu_cdna2"); +DEF_REGISTER(acc210, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 210 , "amdgpu_cdna2"); +DEF_REGISTER(acc211, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 211 , "amdgpu_cdna2"); +DEF_REGISTER(acc212, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 212 , "amdgpu_cdna2"); +DEF_REGISTER(acc213, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 213 , "amdgpu_cdna2"); +DEF_REGISTER(acc214, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 214 , "amdgpu_cdna2"); +DEF_REGISTER(acc215, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 215 , "amdgpu_cdna2"); +DEF_REGISTER(acc216, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 216 , "amdgpu_cdna2"); +DEF_REGISTER(acc217, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 217 , "amdgpu_cdna2"); +DEF_REGISTER(acc218, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 218 , "amdgpu_cdna2"); +DEF_REGISTER(acc219, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 219 , "amdgpu_cdna2"); +DEF_REGISTER(acc220, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 220 , "amdgpu_cdna2"); +DEF_REGISTER(acc221, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 221 , "amdgpu_cdna2"); +DEF_REGISTER(acc222, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 222 , "amdgpu_cdna2"); +DEF_REGISTER(acc223, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 223 , "amdgpu_cdna2"); +DEF_REGISTER(acc224, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 224 , "amdgpu_cdna2"); +DEF_REGISTER(acc225, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 225 , "amdgpu_cdna2"); +DEF_REGISTER(acc226, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 226 , "amdgpu_cdna2"); +DEF_REGISTER(acc227, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 227 , "amdgpu_cdna2"); +DEF_REGISTER(acc228, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 228 , "amdgpu_cdna2"); +DEF_REGISTER(acc229, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 229 , "amdgpu_cdna2"); +DEF_REGISTER(acc230, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 230 , "amdgpu_cdna2"); +DEF_REGISTER(acc231, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 231 , "amdgpu_cdna2"); +DEF_REGISTER(acc232, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 232 , "amdgpu_cdna2"); +DEF_REGISTER(acc233, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 233 , "amdgpu_cdna2"); +DEF_REGISTER(acc234, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 234 , "amdgpu_cdna2"); +DEF_REGISTER(acc235, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 235 , "amdgpu_cdna2"); +DEF_REGISTER(acc236, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 236 , "amdgpu_cdna2"); +DEF_REGISTER(acc237, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 237 , "amdgpu_cdna2"); +DEF_REGISTER(acc238, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 238 , "amdgpu_cdna2"); +DEF_REGISTER(acc239, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 239 , "amdgpu_cdna2"); +DEF_REGISTER(acc240, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 240 , "amdgpu_cdna2"); +DEF_REGISTER(acc241, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 241 , "amdgpu_cdna2"); +DEF_REGISTER(acc242, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 242 , "amdgpu_cdna2"); +DEF_REGISTER(acc243, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 243 , "amdgpu_cdna2"); +DEF_REGISTER(acc244, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 244 , "amdgpu_cdna2"); +DEF_REGISTER(acc245, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 245 , "amdgpu_cdna2"); +DEF_REGISTER(acc246, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 246 , "amdgpu_cdna2"); +DEF_REGISTER(acc247, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 247 , "amdgpu_cdna2"); +DEF_REGISTER(acc248, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 248 , "amdgpu_cdna2"); +DEF_REGISTER(acc249, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 249 , "amdgpu_cdna2"); +DEF_REGISTER(acc250, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 250 , "amdgpu_cdna2"); +DEF_REGISTER(acc251, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 251 , "amdgpu_cdna2"); +DEF_REGISTER(acc252, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 252 , "amdgpu_cdna2"); +DEF_REGISTER(acc253, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 253 , "amdgpu_cdna2"); +DEF_REGISTER(acc254, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 254 , "amdgpu_cdna2"); +DEF_REGISTER(acc255, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 255 , "amdgpu_cdna2"); +#endif diff --git a/common/h/amdgpu_cdna2_op_table.h b/common/h/amdgpu_cdna2_op_table.h new file mode 100644 index 0000000000..90eb1cb315 --- /dev/null +++ b/common/h/amdgpu_cdna2_op_table.h @@ -0,0 +1,1135 @@ +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD, +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F32, +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F64, +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_AND, +amdgpu_cdna2_op_BUFFER_ATOMIC_AND_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_DEC, +amdgpu_cdna2_op_BUFFER_ATOMIC_DEC_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_INC, +amdgpu_cdna2_op_BUFFER_ATOMIC_INC_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_MAX_F64, +amdgpu_cdna2_op_BUFFER_ATOMIC_MIN_F64, +amdgpu_cdna2_op_BUFFER_ATOMIC_OR, +amdgpu_cdna2_op_BUFFER_ATOMIC_OR_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_PK_ADD_F16, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_SUB, +amdgpu_cdna2_op_BUFFER_ATOMIC_SUB_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP, +amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_XOR, +amdgpu_cdna2_op_BUFFER_ATOMIC_XOR_X2, +amdgpu_cdna2_op_BUFFER_INVL2, +amdgpu_cdna2_op_BUFFER_LOAD_DWORD, +amdgpu_cdna2_op_BUFFER_LOAD_DWORDX2, +amdgpu_cdna2_op_BUFFER_LOAD_DWORDX3, +amdgpu_cdna2_op_BUFFER_LOAD_DWORDX4, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_HI_X, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_X, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XY, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_X, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XY, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZ, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZW, +amdgpu_cdna2_op_BUFFER_LOAD_SBYTE, +amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16, +amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16, +amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_BUFFER_LOAD_SSHORT, +amdgpu_cdna2_op_BUFFER_LOAD_UBYTE, +amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16, +amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_BUFFER_LOAD_USHORT, +amdgpu_cdna2_op_BUFFER_STORE_BYTE, +amdgpu_cdna2_op_BUFFER_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_BUFFER_STORE_DWORD, +amdgpu_cdna2_op_BUFFER_STORE_DWORDX2, +amdgpu_cdna2_op_BUFFER_STORE_DWORDX3, +amdgpu_cdna2_op_BUFFER_STORE_DWORDX4, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_HI_X, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_X, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XY, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_X, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XY, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZ, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZW, +amdgpu_cdna2_op_BUFFER_STORE_LDS_DWORD, +amdgpu_cdna2_op_BUFFER_STORE_SHORT, +amdgpu_cdna2_op_BUFFER_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_BUFFER_WBINVL1, +amdgpu_cdna2_op_BUFFER_WBINVL1_VOL, +amdgpu_cdna2_op_BUFFER_WBL2, +amdgpu_cdna2_op_DS_ADD_F32, +amdgpu_cdna2_op_DS_ADD_F64, +amdgpu_cdna2_op_DS_ADD_RTN_F32, +amdgpu_cdna2_op_DS_ADD_RTN_F64, +amdgpu_cdna2_op_DS_ADD_RTN_U32, +amdgpu_cdna2_op_DS_ADD_RTN_U64, +amdgpu_cdna2_op_DS_ADD_U32, +amdgpu_cdna2_op_DS_ADD_U64, +amdgpu_cdna2_op_DS_AND_B32, +amdgpu_cdna2_op_DS_AND_B64, +amdgpu_cdna2_op_DS_AND_RTN_B32, +amdgpu_cdna2_op_DS_AND_RTN_B64, +amdgpu_cdna2_op_DS_APPEND, +amdgpu_cdna2_op_DS_BPERMUTE_B32, +amdgpu_cdna2_op_DS_CMPST_B32, +amdgpu_cdna2_op_DS_CMPST_B64, +amdgpu_cdna2_op_DS_CMPST_F32, +amdgpu_cdna2_op_DS_CMPST_F64, +amdgpu_cdna2_op_DS_CMPST_RTN_B32, +amdgpu_cdna2_op_DS_CMPST_RTN_B64, +amdgpu_cdna2_op_DS_CMPST_RTN_F32, +amdgpu_cdna2_op_DS_CMPST_RTN_F64, +amdgpu_cdna2_op_DS_CONDXCHG32_RTN_B64, +amdgpu_cdna2_op_DS_CONSUME, +amdgpu_cdna2_op_DS_DEC_RTN_U32, +amdgpu_cdna2_op_DS_DEC_RTN_U64, +amdgpu_cdna2_op_DS_DEC_U32, +amdgpu_cdna2_op_DS_DEC_U64, +amdgpu_cdna2_op_DS_GWS_BARRIER, +amdgpu_cdna2_op_DS_GWS_INIT, +amdgpu_cdna2_op_DS_GWS_SEMA_BR, +amdgpu_cdna2_op_DS_GWS_SEMA_P, +amdgpu_cdna2_op_DS_GWS_SEMA_RELEASE_ALL, +amdgpu_cdna2_op_DS_GWS_SEMA_V, +amdgpu_cdna2_op_DS_INC_RTN_U32, +amdgpu_cdna2_op_DS_INC_RTN_U64, +amdgpu_cdna2_op_DS_INC_U32, +amdgpu_cdna2_op_DS_INC_U64, +amdgpu_cdna2_op_DS_MAX_F32, +amdgpu_cdna2_op_DS_MAX_F64, +amdgpu_cdna2_op_DS_MAX_I32, +amdgpu_cdna2_op_DS_MAX_I64, +amdgpu_cdna2_op_DS_MAX_RTN_F32, +amdgpu_cdna2_op_DS_MAX_RTN_F64, +amdgpu_cdna2_op_DS_MAX_RTN_I32, +amdgpu_cdna2_op_DS_MAX_RTN_I64, +amdgpu_cdna2_op_DS_MAX_RTN_U32, +amdgpu_cdna2_op_DS_MAX_RTN_U64, +amdgpu_cdna2_op_DS_MAX_U32, +amdgpu_cdna2_op_DS_MAX_U64, +amdgpu_cdna2_op_DS_MIN_F32, +amdgpu_cdna2_op_DS_MIN_F64, +amdgpu_cdna2_op_DS_MIN_I32, +amdgpu_cdna2_op_DS_MIN_I64, +amdgpu_cdna2_op_DS_MIN_RTN_F32, +amdgpu_cdna2_op_DS_MIN_RTN_F64, +amdgpu_cdna2_op_DS_MIN_RTN_I32, +amdgpu_cdna2_op_DS_MIN_RTN_I64, +amdgpu_cdna2_op_DS_MIN_RTN_U32, +amdgpu_cdna2_op_DS_MIN_RTN_U64, +amdgpu_cdna2_op_DS_MIN_U32, +amdgpu_cdna2_op_DS_MIN_U64, +amdgpu_cdna2_op_DS_MSKOR_B32, +amdgpu_cdna2_op_DS_MSKOR_B64, +amdgpu_cdna2_op_DS_MSKOR_RTN_B32, +amdgpu_cdna2_op_DS_MSKOR_RTN_B64, +amdgpu_cdna2_op_DS_NOP, +amdgpu_cdna2_op_DS_OR_B32, +amdgpu_cdna2_op_DS_OR_B64, +amdgpu_cdna2_op_DS_OR_RTN_B32, +amdgpu_cdna2_op_DS_OR_RTN_B64, +amdgpu_cdna2_op_DS_PERMUTE_B32, +amdgpu_cdna2_op_DS_READ2ST64_B32, +amdgpu_cdna2_op_DS_READ2ST64_B64, +amdgpu_cdna2_op_DS_READ2_B32, +amdgpu_cdna2_op_DS_READ2_B64, +amdgpu_cdna2_op_DS_READ_ADDTID_B32, +amdgpu_cdna2_op_DS_READ_B128, +amdgpu_cdna2_op_DS_READ_B32, +amdgpu_cdna2_op_DS_READ_B64, +amdgpu_cdna2_op_DS_READ_B96, +amdgpu_cdna2_op_DS_READ_I16, +amdgpu_cdna2_op_DS_READ_I8, +amdgpu_cdna2_op_DS_READ_I8_D16, +amdgpu_cdna2_op_DS_READ_I8_D16_HI, +amdgpu_cdna2_op_DS_READ_U16, +amdgpu_cdna2_op_DS_READ_U16_D16, +amdgpu_cdna2_op_DS_READ_U16_D16_HI, +amdgpu_cdna2_op_DS_READ_U8, +amdgpu_cdna2_op_DS_READ_U8_D16, +amdgpu_cdna2_op_DS_READ_U8_D16_HI, +amdgpu_cdna2_op_DS_RSUB_RTN_U32, +amdgpu_cdna2_op_DS_RSUB_RTN_U64, +amdgpu_cdna2_op_DS_RSUB_U32, +amdgpu_cdna2_op_DS_RSUB_U64, +amdgpu_cdna2_op_DS_SUB_RTN_U32, +amdgpu_cdna2_op_DS_SUB_RTN_U64, +amdgpu_cdna2_op_DS_SUB_U32, +amdgpu_cdna2_op_DS_SUB_U64, +amdgpu_cdna2_op_DS_SWIZZLE_B32, +amdgpu_cdna2_op_DS_WRAP_RTN_B32, +amdgpu_cdna2_op_DS_WRITE2ST64_B32, +amdgpu_cdna2_op_DS_WRITE2ST64_B64, +amdgpu_cdna2_op_DS_WRITE2_B32, +amdgpu_cdna2_op_DS_WRITE2_B64, +amdgpu_cdna2_op_DS_WRITE_ADDTID_B32, +amdgpu_cdna2_op_DS_WRITE_B128, +amdgpu_cdna2_op_DS_WRITE_B16, +amdgpu_cdna2_op_DS_WRITE_B16_D16_HI, +amdgpu_cdna2_op_DS_WRITE_B32, +amdgpu_cdna2_op_DS_WRITE_B64, +amdgpu_cdna2_op_DS_WRITE_B8, +amdgpu_cdna2_op_DS_WRITE_B8_D16_HI, +amdgpu_cdna2_op_DS_WRITE_B96, +amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B32, +amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B64, +amdgpu_cdna2_op_DS_WRXCHG2_RTN_B32, +amdgpu_cdna2_op_DS_WRXCHG2_RTN_B64, +amdgpu_cdna2_op_DS_WRXCHG_RTN_B32, +amdgpu_cdna2_op_DS_WRXCHG_RTN_B64, +amdgpu_cdna2_op_DS_XOR_B32, +amdgpu_cdna2_op_DS_XOR_B64, +amdgpu_cdna2_op_DS_XOR_RTN_B32, +amdgpu_cdna2_op_DS_XOR_RTN_B64, +amdgpu_cdna2_op_FLAT_ATOMIC_ADD, +amdgpu_cdna2_op_FLAT_ATOMIC_ADD_F64, +amdgpu_cdna2_op_FLAT_ATOMIC_ADD_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_AND, +amdgpu_cdna2_op_FLAT_ATOMIC_AND_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_DEC, +amdgpu_cdna2_op_FLAT_ATOMIC_DEC_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_INC, +amdgpu_cdna2_op_FLAT_ATOMIC_INC_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_MAX_F64, +amdgpu_cdna2_op_FLAT_ATOMIC_MIN_F64, +amdgpu_cdna2_op_FLAT_ATOMIC_OR, +amdgpu_cdna2_op_FLAT_ATOMIC_OR_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SMAX, +amdgpu_cdna2_op_FLAT_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SMIN, +amdgpu_cdna2_op_FLAT_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SUB, +amdgpu_cdna2_op_FLAT_ATOMIC_SUB_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SWAP, +amdgpu_cdna2_op_FLAT_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_UMAX, +amdgpu_cdna2_op_FLAT_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_UMIN, +amdgpu_cdna2_op_FLAT_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_XOR, +amdgpu_cdna2_op_FLAT_ATOMIC_XOR_X2, +amdgpu_cdna2_op_FLAT_LOAD_DWORD, +amdgpu_cdna2_op_FLAT_LOAD_DWORDX2, +amdgpu_cdna2_op_FLAT_LOAD_DWORDX3, +amdgpu_cdna2_op_FLAT_LOAD_DWORDX4, +amdgpu_cdna2_op_FLAT_LOAD_SBYTE, +amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16, +amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16, +amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_FLAT_LOAD_SSHORT, +amdgpu_cdna2_op_FLAT_LOAD_UBYTE, +amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16, +amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_FLAT_LOAD_USHORT, +amdgpu_cdna2_op_FLAT_STORE_BYTE, +amdgpu_cdna2_op_FLAT_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_FLAT_STORE_DWORD, +amdgpu_cdna2_op_FLAT_STORE_DWORDX2, +amdgpu_cdna2_op_FLAT_STORE_DWORDX3, +amdgpu_cdna2_op_FLAT_STORE_DWORDX4, +amdgpu_cdna2_op_FLAT_STORE_SHORT, +amdgpu_cdna2_op_FLAT_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F32, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F64, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_AND, +amdgpu_cdna2_op_GLOBAL_ATOMIC_AND_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC, +amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_INC, +amdgpu_cdna2_op_GLOBAL_ATOMIC_INC_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_MAX_F64, +amdgpu_cdna2_op_GLOBAL_ATOMIC_MIN_F64, +amdgpu_cdna2_op_GLOBAL_ATOMIC_OR, +amdgpu_cdna2_op_GLOBAL_ATOMIC_OR_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_PK_ADD_F16, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR, +amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR_X2, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORD, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX2, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX3, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX4, +amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE, +amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16, +amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16, +amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_GLOBAL_LOAD_SSHORT, +amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE, +amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16, +amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_GLOBAL_LOAD_USHORT, +amdgpu_cdna2_op_GLOBAL_STORE_BYTE, +amdgpu_cdna2_op_GLOBAL_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_GLOBAL_STORE_DWORD, +amdgpu_cdna2_op_GLOBAL_STORE_DWORDX2, +amdgpu_cdna2_op_GLOBAL_STORE_DWORDX3, +amdgpu_cdna2_op_GLOBAL_STORE_DWORDX4, +amdgpu_cdna2_op_GLOBAL_STORE_SHORT, +amdgpu_cdna2_op_GLOBAL_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_IMAGE_ATOMIC_ADD, +amdgpu_cdna2_op_IMAGE_ATOMIC_AND, +amdgpu_cdna2_op_IMAGE_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_IMAGE_ATOMIC_DEC, +amdgpu_cdna2_op_IMAGE_ATOMIC_INC, +amdgpu_cdna2_op_IMAGE_ATOMIC_OR, +amdgpu_cdna2_op_IMAGE_ATOMIC_SMAX, +amdgpu_cdna2_op_IMAGE_ATOMIC_SMIN, +amdgpu_cdna2_op_IMAGE_ATOMIC_SUB, +amdgpu_cdna2_op_IMAGE_ATOMIC_SWAP, +amdgpu_cdna2_op_IMAGE_ATOMIC_UMAX, +amdgpu_cdna2_op_IMAGE_ATOMIC_UMIN, +amdgpu_cdna2_op_IMAGE_ATOMIC_XOR, +amdgpu_cdna2_op_IMAGE_GET_RESINFO, +amdgpu_cdna2_op_IMAGE_LOAD, +amdgpu_cdna2_op_IMAGE_LOAD_MIP, +amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK, +amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK_SGN, +amdgpu_cdna2_op_IMAGE_LOAD_PCK, +amdgpu_cdna2_op_IMAGE_LOAD_PCK_SGN, +amdgpu_cdna2_op_IMAGE_SAMPLE, +amdgpu_cdna2_op_IMAGE_STORE, +amdgpu_cdna2_op_IMAGE_STORE_MIP, +amdgpu_cdna2_op_IMAGE_STORE_MIP_PCK, +amdgpu_cdna2_op_IMAGE_STORE_PCK, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORD, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX2, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX3, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX4, +amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE, +amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16, +amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16, +amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_SCRATCH_LOAD_SSHORT, +amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE, +amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16, +amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_SCRATCH_LOAD_USHORT, +amdgpu_cdna2_op_SCRATCH_STORE_BYTE, +amdgpu_cdna2_op_SCRATCH_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_SCRATCH_STORE_DWORD, +amdgpu_cdna2_op_SCRATCH_STORE_DWORDX2, +amdgpu_cdna2_op_SCRATCH_STORE_DWORDX3, +amdgpu_cdna2_op_SCRATCH_STORE_DWORDX4, +amdgpu_cdna2_op_SCRATCH_STORE_SHORT, +amdgpu_cdna2_op_SCRATCH_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_S_ABSDIFF_I32, +amdgpu_cdna2_op_S_ABS_I32, +amdgpu_cdna2_op_S_ADDC_U32, +amdgpu_cdna2_op_S_ADDK_I32, +amdgpu_cdna2_op_S_ADD_I32, +amdgpu_cdna2_op_S_ADD_U32, +amdgpu_cdna2_op_S_ANDN1_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ANDN1_WREXEC_B64, +amdgpu_cdna2_op_S_ANDN2_B32, +amdgpu_cdna2_op_S_ANDN2_B64, +amdgpu_cdna2_op_S_ANDN2_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ANDN2_WREXEC_B64, +amdgpu_cdna2_op_S_AND_B32, +amdgpu_cdna2_op_S_AND_B64, +amdgpu_cdna2_op_S_AND_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ASHR_I32, +amdgpu_cdna2_op_S_ASHR_I64, +amdgpu_cdna2_op_S_ATC_PROBE, +amdgpu_cdna2_op_S_ATC_PROBE_BUFFER, +amdgpu_cdna2_op_S_ATOMIC_ADD, +amdgpu_cdna2_op_S_ATOMIC_ADD_X2, +amdgpu_cdna2_op_S_ATOMIC_AND, +amdgpu_cdna2_op_S_ATOMIC_AND_X2, +amdgpu_cdna2_op_S_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_S_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_S_ATOMIC_DEC, +amdgpu_cdna2_op_S_ATOMIC_DEC_X2, +amdgpu_cdna2_op_S_ATOMIC_INC, +amdgpu_cdna2_op_S_ATOMIC_INC_X2, +amdgpu_cdna2_op_S_ATOMIC_OR, +amdgpu_cdna2_op_S_ATOMIC_OR_X2, +amdgpu_cdna2_op_S_ATOMIC_SMAX, +amdgpu_cdna2_op_S_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_S_ATOMIC_SMIN, +amdgpu_cdna2_op_S_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_S_ATOMIC_SUB, +amdgpu_cdna2_op_S_ATOMIC_SUB_X2, +amdgpu_cdna2_op_S_ATOMIC_SWAP, +amdgpu_cdna2_op_S_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_S_ATOMIC_UMAX, +amdgpu_cdna2_op_S_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_S_ATOMIC_UMIN, +amdgpu_cdna2_op_S_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_S_ATOMIC_XOR, +amdgpu_cdna2_op_S_ATOMIC_XOR_X2, +amdgpu_cdna2_op_S_BARRIER, +amdgpu_cdna2_op_S_BCNT0_I32_B32, +amdgpu_cdna2_op_S_BCNT0_I32_B64, +amdgpu_cdna2_op_S_BCNT1_I32_B32, +amdgpu_cdna2_op_S_BCNT1_I32_B64, +amdgpu_cdna2_op_S_BFE_I32, +amdgpu_cdna2_op_S_BFE_I64, +amdgpu_cdna2_op_S_BFE_U32, +amdgpu_cdna2_op_S_BFE_U64, +amdgpu_cdna2_op_S_BFM_B32, +amdgpu_cdna2_op_S_BFM_B64, +amdgpu_cdna2_op_S_BITCMP0_B32, +amdgpu_cdna2_op_S_BITCMP0_B64, +amdgpu_cdna2_op_S_BITCMP1_B32, +amdgpu_cdna2_op_S_BITCMP1_B64, +amdgpu_cdna2_op_S_BITREPLICATE_B64_B32, +amdgpu_cdna2_op_S_BITSET0_B32, +amdgpu_cdna2_op_S_BITSET0_B64, +amdgpu_cdna2_op_S_BITSET1_B32, +amdgpu_cdna2_op_S_BITSET1_B64, +amdgpu_cdna2_op_S_BRANCH, +amdgpu_cdna2_op_S_BREV_B32, +amdgpu_cdna2_op_S_BREV_B64, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR_X2, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORD, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX16, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX2, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX4, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX8, +amdgpu_cdna2_op_S_BUFFER_STORE_DWORD, +amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX2, +amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX4, +amdgpu_cdna2_op_S_CALL_B64, +amdgpu_cdna2_op_S_CBRANCH_CDBGSYS, +amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_AND_USER, +amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_OR_USER, +amdgpu_cdna2_op_S_CBRANCH_CDBGUSER, +amdgpu_cdna2_op_S_CBRANCH_EXECNZ, +amdgpu_cdna2_op_S_CBRANCH_EXECZ, +amdgpu_cdna2_op_S_CBRANCH_G_FORK, +amdgpu_cdna2_op_S_CBRANCH_I_FORK, +amdgpu_cdna2_op_S_CBRANCH_JOIN, +amdgpu_cdna2_op_S_CBRANCH_SCC0, +amdgpu_cdna2_op_S_CBRANCH_SCC1, +amdgpu_cdna2_op_S_CBRANCH_VCCNZ, +amdgpu_cdna2_op_S_CBRANCH_VCCZ, +amdgpu_cdna2_op_S_CMOVK_I32, +amdgpu_cdna2_op_S_CMOV_B32, +amdgpu_cdna2_op_S_CMOV_B64, +amdgpu_cdna2_op_S_CMPK_EQ_I32, +amdgpu_cdna2_op_S_CMPK_EQ_U32, +amdgpu_cdna2_op_S_CMPK_GE_I32, +amdgpu_cdna2_op_S_CMPK_GE_U32, +amdgpu_cdna2_op_S_CMPK_GT_I32, +amdgpu_cdna2_op_S_CMPK_GT_U32, +amdgpu_cdna2_op_S_CMPK_LE_I32, +amdgpu_cdna2_op_S_CMPK_LE_U32, +amdgpu_cdna2_op_S_CMPK_LG_I32, +amdgpu_cdna2_op_S_CMPK_LG_U32, +amdgpu_cdna2_op_S_CMPK_LT_I32, +amdgpu_cdna2_op_S_CMPK_LT_U32, +amdgpu_cdna2_op_S_CMP_EQ_I32, +amdgpu_cdna2_op_S_CMP_EQ_U32, +amdgpu_cdna2_op_S_CMP_EQ_U64, +amdgpu_cdna2_op_S_CMP_GE_I32, +amdgpu_cdna2_op_S_CMP_GE_U32, +amdgpu_cdna2_op_S_CMP_GT_I32, +amdgpu_cdna2_op_S_CMP_GT_U32, +amdgpu_cdna2_op_S_CMP_LE_I32, +amdgpu_cdna2_op_S_CMP_LE_U32, +amdgpu_cdna2_op_S_CMP_LG_I32, +amdgpu_cdna2_op_S_CMP_LG_U32, +amdgpu_cdna2_op_S_CMP_LG_U64, +amdgpu_cdna2_op_S_CMP_LT_I32, +amdgpu_cdna2_op_S_CMP_LT_U32, +amdgpu_cdna2_op_S_CSELECT_B32, +amdgpu_cdna2_op_S_CSELECT_B64, +amdgpu_cdna2_op_S_DCACHE_DISCARD, +amdgpu_cdna2_op_S_DCACHE_DISCARD_X2, +amdgpu_cdna2_op_S_DCACHE_INV, +amdgpu_cdna2_op_S_DCACHE_INV_VOL, +amdgpu_cdna2_op_S_DCACHE_WB, +amdgpu_cdna2_op_S_DCACHE_WB_VOL, +amdgpu_cdna2_op_S_DECPERFLEVEL, +amdgpu_cdna2_op_S_ENDPGM, +amdgpu_cdna2_op_S_ENDPGM_ORDERED_PS_DONE, +amdgpu_cdna2_op_S_ENDPGM_SAVED, +amdgpu_cdna2_op_S_FF0_I32_B32, +amdgpu_cdna2_op_S_FF0_I32_B64, +amdgpu_cdna2_op_S_FF1_I32_B32, +amdgpu_cdna2_op_S_FF1_I32_B64, +amdgpu_cdna2_op_S_FLBIT_I32, +amdgpu_cdna2_op_S_FLBIT_I32_B32, +amdgpu_cdna2_op_S_FLBIT_I32_B64, +amdgpu_cdna2_op_S_FLBIT_I32_I64, +amdgpu_cdna2_op_S_GETPC_B64, +amdgpu_cdna2_op_S_GETREG_B32, +amdgpu_cdna2_op_S_ICACHE_INV, +amdgpu_cdna2_op_S_INCPERFLEVEL, +amdgpu_cdna2_op_S_LOAD_DWORD, +amdgpu_cdna2_op_S_LOAD_DWORDX16, +amdgpu_cdna2_op_S_LOAD_DWORDX2, +amdgpu_cdna2_op_S_LOAD_DWORDX4, +amdgpu_cdna2_op_S_LOAD_DWORDX8, +amdgpu_cdna2_op_S_LSHL1_ADD_U32, +amdgpu_cdna2_op_S_LSHL2_ADD_U32, +amdgpu_cdna2_op_S_LSHL3_ADD_U32, +amdgpu_cdna2_op_S_LSHL4_ADD_U32, +amdgpu_cdna2_op_S_LSHL_B32, +amdgpu_cdna2_op_S_LSHL_B64, +amdgpu_cdna2_op_S_LSHR_B32, +amdgpu_cdna2_op_S_LSHR_B64, +amdgpu_cdna2_op_S_MAX_I32, +amdgpu_cdna2_op_S_MAX_U32, +amdgpu_cdna2_op_S_MEMREALTIME, +amdgpu_cdna2_op_S_MEMTIME, +amdgpu_cdna2_op_S_MIN_I32, +amdgpu_cdna2_op_S_MIN_U32, +amdgpu_cdna2_op_S_MOVK_I32, +amdgpu_cdna2_op_S_MOVRELD_B32, +amdgpu_cdna2_op_S_MOVRELD_B64, +amdgpu_cdna2_op_S_MOVRELS_B32, +amdgpu_cdna2_op_S_MOVRELS_B64, +amdgpu_cdna2_op_S_MOV_B32, +amdgpu_cdna2_op_S_MOV_B64, +amdgpu_cdna2_op_S_MULK_I32, +amdgpu_cdna2_op_S_MUL_HI_I32, +amdgpu_cdna2_op_S_MUL_HI_U32, +amdgpu_cdna2_op_S_MUL_I32, +amdgpu_cdna2_op_S_NAND_B32, +amdgpu_cdna2_op_S_NAND_B64, +amdgpu_cdna2_op_S_NAND_SAVEEXEC_B64, +amdgpu_cdna2_op_S_NOP, +amdgpu_cdna2_op_S_NOR_B32, +amdgpu_cdna2_op_S_NOR_B64, +amdgpu_cdna2_op_S_NOR_SAVEEXEC_B64, +amdgpu_cdna2_op_S_NOT_B32, +amdgpu_cdna2_op_S_NOT_B64, +amdgpu_cdna2_op_S_ORN1_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ORN2_B32, +amdgpu_cdna2_op_S_ORN2_B64, +amdgpu_cdna2_op_S_ORN2_SAVEEXEC_B64, +amdgpu_cdna2_op_S_OR_B32, +amdgpu_cdna2_op_S_OR_B64, +amdgpu_cdna2_op_S_OR_SAVEEXEC_B64, +amdgpu_cdna2_op_S_PACK_HH_B32_B16, +amdgpu_cdna2_op_S_PACK_LH_B32_B16, +amdgpu_cdna2_op_S_PACK_LL_B32_B16, +amdgpu_cdna2_op_S_QUADMASK_B32, +amdgpu_cdna2_op_S_QUADMASK_B64, +amdgpu_cdna2_op_S_RFE_B64, +amdgpu_cdna2_op_S_RFE_RESTORE_B64, +amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORD, +amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX2, +amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX4, +amdgpu_cdna2_op_S_SCRATCH_STORE_DWORD, +amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX2, +amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX4, +amdgpu_cdna2_op_S_SENDMSG, +amdgpu_cdna2_op_S_SENDMSGHALT, +amdgpu_cdna2_op_S_SETHALT, +amdgpu_cdna2_op_S_SETKILL, +amdgpu_cdna2_op_S_SETPC_B64, +amdgpu_cdna2_op_S_SETPRIO, +amdgpu_cdna2_op_S_SETREG_B32, +amdgpu_cdna2_op_S_SETREG_IMM32_B32, +amdgpu_cdna2_op_S_SETVSKIP, +amdgpu_cdna2_op_S_SET_GPR_IDX_IDX, +amdgpu_cdna2_op_S_SET_GPR_IDX_MODE, +amdgpu_cdna2_op_S_SET_GPR_IDX_OFF, +amdgpu_cdna2_op_S_SET_GPR_IDX_ON, +amdgpu_cdna2_op_S_SEXT_I32_I16, +amdgpu_cdna2_op_S_SEXT_I32_I8, +amdgpu_cdna2_op_S_SLEEP, +amdgpu_cdna2_op_S_STORE_DWORD, +amdgpu_cdna2_op_S_STORE_DWORDX2, +amdgpu_cdna2_op_S_STORE_DWORDX4, +amdgpu_cdna2_op_S_SUBB_U32, +amdgpu_cdna2_op_S_SUB_I32, +amdgpu_cdna2_op_S_SUB_U32, +amdgpu_cdna2_op_S_SWAPPC_B64, +amdgpu_cdna2_op_S_TRAP, +amdgpu_cdna2_op_S_TTRACEDATA, +amdgpu_cdna2_op_S_WAITCNT, +amdgpu_cdna2_op_S_WAKEUP, +amdgpu_cdna2_op_S_WQM_B32, +amdgpu_cdna2_op_S_WQM_B64, +amdgpu_cdna2_op_S_XNOR_B32, +amdgpu_cdna2_op_S_XNOR_B64, +amdgpu_cdna2_op_S_XNOR_SAVEEXEC_B64, +amdgpu_cdna2_op_S_XOR_B32, +amdgpu_cdna2_op_S_XOR_B64, +amdgpu_cdna2_op_S_XOR_SAVEEXEC_B64, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_X, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XY, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_X, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XY, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZ, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZW, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_X, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XY, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_X, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XY, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZ, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZW, +amdgpu_cdna2_op_V_ACCVGPR_MOV_B32, +amdgpu_cdna2_op_V_ACCVGPR_READ, +amdgpu_cdna2_op_V_ACCVGPR_WRITE, +amdgpu_cdna2_op_V_ADD3_U32, +amdgpu_cdna2_op_V_ADDC_CO_U32, +amdgpu_cdna2_op_V_ADD_CO_U32, +amdgpu_cdna2_op_V_ADD_F16, +amdgpu_cdna2_op_V_ADD_F32, +amdgpu_cdna2_op_V_ADD_F64, +amdgpu_cdna2_op_V_ADD_I16, +amdgpu_cdna2_op_V_ADD_I32, +amdgpu_cdna2_op_V_ADD_LSHL_U32, +amdgpu_cdna2_op_V_ADD_U16, +amdgpu_cdna2_op_V_ADD_U32, +amdgpu_cdna2_op_V_ALIGNBIT_B32, +amdgpu_cdna2_op_V_ALIGNBYTE_B32, +amdgpu_cdna2_op_V_AND_B32, +amdgpu_cdna2_op_V_AND_OR_B32, +amdgpu_cdna2_op_V_ASHRREV_I16, +amdgpu_cdna2_op_V_ASHRREV_I32, +amdgpu_cdna2_op_V_ASHRREV_I64, +amdgpu_cdna2_op_V_BCNT_U32_B32, +amdgpu_cdna2_op_V_BFE_I32, +amdgpu_cdna2_op_V_BFE_U32, +amdgpu_cdna2_op_V_BFI_B32, +amdgpu_cdna2_op_V_BFM_B32, +amdgpu_cdna2_op_V_BFREV_B32, +amdgpu_cdna2_op_V_CEIL_F16, +amdgpu_cdna2_op_V_CEIL_F32, +amdgpu_cdna2_op_V_CEIL_F64, +amdgpu_cdna2_op_V_CLREXCP, +amdgpu_cdna2_op_V_CMPX_CLASS_F16, +amdgpu_cdna2_op_V_CMPX_CLASS_F32, +amdgpu_cdna2_op_V_CMPX_CLASS_F64, +amdgpu_cdna2_op_V_CMPX_EQ_F16, +amdgpu_cdna2_op_V_CMPX_EQ_F32, +amdgpu_cdna2_op_V_CMPX_EQ_F64, +amdgpu_cdna2_op_V_CMPX_EQ_I16, +amdgpu_cdna2_op_V_CMPX_EQ_I32, +amdgpu_cdna2_op_V_CMPX_EQ_I64, +amdgpu_cdna2_op_V_CMPX_EQ_U16, +amdgpu_cdna2_op_V_CMPX_EQ_U32, +amdgpu_cdna2_op_V_CMPX_EQ_U64, +amdgpu_cdna2_op_V_CMPX_F_F16, +amdgpu_cdna2_op_V_CMPX_F_F32, +amdgpu_cdna2_op_V_CMPX_F_F64, +amdgpu_cdna2_op_V_CMPX_F_I16, +amdgpu_cdna2_op_V_CMPX_F_I32, +amdgpu_cdna2_op_V_CMPX_F_I64, +amdgpu_cdna2_op_V_CMPX_F_U16, +amdgpu_cdna2_op_V_CMPX_F_U32, +amdgpu_cdna2_op_V_CMPX_F_U64, +amdgpu_cdna2_op_V_CMPX_GE_F16, +amdgpu_cdna2_op_V_CMPX_GE_F32, +amdgpu_cdna2_op_V_CMPX_GE_F64, +amdgpu_cdna2_op_V_CMPX_GE_I16, +amdgpu_cdna2_op_V_CMPX_GE_I32, +amdgpu_cdna2_op_V_CMPX_GE_I64, +amdgpu_cdna2_op_V_CMPX_GE_U16, +amdgpu_cdna2_op_V_CMPX_GE_U32, +amdgpu_cdna2_op_V_CMPX_GE_U64, +amdgpu_cdna2_op_V_CMPX_GT_F16, +amdgpu_cdna2_op_V_CMPX_GT_F32, +amdgpu_cdna2_op_V_CMPX_GT_F64, +amdgpu_cdna2_op_V_CMPX_GT_I16, +amdgpu_cdna2_op_V_CMPX_GT_I32, +amdgpu_cdna2_op_V_CMPX_GT_I64, +amdgpu_cdna2_op_V_CMPX_GT_U16, +amdgpu_cdna2_op_V_CMPX_GT_U32, +amdgpu_cdna2_op_V_CMPX_GT_U64, +amdgpu_cdna2_op_V_CMPX_LE_F16, +amdgpu_cdna2_op_V_CMPX_LE_F32, +amdgpu_cdna2_op_V_CMPX_LE_F64, +amdgpu_cdna2_op_V_CMPX_LE_I16, +amdgpu_cdna2_op_V_CMPX_LE_I32, +amdgpu_cdna2_op_V_CMPX_LE_I64, +amdgpu_cdna2_op_V_CMPX_LE_U16, +amdgpu_cdna2_op_V_CMPX_LE_U32, +amdgpu_cdna2_op_V_CMPX_LE_U64, +amdgpu_cdna2_op_V_CMPX_LG_F16, +amdgpu_cdna2_op_V_CMPX_LG_F32, +amdgpu_cdna2_op_V_CMPX_LG_F64, +amdgpu_cdna2_op_V_CMPX_LT_F16, +amdgpu_cdna2_op_V_CMPX_LT_F32, +amdgpu_cdna2_op_V_CMPX_LT_F64, +amdgpu_cdna2_op_V_CMPX_LT_I16, +amdgpu_cdna2_op_V_CMPX_LT_I32, +amdgpu_cdna2_op_V_CMPX_LT_I64, +amdgpu_cdna2_op_V_CMPX_LT_U16, +amdgpu_cdna2_op_V_CMPX_LT_U32, +amdgpu_cdna2_op_V_CMPX_LT_U64, +amdgpu_cdna2_op_V_CMPX_NEQ_F16, +amdgpu_cdna2_op_V_CMPX_NEQ_F32, +amdgpu_cdna2_op_V_CMPX_NEQ_F64, +amdgpu_cdna2_op_V_CMPX_NE_I16, +amdgpu_cdna2_op_V_CMPX_NE_I32, +amdgpu_cdna2_op_V_CMPX_NE_I64, +amdgpu_cdna2_op_V_CMPX_NE_U16, +amdgpu_cdna2_op_V_CMPX_NE_U32, +amdgpu_cdna2_op_V_CMPX_NE_U64, +amdgpu_cdna2_op_V_CMPX_NGE_F16, +amdgpu_cdna2_op_V_CMPX_NGE_F32, +amdgpu_cdna2_op_V_CMPX_NGE_F64, +amdgpu_cdna2_op_V_CMPX_NGT_F16, +amdgpu_cdna2_op_V_CMPX_NGT_F32, +amdgpu_cdna2_op_V_CMPX_NGT_F64, +amdgpu_cdna2_op_V_CMPX_NLE_F16, +amdgpu_cdna2_op_V_CMPX_NLE_F32, +amdgpu_cdna2_op_V_CMPX_NLE_F64, +amdgpu_cdna2_op_V_CMPX_NLG_F16, +amdgpu_cdna2_op_V_CMPX_NLG_F32, +amdgpu_cdna2_op_V_CMPX_NLG_F64, +amdgpu_cdna2_op_V_CMPX_NLT_F16, +amdgpu_cdna2_op_V_CMPX_NLT_F32, +amdgpu_cdna2_op_V_CMPX_NLT_F64, +amdgpu_cdna2_op_V_CMPX_O_F16, +amdgpu_cdna2_op_V_CMPX_O_F32, +amdgpu_cdna2_op_V_CMPX_O_F64, +amdgpu_cdna2_op_V_CMPX_TRU_F16, +amdgpu_cdna2_op_V_CMPX_TRU_F32, +amdgpu_cdna2_op_V_CMPX_TRU_F64, +amdgpu_cdna2_op_V_CMPX_T_I16, +amdgpu_cdna2_op_V_CMPX_T_I32, +amdgpu_cdna2_op_V_CMPX_T_I64, +amdgpu_cdna2_op_V_CMPX_T_U16, +amdgpu_cdna2_op_V_CMPX_T_U32, +amdgpu_cdna2_op_V_CMPX_T_U64, +amdgpu_cdna2_op_V_CMPX_U_F16, +amdgpu_cdna2_op_V_CMPX_U_F32, +amdgpu_cdna2_op_V_CMPX_U_F64, +amdgpu_cdna2_op_V_CMP_CLASS_F16, +amdgpu_cdna2_op_V_CMP_CLASS_F32, +amdgpu_cdna2_op_V_CMP_CLASS_F64, +amdgpu_cdna2_op_V_CMP_EQ_F16, +amdgpu_cdna2_op_V_CMP_EQ_F32, +amdgpu_cdna2_op_V_CMP_EQ_F64, +amdgpu_cdna2_op_V_CMP_EQ_I16, +amdgpu_cdna2_op_V_CMP_EQ_I32, +amdgpu_cdna2_op_V_CMP_EQ_I64, +amdgpu_cdna2_op_V_CMP_EQ_U16, +amdgpu_cdna2_op_V_CMP_EQ_U32, +amdgpu_cdna2_op_V_CMP_EQ_U64, +amdgpu_cdna2_op_V_CMP_F_F16, +amdgpu_cdna2_op_V_CMP_F_F32, +amdgpu_cdna2_op_V_CMP_F_F64, +amdgpu_cdna2_op_V_CMP_F_I16, +amdgpu_cdna2_op_V_CMP_F_I32, +amdgpu_cdna2_op_V_CMP_F_I64, +amdgpu_cdna2_op_V_CMP_F_U16, +amdgpu_cdna2_op_V_CMP_F_U32, +amdgpu_cdna2_op_V_CMP_F_U64, +amdgpu_cdna2_op_V_CMP_GE_F16, +amdgpu_cdna2_op_V_CMP_GE_F32, +amdgpu_cdna2_op_V_CMP_GE_F64, +amdgpu_cdna2_op_V_CMP_GE_I16, +amdgpu_cdna2_op_V_CMP_GE_I32, +amdgpu_cdna2_op_V_CMP_GE_I64, +amdgpu_cdna2_op_V_CMP_GE_U16, +amdgpu_cdna2_op_V_CMP_GE_U32, +amdgpu_cdna2_op_V_CMP_GE_U64, +amdgpu_cdna2_op_V_CMP_GT_F16, +amdgpu_cdna2_op_V_CMP_GT_F32, +amdgpu_cdna2_op_V_CMP_GT_F64, +amdgpu_cdna2_op_V_CMP_GT_I16, +amdgpu_cdna2_op_V_CMP_GT_I32, +amdgpu_cdna2_op_V_CMP_GT_I64, +amdgpu_cdna2_op_V_CMP_GT_U16, +amdgpu_cdna2_op_V_CMP_GT_U32, +amdgpu_cdna2_op_V_CMP_GT_U64, +amdgpu_cdna2_op_V_CMP_LE_F16, +amdgpu_cdna2_op_V_CMP_LE_F32, +amdgpu_cdna2_op_V_CMP_LE_F64, +amdgpu_cdna2_op_V_CMP_LE_I16, +amdgpu_cdna2_op_V_CMP_LE_I32, +amdgpu_cdna2_op_V_CMP_LE_I64, +amdgpu_cdna2_op_V_CMP_LE_U16, +amdgpu_cdna2_op_V_CMP_LE_U32, +amdgpu_cdna2_op_V_CMP_LE_U64, +amdgpu_cdna2_op_V_CMP_LG_F16, +amdgpu_cdna2_op_V_CMP_LG_F32, +amdgpu_cdna2_op_V_CMP_LG_F64, +amdgpu_cdna2_op_V_CMP_LT_F16, +amdgpu_cdna2_op_V_CMP_LT_F32, +amdgpu_cdna2_op_V_CMP_LT_F64, +amdgpu_cdna2_op_V_CMP_LT_I16, +amdgpu_cdna2_op_V_CMP_LT_I32, +amdgpu_cdna2_op_V_CMP_LT_I64, +amdgpu_cdna2_op_V_CMP_LT_U16, +amdgpu_cdna2_op_V_CMP_LT_U32, +amdgpu_cdna2_op_V_CMP_LT_U64, +amdgpu_cdna2_op_V_CMP_NEQ_F16, +amdgpu_cdna2_op_V_CMP_NEQ_F32, +amdgpu_cdna2_op_V_CMP_NEQ_F64, +amdgpu_cdna2_op_V_CMP_NE_I16, +amdgpu_cdna2_op_V_CMP_NE_I32, +amdgpu_cdna2_op_V_CMP_NE_I64, +amdgpu_cdna2_op_V_CMP_NE_U16, +amdgpu_cdna2_op_V_CMP_NE_U32, +amdgpu_cdna2_op_V_CMP_NE_U64, +amdgpu_cdna2_op_V_CMP_NGE_F16, +amdgpu_cdna2_op_V_CMP_NGE_F32, +amdgpu_cdna2_op_V_CMP_NGE_F64, +amdgpu_cdna2_op_V_CMP_NGT_F16, +amdgpu_cdna2_op_V_CMP_NGT_F32, +amdgpu_cdna2_op_V_CMP_NGT_F64, +amdgpu_cdna2_op_V_CMP_NLE_F16, +amdgpu_cdna2_op_V_CMP_NLE_F32, +amdgpu_cdna2_op_V_CMP_NLE_F64, +amdgpu_cdna2_op_V_CMP_NLG_F16, +amdgpu_cdna2_op_V_CMP_NLG_F32, +amdgpu_cdna2_op_V_CMP_NLG_F64, +amdgpu_cdna2_op_V_CMP_NLT_F16, +amdgpu_cdna2_op_V_CMP_NLT_F32, +amdgpu_cdna2_op_V_CMP_NLT_F64, +amdgpu_cdna2_op_V_CMP_O_F16, +amdgpu_cdna2_op_V_CMP_O_F32, +amdgpu_cdna2_op_V_CMP_O_F64, +amdgpu_cdna2_op_V_CMP_TRU_F16, +amdgpu_cdna2_op_V_CMP_TRU_F32, +amdgpu_cdna2_op_V_CMP_TRU_F64, +amdgpu_cdna2_op_V_CMP_T_I16, +amdgpu_cdna2_op_V_CMP_T_I32, +amdgpu_cdna2_op_V_CMP_T_I64, +amdgpu_cdna2_op_V_CMP_T_U16, +amdgpu_cdna2_op_V_CMP_T_U32, +amdgpu_cdna2_op_V_CMP_T_U64, +amdgpu_cdna2_op_V_CMP_U_F16, +amdgpu_cdna2_op_V_CMP_U_F32, +amdgpu_cdna2_op_V_CMP_U_F64, +amdgpu_cdna2_op_V_CNDMASK_B32, +amdgpu_cdna2_op_V_COS_F16, +amdgpu_cdna2_op_V_COS_F32, +amdgpu_cdna2_op_V_CUBEID_F32, +amdgpu_cdna2_op_V_CUBEMA_F32, +amdgpu_cdna2_op_V_CUBESC_F32, +amdgpu_cdna2_op_V_CUBETC_F32, +amdgpu_cdna2_op_V_CVT_F16_F32, +amdgpu_cdna2_op_V_CVT_F16_I16, +amdgpu_cdna2_op_V_CVT_F16_U16, +amdgpu_cdna2_op_V_CVT_F32_F16, +amdgpu_cdna2_op_V_CVT_F32_F64, +amdgpu_cdna2_op_V_CVT_F32_I32, +amdgpu_cdna2_op_V_CVT_F32_U32, +amdgpu_cdna2_op_V_CVT_F32_UBYTE0, +amdgpu_cdna2_op_V_CVT_F32_UBYTE1, +amdgpu_cdna2_op_V_CVT_F32_UBYTE2, +amdgpu_cdna2_op_V_CVT_F32_UBYTE3, +amdgpu_cdna2_op_V_CVT_F64_F32, +amdgpu_cdna2_op_V_CVT_F64_I32, +amdgpu_cdna2_op_V_CVT_F64_U32, +amdgpu_cdna2_op_V_CVT_FLR_I32_F32, +amdgpu_cdna2_op_V_CVT_I16_F16, +amdgpu_cdna2_op_V_CVT_I32_F32, +amdgpu_cdna2_op_V_CVT_I32_F64, +amdgpu_cdna2_op_V_CVT_NORM_I16_F16, +amdgpu_cdna2_op_V_CVT_NORM_U16_F16, +amdgpu_cdna2_op_V_CVT_OFF_F32_I4, +amdgpu_cdna2_op_V_CVT_PKACCUM_U8_F32, +amdgpu_cdna2_op_V_CVT_PKNORM_I16_F16, +amdgpu_cdna2_op_V_CVT_PKNORM_I16_F32, +amdgpu_cdna2_op_V_CVT_PKNORM_U16_F16, +amdgpu_cdna2_op_V_CVT_PKNORM_U16_F32, +amdgpu_cdna2_op_V_CVT_PKRTZ_F16_F32, +amdgpu_cdna2_op_V_CVT_PK_I16_I32, +amdgpu_cdna2_op_V_CVT_PK_U16_U32, +amdgpu_cdna2_op_V_CVT_PK_U8_F32, +amdgpu_cdna2_op_V_CVT_RPI_I32_F32, +amdgpu_cdna2_op_V_CVT_U16_F16, +amdgpu_cdna2_op_V_CVT_U32_F32, +amdgpu_cdna2_op_V_CVT_U32_F64, +amdgpu_cdna2_op_V_DIV_FIXUP_F16, +amdgpu_cdna2_op_V_DIV_FIXUP_F32, +amdgpu_cdna2_op_V_DIV_FIXUP_F64, +amdgpu_cdna2_op_V_DIV_FIXUP_LEGACY_F16, +amdgpu_cdna2_op_V_DIV_FMAS_F32, +amdgpu_cdna2_op_V_DIV_FMAS_F64, +amdgpu_cdna2_op_V_DIV_SCALE_F32, +amdgpu_cdna2_op_V_DIV_SCALE_F64, +amdgpu_cdna2_op_V_DOT2C_F32_F16, +amdgpu_cdna2_op_V_DOT2C_I32_I16, +amdgpu_cdna2_op_V_DOT2_F32_F16, +amdgpu_cdna2_op_V_DOT2_I32_I16, +amdgpu_cdna2_op_V_DOT2_U32_U16, +amdgpu_cdna2_op_V_DOT4C_I32_I8, +amdgpu_cdna2_op_V_DOT4_I32_I8, +amdgpu_cdna2_op_V_DOT4_U32_U8, +amdgpu_cdna2_op_V_DOT8C_I32_I4, +amdgpu_cdna2_op_V_DOT8_I32_I4, +amdgpu_cdna2_op_V_DOT8_U32_U4, +amdgpu_cdna2_op_V_EXP_F16, +amdgpu_cdna2_op_V_EXP_F32, +amdgpu_cdna2_op_V_EXP_LEGACY_F32, +amdgpu_cdna2_op_V_FFBH_I32, +amdgpu_cdna2_op_V_FFBH_U32, +amdgpu_cdna2_op_V_FFBL_B32, +amdgpu_cdna2_op_V_FLOOR_F16, +amdgpu_cdna2_op_V_FLOOR_F32, +amdgpu_cdna2_op_V_FLOOR_F64, +amdgpu_cdna2_op_V_FMAC_F32, +amdgpu_cdna2_op_V_FMAC_F64, +amdgpu_cdna2_op_V_FMA_F16, +amdgpu_cdna2_op_V_FMA_F32, +amdgpu_cdna2_op_V_FMA_F64, +amdgpu_cdna2_op_V_FMA_LEGACY_F16, +amdgpu_cdna2_op_V_FRACT_F16, +amdgpu_cdna2_op_V_FRACT_F32, +amdgpu_cdna2_op_V_FRACT_F64, +amdgpu_cdna2_op_V_FREXP_EXP_I16_F16, +amdgpu_cdna2_op_V_FREXP_EXP_I32_F32, +amdgpu_cdna2_op_V_FREXP_EXP_I32_F64, +amdgpu_cdna2_op_V_FREXP_MANT_F16, +amdgpu_cdna2_op_V_FREXP_MANT_F32, +amdgpu_cdna2_op_V_FREXP_MANT_F64, +amdgpu_cdna2_op_V_LDEXP_F16, +amdgpu_cdna2_op_V_LDEXP_F32, +amdgpu_cdna2_op_V_LDEXP_F64, +amdgpu_cdna2_op_V_LERP_U8, +amdgpu_cdna2_op_V_LOG_F16, +amdgpu_cdna2_op_V_LOG_F32, +amdgpu_cdna2_op_V_LOG_LEGACY_F32, +amdgpu_cdna2_op_V_LSHLREV_B16, +amdgpu_cdna2_op_V_LSHLREV_B32, +amdgpu_cdna2_op_V_LSHLREV_B64, +amdgpu_cdna2_op_V_LSHL_ADD_U32, +amdgpu_cdna2_op_V_LSHL_OR_B32, +amdgpu_cdna2_op_V_LSHRREV_B16, +amdgpu_cdna2_op_V_LSHRREV_B32, +amdgpu_cdna2_op_V_LSHRREV_B64, +amdgpu_cdna2_op_V_MAC_F16, +amdgpu_cdna2_op_V_MAC_F32, +amdgpu_cdna2_op_V_MADAK_F16, +amdgpu_cdna2_op_V_MADAK_F32, +amdgpu_cdna2_op_V_MADMK_F16, +amdgpu_cdna2_op_V_MADMK_F32, +amdgpu_cdna2_op_V_MAD_F16, +amdgpu_cdna2_op_V_MAD_F32, +amdgpu_cdna2_op_V_MAD_I16, +amdgpu_cdna2_op_V_MAD_I32_I16, +amdgpu_cdna2_op_V_MAD_I32_I24, +amdgpu_cdna2_op_V_MAD_I64_I32, +amdgpu_cdna2_op_V_MAD_LEGACY_F16, +amdgpu_cdna2_op_V_MAD_LEGACY_F32, +amdgpu_cdna2_op_V_MAD_LEGACY_I16, +amdgpu_cdna2_op_V_MAD_LEGACY_U16, +amdgpu_cdna2_op_V_MAD_MIXHI_F16, +amdgpu_cdna2_op_V_MAD_MIXLO_F16, +amdgpu_cdna2_op_V_MAD_MIX_F32, +amdgpu_cdna2_op_V_MAD_U16, +amdgpu_cdna2_op_V_MAD_U32_U16, +amdgpu_cdna2_op_V_MAD_U32_U24, +amdgpu_cdna2_op_V_MAD_U64_U32, +amdgpu_cdna2_op_V_MAX3_F16, +amdgpu_cdna2_op_V_MAX3_F32, +amdgpu_cdna2_op_V_MAX3_I16, +amdgpu_cdna2_op_V_MAX3_I32, +amdgpu_cdna2_op_V_MAX3_U16, +amdgpu_cdna2_op_V_MAX3_U32, +amdgpu_cdna2_op_V_MAX_F16, +amdgpu_cdna2_op_V_MAX_F32, +amdgpu_cdna2_op_V_MAX_F64, +amdgpu_cdna2_op_V_MAX_I16, +amdgpu_cdna2_op_V_MAX_I32, +amdgpu_cdna2_op_V_MAX_U16, +amdgpu_cdna2_op_V_MAX_U32, +amdgpu_cdna2_op_V_MBCNT_HI_U32_B32, +amdgpu_cdna2_op_V_MBCNT_LO_U32_B32, +amdgpu_cdna2_op_V_MED3_F16, +amdgpu_cdna2_op_V_MED3_F32, +amdgpu_cdna2_op_V_MED3_I16, +amdgpu_cdna2_op_V_MED3_I32, +amdgpu_cdna2_op_V_MED3_U16, +amdgpu_cdna2_op_V_MED3_U32, +amdgpu_cdna2_op_V_MFMA_F32_16X16X16BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_16X16X16F16, +amdgpu_cdna2_op_V_MFMA_F32_16X16X1F32, +amdgpu_cdna2_op_V_MFMA_F32_16X16X2BF16, +amdgpu_cdna2_op_V_MFMA_F32_16X16X4BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_16X16X4F16, +amdgpu_cdna2_op_V_MFMA_F32_16X16X4F32, +amdgpu_cdna2_op_V_MFMA_F32_16X16X8BF16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X1F32, +amdgpu_cdna2_op_V_MFMA_F32_32X32X2BF16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X2F32, +amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_32X32X4F16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X8BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_32X32X8F16, +amdgpu_cdna2_op_V_MFMA_F32_4X4X1F32, +amdgpu_cdna2_op_V_MFMA_F32_4X4X2BF16, +amdgpu_cdna2_op_V_MFMA_F32_4X4X4BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_4X4X4F16, +amdgpu_cdna2_op_V_MFMA_F64_16X16X4F64, +amdgpu_cdna2_op_V_MFMA_F64_4X4X4F64, +amdgpu_cdna2_op_V_MFMA_I32_16X16X16I8, +amdgpu_cdna2_op_V_MFMA_I32_16X16X4I8, +amdgpu_cdna2_op_V_MFMA_I32_32X32X4I8, +amdgpu_cdna2_op_V_MFMA_I32_32X32X8I8, +amdgpu_cdna2_op_V_MFMA_I32_4X4X4I8, +amdgpu_cdna2_op_V_MIN3_F16, +amdgpu_cdna2_op_V_MIN3_F32, +amdgpu_cdna2_op_V_MIN3_I16, +amdgpu_cdna2_op_V_MIN3_I32, +amdgpu_cdna2_op_V_MIN3_U16, +amdgpu_cdna2_op_V_MIN3_U32, +amdgpu_cdna2_op_V_MIN_F16, +amdgpu_cdna2_op_V_MIN_F32, +amdgpu_cdna2_op_V_MIN_F64, +amdgpu_cdna2_op_V_MIN_I16, +amdgpu_cdna2_op_V_MIN_I32, +amdgpu_cdna2_op_V_MIN_U16, +amdgpu_cdna2_op_V_MIN_U32, +amdgpu_cdna2_op_V_MOV_B32, +amdgpu_cdna2_op_V_MQSAD_PK_U16_U8, +amdgpu_cdna2_op_V_MQSAD_U32_U8, +amdgpu_cdna2_op_V_MSAD_U8, +amdgpu_cdna2_op_V_MUL_F16, +amdgpu_cdna2_op_V_MUL_F32, +amdgpu_cdna2_op_V_MUL_F64, +amdgpu_cdna2_op_V_MUL_HI_I32, +amdgpu_cdna2_op_V_MUL_HI_I32_I24, +amdgpu_cdna2_op_V_MUL_HI_U32, +amdgpu_cdna2_op_V_MUL_HI_U32_U24, +amdgpu_cdna2_op_V_MUL_I32_I24, +amdgpu_cdna2_op_V_MUL_LEGACY_F32, +amdgpu_cdna2_op_V_MUL_LO_U16, +amdgpu_cdna2_op_V_MUL_LO_U32, +amdgpu_cdna2_op_V_MUL_U32_U24, +amdgpu_cdna2_op_V_NOP, +amdgpu_cdna2_op_V_NOT_B32, +amdgpu_cdna2_op_V_OR3_B32, +amdgpu_cdna2_op_V_OR_B32, +amdgpu_cdna2_op_V_PACK_B32_F16, +amdgpu_cdna2_op_V_PERM_B32, +amdgpu_cdna2_op_V_PK_ADD_F16, +amdgpu_cdna2_op_V_PK_ADD_F32, +amdgpu_cdna2_op_V_PK_ADD_I16, +amdgpu_cdna2_op_V_PK_ADD_U16, +amdgpu_cdna2_op_V_PK_ASHRREV_I16, +amdgpu_cdna2_op_V_PK_FMAC_F16, +amdgpu_cdna2_op_V_PK_FMA_F16, +amdgpu_cdna2_op_V_PK_FMA_F32, +amdgpu_cdna2_op_V_PK_LSHLREV_B16, +amdgpu_cdna2_op_V_PK_LSHRREV_B16, +amdgpu_cdna2_op_V_PK_MAD_I16, +amdgpu_cdna2_op_V_PK_MAD_U16, +amdgpu_cdna2_op_V_PK_MAX_F16, +amdgpu_cdna2_op_V_PK_MAX_I16, +amdgpu_cdna2_op_V_PK_MAX_U16, +amdgpu_cdna2_op_V_PK_MIN_F16, +amdgpu_cdna2_op_V_PK_MIN_I16, +amdgpu_cdna2_op_V_PK_MIN_U16, +amdgpu_cdna2_op_V_PK_MOV_B32, +amdgpu_cdna2_op_V_PK_MUL_F16, +amdgpu_cdna2_op_V_PK_MUL_F32, +amdgpu_cdna2_op_V_PK_MUL_LO_U16, +amdgpu_cdna2_op_V_PK_SUB_I16, +amdgpu_cdna2_op_V_PK_SUB_U16, +amdgpu_cdna2_op_V_QSAD_PK_U16_U8, +amdgpu_cdna2_op_V_RCP_F16, +amdgpu_cdna2_op_V_RCP_F32, +amdgpu_cdna2_op_V_RCP_F64, +amdgpu_cdna2_op_V_RCP_IFLAG_F32, +amdgpu_cdna2_op_V_READFIRSTLANE_B32, +amdgpu_cdna2_op_V_READLANE_B32, +amdgpu_cdna2_op_V_RNDNE_F16, +amdgpu_cdna2_op_V_RNDNE_F32, +amdgpu_cdna2_op_V_RNDNE_F64, +amdgpu_cdna2_op_V_RSQ_F16, +amdgpu_cdna2_op_V_RSQ_F32, +amdgpu_cdna2_op_V_RSQ_F64, +amdgpu_cdna2_op_V_SAD_HI_U8, +amdgpu_cdna2_op_V_SAD_U16, +amdgpu_cdna2_op_V_SAD_U32, +amdgpu_cdna2_op_V_SAD_U8, +amdgpu_cdna2_op_V_SAT_PK_U8_I16, +amdgpu_cdna2_op_V_SCREEN_PARTITION_4SE_B32, +amdgpu_cdna2_op_V_SIN_F16, +amdgpu_cdna2_op_V_SIN_F32, +amdgpu_cdna2_op_V_SQRT_F16, +amdgpu_cdna2_op_V_SQRT_F32, +amdgpu_cdna2_op_V_SQRT_F64, +amdgpu_cdna2_op_V_SUBBREV_CO_U32, +amdgpu_cdna2_op_V_SUBB_CO_U32, +amdgpu_cdna2_op_V_SUBREV_CO_U32, +amdgpu_cdna2_op_V_SUBREV_F16, +amdgpu_cdna2_op_V_SUBREV_F32, +amdgpu_cdna2_op_V_SUBREV_U16, +amdgpu_cdna2_op_V_SUBREV_U32, +amdgpu_cdna2_op_V_SUB_CO_U32, +amdgpu_cdna2_op_V_SUB_F16, +amdgpu_cdna2_op_V_SUB_F32, +amdgpu_cdna2_op_V_SUB_I16, +amdgpu_cdna2_op_V_SUB_I32, +amdgpu_cdna2_op_V_SUB_U16, +amdgpu_cdna2_op_V_SUB_U32, +amdgpu_cdna2_op_V_SWAP_B32, +amdgpu_cdna2_op_V_TRIG_PREOP_F64, +amdgpu_cdna2_op_V_TRUNC_F16, +amdgpu_cdna2_op_V_TRUNC_F32, +amdgpu_cdna2_op_V_TRUNC_F64, +amdgpu_cdna2_op_V_WRITELANE_B32, +amdgpu_cdna2_op_V_XAD_U32, +amdgpu_cdna2_op_V_XNOR_B32, +amdgpu_cdna2_op_V_XOR_B32, diff --git a/common/h/amdgpu_cdna2_sys_regs.h b/common/h/amdgpu_cdna2_sys_regs.h new file mode 100644 index 0000000000..eb74b6cf98 --- /dev/null +++ b/common/h/amdgpu_cdna2_sys_regs.h @@ -0,0 +1,1563 @@ +#ifndef DYNINST_AMDGPU_CDNA2_SYS_REGS_H +#define DYNINST_AMDGPU_CDNA2_SYS_REGS_H +DEF_REGISTER(address_mode_32, Arch_amdgpu_cdna2 | HWR | BITS_32 | 0,"amdgpu_cdna2"); +DEF_REGISTER(exec, Arch_amdgpu_cdna2 | HWR | BITS_64 | 1,"amdgpu_cdna2"); +DEF_REGISTER(exec_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 1,"amdgpu_cdna2"); +DEF_REGISTER(exec_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 1,"amdgpu_cdna2"); +DEF_REGISTER(expcnt, Arch_amdgpu_cdna2 | HWR | BITS_3 | 2,"amdgpu_cdna2"); +DEF_REGISTER(export_icount, Arch_amdgpu_cdna2 | HWR | BITS_8 | 3,"amdgpu_cdna2"); +DEF_REGISTER(flat_scratch, Arch_amdgpu_cdna2 | HWR | BITS_64 | 4,"amdgpu_cdna2"); +DEF_REGISTER(flat_scratch_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 4,"amdgpu_cdna2"); +DEF_REGISTER(flat_scratch_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 4,"amdgpu_cdna2"); +DEF_REGISTER(gpr_alloc, Arch_amdgpu_cdna2 | HWR | BITS_32 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_base, Arch_amdgpu_cdna2 | 0x0 | BITS_6 | 0x8000 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpt_size, Arch_amdgpu_cdna2 | 0x80000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_base, Arch_amdgpu_cdna2 | 0x100000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_size, Arch_amdgpu_cdna2 | 0x180000 | BITS_4 | 0x8000 | 5,"amdgpu_cdna2"); +DEF_REGISTER(ib_sts, Arch_amdgpu_cdna2 | HWR | BITS_32 | 6,"amdgpu_cdna2"); +DEF_REGISTER(exp_cnt, Arch_amdgpu_cdna2 | 0x40000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna2"); +DEF_REGISTER(lgkm_cnt, Arch_amdgpu_cdna2 | 0x80000 | BITS_4 | 0x8000 | 6,"amdgpu_cdna2"); +DEF_REGISTER(valu_cnt, Arch_amdgpu_cdna2 | 0xc0000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna2"); +DEF_REGISTER(vm_cnt, Arch_amdgpu_cdna2 | 0xf0000 | BITS_6 | 0x8000 | 6,"amdgpu_cdna2"); +DEF_REGISTER(lds_alloc, Arch_amdgpu_cdna2 | HWR | BITS_32 | 7,"amdgpu_cdna2"); +DEF_REGISTER(lds_base, Arch_amdgpu_cdna2 | 0x0 | BITS_8 | 0x8000 | 7,"amdgpu_cdna2"); +DEF_REGISTER(lds_size, Arch_amdgpu_cdna2 | 0xc0000 | BITS_9 | 0x8000 | 7,"amdgpu_cdna2"); +DEF_REGISTER(lds_gds_constant_message_count, Arch_amdgpu_cdna2 | HWR | BITS_8 | 8,"amdgpu_cdna2"); +DEF_REGISTER(lgkmcnt, Arch_amdgpu_cdna2 | HWR | BITS_4 | 9,"amdgpu_cdna2"); +DEF_REGISTER(m0, Arch_amdgpu_cdna2 | HWR | BITS_32 | 10,"amdgpu_cdna2"); +DEF_REGISTER(gds_size, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(lds_direct_address, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(lds_interpolation_parameter_offset, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(lds_memory_vfetch_offset, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(lds_direct_data_type, Arch_amdgpu_cdna2 | 0x100000 | BITS_3 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(lds_interpolation_new_prim_mask, Arch_amdgpu_cdna2 | 0x100000 | BITS_15 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(gds_base, Arch_amdgpu_cdna2 | 0x100000 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); +DEF_REGISTER(mode, Arch_amdgpu_cdna2 | HWR | BITS_32 | 11,"amdgpu_cdna2"); +DEF_REGISTER(fp_round, Arch_amdgpu_cdna2 | 0x0 | BITS_4 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(fp_denorm, Arch_amdgpu_cdna2 | 0x40000 | BITS_4 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(dx10_clamp, Arch_amdgpu_cdna2 | 0x80000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(ieee, Arch_amdgpu_cdna2 | 0x90000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(lod_clamped, Arch_amdgpu_cdna2 | 0xa0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(debug, Arch_amdgpu_cdna2 | 0xb0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(excp_en, Arch_amdgpu_cdna2 | 0xc0000 | BITS_7 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(fp16_ovfl, Arch_amdgpu_cdna2 | 0x170000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(pops_packer0, Arch_amdgpu_cdna2 | 0x180000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(pops_packer1, Arch_amdgpu_cdna2 | 0x190000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(disable_perf, Arch_amdgpu_cdna2 | 0x1a0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(gpr_idx_en, Arch_amdgpu_cdna2 | 0x1b0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(vskip, Arch_amdgpu_cdna2 | 0x1c0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(csp, Arch_amdgpu_cdna2 | 0x1d0000 | BITS_3 | 0x8000 | 11,"amdgpu_cdna2"); +DEF_REGISTER(pc, Arch_amdgpu_cdna2 | PC | BITS_48 | 0,"amdgpu_cdna2"); +DEF_REGISTER(pops_exiting_wave_id, Arch_amdgpu_cdna2 | HWR | BITS_64 | 12,"amdgpu_cdna2"); +DEF_REGISTER(private_base, Arch_amdgpu_cdna2 | HWR | BITS_64 | 13,"amdgpu_cdna2"); +DEF_REGISTER(private_limit, Arch_amdgpu_cdna2 | HWR | BITS_64 | 14,"amdgpu_cdna2"); +DEF_REGISTER(shared_base, Arch_amdgpu_cdna2 | HWR | BITS_64 | 15,"amdgpu_cdna2"); +DEF_REGISTER(shared_limit, Arch_amdgpu_cdna2 | HWR | BITS_64 | 16,"amdgpu_cdna2"); +DEF_REGISTER(status, Arch_amdgpu_cdna2 | HWR | BITS_32 | 17,"amdgpu_cdna2"); +DEF_REGISTER(scc, Arch_amdgpu_cdna2 | 0x0 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(spi_prio, Arch_amdgpu_cdna2 | 0x10000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(wave_prio, Arch_amdgpu_cdna2 | 0x30000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(priv, Arch_amdgpu_cdna2 | 0x50000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(trap_en, Arch_amdgpu_cdna2 | 0x60000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(ttrace_en, Arch_amdgpu_cdna2 | 0x70000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(export_rdy, Arch_amdgpu_cdna2 | 0x80000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(execz, Arch_amdgpu_cdna2 | 0x90000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(vccz, Arch_amdgpu_cdna2 | 0xa0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(in_tg, Arch_amdgpu_cdna2 | 0xb0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(in_barrier, Arch_amdgpu_cdna2 | 0xc0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(halt, Arch_amdgpu_cdna2 | 0xd0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(trap, Arch_amdgpu_cdna2 | 0xe0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(ttrace_cu_en, Arch_amdgpu_cdna2 | 0xf0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(valid, Arch_amdgpu_cdna2 | 0x100000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(ecc_err, Arch_amdgpu_cdna2 | 0x110000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(skin_export, Arch_amdgpu_cdna2 | 0x120000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(perf_en, Arch_amdgpu_cdna2 | 0x130000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(cond_dbg_user, Arch_amdgpu_cdna2 | 0x140000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(cond_dbg_sys, Arch_amdgpu_cdna2 | 0x150000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(allow_replay, Arch_amdgpu_cdna2 | 0x160000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(must_export, Arch_amdgpu_cdna2 | 0x1b0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); +DEF_REGISTER(tba, Arch_amdgpu_cdna2 | HWR | BITS_64 | 18,"amdgpu_cdna2"); +DEF_REGISTER(tid, Arch_amdgpu_cdna2 | HWR | BITS_32 | 19,"amdgpu_cdna2"); +DEF_REGISTER(tma, Arch_amdgpu_cdna2 | HWR | BITS_64 | 20,"amdgpu_cdna2"); +DEF_REGISTER(trap_base_address, Arch_amdgpu_cdna2 | HWR | BITS_64 | 21,"amdgpu_cdna2"); +DEF_REGISTER(trap_memory_address, Arch_amdgpu_cdna2 | HWR | BITS_64 | 22,"amdgpu_cdna2"); +DEF_REGISTER(ttmp0, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 0,"amdgpu_cdna2"); +DEF_REGISTER(ttmp1, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 1,"amdgpu_cdna2"); +DEF_REGISTER(ttmp10, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 2,"amdgpu_cdna2"); +DEF_REGISTER(ttmp11, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 3,"amdgpu_cdna2"); +DEF_REGISTER(ttmp12, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 4,"amdgpu_cdna2"); +DEF_REGISTER(ttmp13, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 5,"amdgpu_cdna2"); +DEF_REGISTER(ttmp14, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 6,"amdgpu_cdna2"); +DEF_REGISTER(ttmp15, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 7,"amdgpu_cdna2"); +DEF_REGISTER(ttmp2, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 8,"amdgpu_cdna2"); +DEF_REGISTER(ttmp3, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 9,"amdgpu_cdna2"); +DEF_REGISTER(ttmp4, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 10,"amdgpu_cdna2"); +DEF_REGISTER(ttmp5, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 11,"amdgpu_cdna2"); +DEF_REGISTER(ttmp6, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 12,"amdgpu_cdna2"); +DEF_REGISTER(ttmp7, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 13,"amdgpu_cdna2"); +DEF_REGISTER(ttmp8, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 14,"amdgpu_cdna2"); +DEF_REGISTER(ttmp9, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 15,"amdgpu_cdna2"); +DEF_REGISTER(vcc, Arch_amdgpu_cdna2 | HWR | BITS_64 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vcc_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vcc_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vectory_memory_icount, Arch_amdgpu_cdna2 | HWR | BITS_8 | 24,"amdgpu_cdna2"); +DEF_REGISTER(vmcnt, Arch_amdgpu_cdna2 | HWR | BITS_6 | 25,"amdgpu_cdna2"); +DEF_REGISTER(xnack_mask, Arch_amdgpu_cdna2 | HWR | BITS_64 | 26,"amdgpu_cdna2"); +DEF_REGISTER(xnack_mask_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 26,"amdgpu_cdna2"); +DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 26,"amdgpu_cdna2"); +DEF_REGISTER(sgpr0, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 0,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_0, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_0, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_0, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec16_0, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna2"); +DEF_REGISTER(sgpr1, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 1,"amdgpu_cdna2"); +DEF_REGISTER(sgpr2, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 2,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_2, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna2"); +DEF_REGISTER(sgpr3, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 3,"amdgpu_cdna2"); +DEF_REGISTER(sgpr4, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 4,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_4, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_4, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna2"); +DEF_REGISTER(sgpr5, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 5,"amdgpu_cdna2"); +DEF_REGISTER(sgpr6, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 6,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_6, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna2"); +DEF_REGISTER(sgpr7, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 7,"amdgpu_cdna2"); +DEF_REGISTER(sgpr8, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 8,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_8, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_8, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_8, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna2"); +DEF_REGISTER(sgpr9, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 9,"amdgpu_cdna2"); +DEF_REGISTER(sgpr10, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 10,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_10, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna2"); +DEF_REGISTER(sgpr11, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 11,"amdgpu_cdna2"); +DEF_REGISTER(sgpr12, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 12,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_12, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_12, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna2"); +DEF_REGISTER(sgpr13, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 13,"amdgpu_cdna2"); +DEF_REGISTER(sgpr14, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 14,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_14, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna2"); +DEF_REGISTER(sgpr15, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 15,"amdgpu_cdna2"); +DEF_REGISTER(sgpr16, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 16,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_16, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_16, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_16, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec16_16, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna2"); +DEF_REGISTER(sgpr17, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 17,"amdgpu_cdna2"); +DEF_REGISTER(sgpr18, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 18,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_18, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna2"); +DEF_REGISTER(sgpr19, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 19,"amdgpu_cdna2"); +DEF_REGISTER(sgpr20, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 20,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_20, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_20, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna2"); +DEF_REGISTER(sgpr21, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 21,"amdgpu_cdna2"); +DEF_REGISTER(sgpr22, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 22,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_22, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna2"); +DEF_REGISTER(sgpr23, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 23,"amdgpu_cdna2"); +DEF_REGISTER(sgpr24, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 24,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_24, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_24, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_24, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna2"); +DEF_REGISTER(sgpr25, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 25,"amdgpu_cdna2"); +DEF_REGISTER(sgpr26, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 26,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_26, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna2"); +DEF_REGISTER(sgpr27, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 27,"amdgpu_cdna2"); +DEF_REGISTER(sgpr28, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 28,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_28, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_28, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna2"); +DEF_REGISTER(sgpr29, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 29,"amdgpu_cdna2"); +DEF_REGISTER(sgpr30, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 30,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_30, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna2"); +DEF_REGISTER(sgpr31, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 31,"amdgpu_cdna2"); +DEF_REGISTER(sgpr32, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 32,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_32, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_32, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_32, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec16_32, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna2"); +DEF_REGISTER(sgpr33, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 33,"amdgpu_cdna2"); +DEF_REGISTER(sgpr34, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 34,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_34, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna2"); +DEF_REGISTER(sgpr35, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 35,"amdgpu_cdna2"); +DEF_REGISTER(sgpr36, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 36,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_36, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_36, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna2"); +DEF_REGISTER(sgpr37, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 37,"amdgpu_cdna2"); +DEF_REGISTER(sgpr38, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 38,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_38, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna2"); +DEF_REGISTER(sgpr39, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 39,"amdgpu_cdna2"); +DEF_REGISTER(sgpr40, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 40,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_40, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_40, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_40, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna2"); +DEF_REGISTER(sgpr41, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 41,"amdgpu_cdna2"); +DEF_REGISTER(sgpr42, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 42,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_42, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna2"); +DEF_REGISTER(sgpr43, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 43,"amdgpu_cdna2"); +DEF_REGISTER(sgpr44, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 44,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_44, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_44, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna2"); +DEF_REGISTER(sgpr45, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 45,"amdgpu_cdna2"); +DEF_REGISTER(sgpr46, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 46,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_46, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna2"); +DEF_REGISTER(sgpr47, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 47,"amdgpu_cdna2"); +DEF_REGISTER(sgpr48, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 48,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_48, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_48, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_48, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec16_48, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna2"); +DEF_REGISTER(sgpr49, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 49,"amdgpu_cdna2"); +DEF_REGISTER(sgpr50, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 50,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_50, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna2"); +DEF_REGISTER(sgpr51, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 51,"amdgpu_cdna2"); +DEF_REGISTER(sgpr52, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 52,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_52, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_52, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna2"); +DEF_REGISTER(sgpr53, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 53,"amdgpu_cdna2"); +DEF_REGISTER(sgpr54, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 54,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_54, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna2"); +DEF_REGISTER(sgpr55, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 55,"amdgpu_cdna2"); +DEF_REGISTER(sgpr56, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 56,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_56, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_56, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_56, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna2"); +DEF_REGISTER(sgpr57, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 57,"amdgpu_cdna2"); +DEF_REGISTER(sgpr58, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 58,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_58, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna2"); +DEF_REGISTER(sgpr59, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 59,"amdgpu_cdna2"); +DEF_REGISTER(sgpr60, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 60,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_60, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_60, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna2"); +DEF_REGISTER(sgpr61, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 61,"amdgpu_cdna2"); +DEF_REGISTER(sgpr62, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 62,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_62, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna2"); +DEF_REGISTER(sgpr63, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 63,"amdgpu_cdna2"); +DEF_REGISTER(sgpr64, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 64,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_64, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_64, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_64, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec16_64, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna2"); +DEF_REGISTER(sgpr65, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 65,"amdgpu_cdna2"); +DEF_REGISTER(sgpr66, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 66,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_66, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna2"); +DEF_REGISTER(sgpr67, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 67,"amdgpu_cdna2"); +DEF_REGISTER(sgpr68, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 68,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_68, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_68, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna2"); +DEF_REGISTER(sgpr69, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 69,"amdgpu_cdna2"); +DEF_REGISTER(sgpr70, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 70,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_70, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna2"); +DEF_REGISTER(sgpr71, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 71,"amdgpu_cdna2"); +DEF_REGISTER(sgpr72, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 72,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_72, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_72, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_72, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna2"); +DEF_REGISTER(sgpr73, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 73,"amdgpu_cdna2"); +DEF_REGISTER(sgpr74, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 74,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_74, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna2"); +DEF_REGISTER(sgpr75, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 75,"amdgpu_cdna2"); +DEF_REGISTER(sgpr76, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 76,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_76, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_76, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna2"); +DEF_REGISTER(sgpr77, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 77,"amdgpu_cdna2"); +DEF_REGISTER(sgpr78, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 78,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_78, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna2"); +DEF_REGISTER(sgpr79, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 79,"amdgpu_cdna2"); +DEF_REGISTER(sgpr80, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 80,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_80, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_80, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_80, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec16_80, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna2"); +DEF_REGISTER(sgpr81, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 81,"amdgpu_cdna2"); +DEF_REGISTER(sgpr82, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 82,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_82, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna2"); +DEF_REGISTER(sgpr83, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 83,"amdgpu_cdna2"); +DEF_REGISTER(sgpr84, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 84,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_84, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_84, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna2"); +DEF_REGISTER(sgpr85, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 85,"amdgpu_cdna2"); +DEF_REGISTER(sgpr86, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 86,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_86, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna2"); +DEF_REGISTER(sgpr87, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 87,"amdgpu_cdna2"); +DEF_REGISTER(sgpr88, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 88,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_88, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_88, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_88, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna2"); +DEF_REGISTER(sgpr89, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 89,"amdgpu_cdna2"); +DEF_REGISTER(sgpr90, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 90,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_90, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna2"); +DEF_REGISTER(sgpr91, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 91,"amdgpu_cdna2"); +DEF_REGISTER(sgpr92, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 92,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_92, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_92, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna2"); +DEF_REGISTER(sgpr93, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 93,"amdgpu_cdna2"); +DEF_REGISTER(sgpr94, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 94,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_94, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna2"); +DEF_REGISTER(sgpr95, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 95,"amdgpu_cdna2"); +DEF_REGISTER(sgpr96, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 96,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_96, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_96, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec8_96, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna2"); +DEF_REGISTER(sgpr97, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 97,"amdgpu_cdna2"); +DEF_REGISTER(sgpr98, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 98,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_98, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna2"); +DEF_REGISTER(sgpr99, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 99,"amdgpu_cdna2"); +DEF_REGISTER(sgpr100, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 100,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_100, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec4_100, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna2"); +DEF_REGISTER(sgpr101, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 101,"amdgpu_cdna2"); +DEF_REGISTER(sgpr102, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 102,"amdgpu_cdna2"); +DEF_REGISTER(sgpr_vec2_102, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna2"); +DEF_REGISTER(sgpr103, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 103,"amdgpu_cdna2"); +DEF_REGISTER(vgpr0, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 0,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_0, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_0, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_0, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_0, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna2"); +DEF_REGISTER(vgpr1, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 1,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_1, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 1,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_1, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 1,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_1, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 1,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_1, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 1,"amdgpu_cdna2"); +DEF_REGISTER(vgpr2, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 2,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_2, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_2, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 2,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_2, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 2,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_2, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 2,"amdgpu_cdna2"); +DEF_REGISTER(vgpr3, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 3,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_3, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 3,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_3, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 3,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_3, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 3,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_3, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 3,"amdgpu_cdna2"); +DEF_REGISTER(vgpr4, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 4,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_4, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_4, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_4, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 4,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_4, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 4,"amdgpu_cdna2"); +DEF_REGISTER(vgpr5, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_5, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_5, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_5, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_5, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 5,"amdgpu_cdna2"); +DEF_REGISTER(vgpr6, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 6,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_6, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_6, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 6,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_6, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 6,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_6, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 6,"amdgpu_cdna2"); +DEF_REGISTER(vgpr7, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 7,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_7, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 7,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_7, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 7,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_7, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 7,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_7, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 7,"amdgpu_cdna2"); +DEF_REGISTER(vgpr8, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 8,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_8, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_8, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_8, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_8, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 8,"amdgpu_cdna2"); +DEF_REGISTER(vgpr9, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 9,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_9, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 9,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_9, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 9,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_9, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 9,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_9, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 9,"amdgpu_cdna2"); +DEF_REGISTER(vgpr10, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 10,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_10, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_10, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 10,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_10, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 10,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_10, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 10,"amdgpu_cdna2"); +DEF_REGISTER(vgpr11, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 11,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_11, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 11,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_11, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 11,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_11, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 11,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_11, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 11,"amdgpu_cdna2"); +DEF_REGISTER(vgpr12, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 12,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_12, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_12, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_12, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 12,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_12, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 12,"amdgpu_cdna2"); +DEF_REGISTER(vgpr13, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 13,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_13, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 13,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_13, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 13,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_13, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 13,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_13, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 13,"amdgpu_cdna2"); +DEF_REGISTER(vgpr14, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 14,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_14, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_14, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 14,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_14, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 14,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_14, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 14,"amdgpu_cdna2"); +DEF_REGISTER(vgpr15, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 15,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_15, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 15,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_15, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 15,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_15, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 15,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_15, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 15,"amdgpu_cdna2"); +DEF_REGISTER(vgpr16, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 16,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_16, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_16, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_16, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_16, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna2"); +DEF_REGISTER(vgpr17, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 17,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_17, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 17,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_17, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 17,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_17, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 17,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_17, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 17,"amdgpu_cdna2"); +DEF_REGISTER(vgpr18, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 18,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_18, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_18, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 18,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_18, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 18,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_18, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 18,"amdgpu_cdna2"); +DEF_REGISTER(vgpr19, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 19,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_19, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 19,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_19, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 19,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_19, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 19,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_19, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 19,"amdgpu_cdna2"); +DEF_REGISTER(vgpr20, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 20,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_20, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_20, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_20, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 20,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_20, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 20,"amdgpu_cdna2"); +DEF_REGISTER(vgpr21, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 21,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_21, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 21,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_21, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 21,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_21, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 21,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_21, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 21,"amdgpu_cdna2"); +DEF_REGISTER(vgpr22, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 22,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_22, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_22, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 22,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_22, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 22,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_22, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 22,"amdgpu_cdna2"); +DEF_REGISTER(vgpr23, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_23, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_23, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_23, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_23, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 23,"amdgpu_cdna2"); +DEF_REGISTER(vgpr24, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 24,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_24, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_24, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_24, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_24, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 24,"amdgpu_cdna2"); +DEF_REGISTER(vgpr25, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 25,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_25, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 25,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_25, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 25,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_25, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 25,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_25, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 25,"amdgpu_cdna2"); +DEF_REGISTER(vgpr26, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 26,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_26, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_26, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 26,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_26, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 26,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_26, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 26,"amdgpu_cdna2"); +DEF_REGISTER(vgpr27, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 27,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_27, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 27,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_27, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 27,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_27, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 27,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_27, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 27,"amdgpu_cdna2"); +DEF_REGISTER(vgpr28, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 28,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_28, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_28, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_28, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 28,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_28, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 28,"amdgpu_cdna2"); +DEF_REGISTER(vgpr29, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 29,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_29, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 29,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_29, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 29,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_29, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 29,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_29, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 29,"amdgpu_cdna2"); +DEF_REGISTER(vgpr30, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 30,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_30, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_30, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 30,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_30, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 30,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_30, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 30,"amdgpu_cdna2"); +DEF_REGISTER(vgpr31, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 31,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_31, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 31,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_31, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 31,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_31, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 31,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_31, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 31,"amdgpu_cdna2"); +DEF_REGISTER(vgpr32, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 32,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_32, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_32, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_32, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_32, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna2"); +DEF_REGISTER(vgpr33, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 33,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_33, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 33,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_33, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 33,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_33, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 33,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_33, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 33,"amdgpu_cdna2"); +DEF_REGISTER(vgpr34, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 34,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_34, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_34, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 34,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_34, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 34,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_34, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 34,"amdgpu_cdna2"); +DEF_REGISTER(vgpr35, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 35,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_35, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 35,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_35, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 35,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_35, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 35,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_35, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 35,"amdgpu_cdna2"); +DEF_REGISTER(vgpr36, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 36,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_36, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_36, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_36, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 36,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_36, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 36,"amdgpu_cdna2"); +DEF_REGISTER(vgpr37, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 37,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_37, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 37,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_37, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 37,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_37, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 37,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_37, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 37,"amdgpu_cdna2"); +DEF_REGISTER(vgpr38, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 38,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_38, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_38, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 38,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_38, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 38,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_38, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 38,"amdgpu_cdna2"); +DEF_REGISTER(vgpr39, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 39,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_39, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 39,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_39, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 39,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_39, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 39,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_39, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 39,"amdgpu_cdna2"); +DEF_REGISTER(vgpr40, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 40,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_40, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_40, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_40, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_40, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 40,"amdgpu_cdna2"); +DEF_REGISTER(vgpr41, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 41,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_41, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 41,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_41, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 41,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_41, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 41,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_41, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 41,"amdgpu_cdna2"); +DEF_REGISTER(vgpr42, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 42,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_42, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_42, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 42,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_42, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 42,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_42, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 42,"amdgpu_cdna2"); +DEF_REGISTER(vgpr43, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 43,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_43, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 43,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_43, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 43,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_43, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 43,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_43, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 43,"amdgpu_cdna2"); +DEF_REGISTER(vgpr44, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 44,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_44, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_44, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_44, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 44,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_44, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 44,"amdgpu_cdna2"); +DEF_REGISTER(vgpr45, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 45,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_45, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 45,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_45, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 45,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_45, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 45,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_45, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 45,"amdgpu_cdna2"); +DEF_REGISTER(vgpr46, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 46,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_46, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_46, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 46,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_46, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 46,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_46, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 46,"amdgpu_cdna2"); +DEF_REGISTER(vgpr47, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 47,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_47, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 47,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_47, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 47,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_47, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 47,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_47, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 47,"amdgpu_cdna2"); +DEF_REGISTER(vgpr48, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 48,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_48, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_48, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_48, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_48, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna2"); +DEF_REGISTER(vgpr49, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 49,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_49, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 49,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_49, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 49,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_49, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 49,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_49, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 49,"amdgpu_cdna2"); +DEF_REGISTER(vgpr50, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 50,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_50, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_50, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 50,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_50, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 50,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_50, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 50,"amdgpu_cdna2"); +DEF_REGISTER(vgpr51, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 51,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_51, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 51,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_51, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 51,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_51, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 51,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_51, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 51,"amdgpu_cdna2"); +DEF_REGISTER(vgpr52, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 52,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_52, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_52, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_52, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 52,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_52, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 52,"amdgpu_cdna2"); +DEF_REGISTER(vgpr53, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 53,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_53, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 53,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_53, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 53,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_53, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 53,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_53, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 53,"amdgpu_cdna2"); +DEF_REGISTER(vgpr54, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 54,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_54, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_54, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 54,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_54, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 54,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_54, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 54,"amdgpu_cdna2"); +DEF_REGISTER(vgpr55, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 55,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_55, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 55,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_55, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 55,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_55, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 55,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_55, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 55,"amdgpu_cdna2"); +DEF_REGISTER(vgpr56, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 56,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_56, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_56, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_56, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_56, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 56,"amdgpu_cdna2"); +DEF_REGISTER(vgpr57, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 57,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_57, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 57,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_57, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 57,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_57, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 57,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_57, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 57,"amdgpu_cdna2"); +DEF_REGISTER(vgpr58, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 58,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_58, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_58, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 58,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_58, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 58,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_58, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 58,"amdgpu_cdna2"); +DEF_REGISTER(vgpr59, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 59,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_59, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 59,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_59, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 59,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_59, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 59,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_59, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 59,"amdgpu_cdna2"); +DEF_REGISTER(vgpr60, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 60,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_60, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_60, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_60, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 60,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_60, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 60,"amdgpu_cdna2"); +DEF_REGISTER(vgpr61, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 61,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_61, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 61,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_61, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 61,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_61, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 61,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_61, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 61,"amdgpu_cdna2"); +DEF_REGISTER(vgpr62, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 62,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_62, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_62, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 62,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_62, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 62,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_62, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 62,"amdgpu_cdna2"); +DEF_REGISTER(vgpr63, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 63,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_63, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 63,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_63, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 63,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_63, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 63,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_63, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 63,"amdgpu_cdna2"); +DEF_REGISTER(vgpr64, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 64,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_64, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_64, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_64, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_64, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna2"); +DEF_REGISTER(vgpr65, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 65,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_65, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 65,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_65, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 65,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_65, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 65,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_65, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 65,"amdgpu_cdna2"); +DEF_REGISTER(vgpr66, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 66,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_66, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_66, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 66,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_66, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 66,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_66, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 66,"amdgpu_cdna2"); +DEF_REGISTER(vgpr67, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 67,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_67, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 67,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_67, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 67,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_67, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 67,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_67, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 67,"amdgpu_cdna2"); +DEF_REGISTER(vgpr68, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 68,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_68, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_68, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_68, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 68,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_68, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 68,"amdgpu_cdna2"); +DEF_REGISTER(vgpr69, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 69,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_69, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 69,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_69, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 69,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_69, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 69,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_69, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 69,"amdgpu_cdna2"); +DEF_REGISTER(vgpr70, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 70,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_70, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_70, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 70,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_70, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 70,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_70, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 70,"amdgpu_cdna2"); +DEF_REGISTER(vgpr71, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 71,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_71, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 71,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_71, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 71,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_71, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 71,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_71, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 71,"amdgpu_cdna2"); +DEF_REGISTER(vgpr72, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 72,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_72, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_72, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_72, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_72, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 72,"amdgpu_cdna2"); +DEF_REGISTER(vgpr73, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 73,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_73, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 73,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_73, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 73,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_73, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 73,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_73, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 73,"amdgpu_cdna2"); +DEF_REGISTER(vgpr74, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 74,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_74, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_74, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 74,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_74, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 74,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_74, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 74,"amdgpu_cdna2"); +DEF_REGISTER(vgpr75, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 75,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_75, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 75,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_75, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 75,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_75, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 75,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_75, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 75,"amdgpu_cdna2"); +DEF_REGISTER(vgpr76, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 76,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_76, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_76, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_76, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 76,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_76, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 76,"amdgpu_cdna2"); +DEF_REGISTER(vgpr77, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 77,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_77, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 77,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_77, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 77,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_77, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 77,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_77, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 77,"amdgpu_cdna2"); +DEF_REGISTER(vgpr78, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 78,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_78, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_78, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 78,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_78, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 78,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_78, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 78,"amdgpu_cdna2"); +DEF_REGISTER(vgpr79, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 79,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_79, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 79,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_79, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 79,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_79, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 79,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_79, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 79,"amdgpu_cdna2"); +DEF_REGISTER(vgpr80, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 80,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_80, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_80, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_80, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_80, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna2"); +DEF_REGISTER(vgpr81, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 81,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_81, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 81,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_81, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 81,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_81, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 81,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_81, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 81,"amdgpu_cdna2"); +DEF_REGISTER(vgpr82, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 82,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_82, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_82, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 82,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_82, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 82,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_82, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 82,"amdgpu_cdna2"); +DEF_REGISTER(vgpr83, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 83,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_83, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 83,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_83, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 83,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_83, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 83,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_83, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 83,"amdgpu_cdna2"); +DEF_REGISTER(vgpr84, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 84,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_84, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_84, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_84, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 84,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_84, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 84,"amdgpu_cdna2"); +DEF_REGISTER(vgpr85, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 85,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_85, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 85,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_85, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 85,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_85, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 85,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_85, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 85,"amdgpu_cdna2"); +DEF_REGISTER(vgpr86, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 86,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_86, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_86, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 86,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_86, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 86,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_86, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 86,"amdgpu_cdna2"); +DEF_REGISTER(vgpr87, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 87,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_87, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 87,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_87, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 87,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_87, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 87,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_87, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 87,"amdgpu_cdna2"); +DEF_REGISTER(vgpr88, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 88,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_88, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_88, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_88, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_88, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 88,"amdgpu_cdna2"); +DEF_REGISTER(vgpr89, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 89,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_89, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 89,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_89, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 89,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_89, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 89,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_89, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 89,"amdgpu_cdna2"); +DEF_REGISTER(vgpr90, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 90,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_90, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_90, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 90,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_90, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 90,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_90, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 90,"amdgpu_cdna2"); +DEF_REGISTER(vgpr91, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 91,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_91, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 91,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_91, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 91,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_91, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 91,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_91, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 91,"amdgpu_cdna2"); +DEF_REGISTER(vgpr92, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 92,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_92, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_92, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_92, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 92,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_92, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 92,"amdgpu_cdna2"); +DEF_REGISTER(vgpr93, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 93,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_93, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 93,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_93, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 93,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_93, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 93,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_93, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 93,"amdgpu_cdna2"); +DEF_REGISTER(vgpr94, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 94,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_94, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_94, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 94,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_94, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 94,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_94, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 94,"amdgpu_cdna2"); +DEF_REGISTER(vgpr95, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 95,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_95, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 95,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_95, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 95,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_95, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 95,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_95, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 95,"amdgpu_cdna2"); +DEF_REGISTER(vgpr96, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 96,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_96, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_96, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_96, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_96, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 96,"amdgpu_cdna2"); +DEF_REGISTER(vgpr97, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 97,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_97, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 97,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_97, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 97,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_97, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 97,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_97, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 97,"amdgpu_cdna2"); +DEF_REGISTER(vgpr98, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 98,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_98, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_98, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 98,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_98, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 98,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_98, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 98,"amdgpu_cdna2"); +DEF_REGISTER(vgpr99, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 99,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_99, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 99,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_99, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 99,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_99, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 99,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_99, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 99,"amdgpu_cdna2"); +DEF_REGISTER(vgpr100, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 100,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_100, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_100, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_100, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 100,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_100, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 100,"amdgpu_cdna2"); +DEF_REGISTER(vgpr101, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 101,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_101, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 101,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_101, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 101,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_101, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 101,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_101, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 101,"amdgpu_cdna2"); +DEF_REGISTER(vgpr102, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 102,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_102, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_102, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 102,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_102, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 102,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_102, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 102,"amdgpu_cdna2"); +DEF_REGISTER(vgpr103, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 103,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_103, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 103,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_103, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 103,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_103, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 103,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_103, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 103,"amdgpu_cdna2"); +DEF_REGISTER(vgpr104, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 104,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_104, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 104,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_104, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 104,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_104, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 104,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_104, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 104,"amdgpu_cdna2"); +DEF_REGISTER(vgpr105, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 105,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_105, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 105,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_105, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 105,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_105, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 105,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_105, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 105,"amdgpu_cdna2"); +DEF_REGISTER(vgpr106, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 106,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_106, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 106,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_106, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 106,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_106, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 106,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_106, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 106,"amdgpu_cdna2"); +DEF_REGISTER(vgpr107, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 107,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_107, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 107,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_107, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 107,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_107, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 107,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_107, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 107,"amdgpu_cdna2"); +DEF_REGISTER(vgpr108, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 108,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_108, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 108,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_108, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 108,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_108, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 108,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_108, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 108,"amdgpu_cdna2"); +DEF_REGISTER(vgpr109, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 109,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_109, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 109,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_109, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 109,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_109, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 109,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_109, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 109,"amdgpu_cdna2"); +DEF_REGISTER(vgpr110, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 110,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_110, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 110,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_110, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 110,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_110, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 110,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_110, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 110,"amdgpu_cdna2"); +DEF_REGISTER(vgpr111, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 111,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_111, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 111,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_111, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 111,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_111, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 111,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_111, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 111,"amdgpu_cdna2"); +DEF_REGISTER(vgpr112, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 112,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_112, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 112,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_112, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 112,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_112, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 112,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_112, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 112,"amdgpu_cdna2"); +DEF_REGISTER(vgpr113, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 113,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_113, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 113,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_113, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 113,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_113, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 113,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_113, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 113,"amdgpu_cdna2"); +DEF_REGISTER(vgpr114, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 114,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_114, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 114,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_114, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 114,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_114, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 114,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_114, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 114,"amdgpu_cdna2"); +DEF_REGISTER(vgpr115, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 115,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_115, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 115,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_115, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 115,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_115, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 115,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_115, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 115,"amdgpu_cdna2"); +DEF_REGISTER(vgpr116, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 116,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_116, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 116,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_116, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 116,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_116, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 116,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_116, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 116,"amdgpu_cdna2"); +DEF_REGISTER(vgpr117, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 117,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_117, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 117,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_117, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 117,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_117, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 117,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_117, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 117,"amdgpu_cdna2"); +DEF_REGISTER(vgpr118, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 118,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_118, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 118,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_118, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 118,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_118, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 118,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_118, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 118,"amdgpu_cdna2"); +DEF_REGISTER(vgpr119, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 119,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_119, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 119,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_119, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 119,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_119, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 119,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_119, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 119,"amdgpu_cdna2"); +DEF_REGISTER(vgpr120, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 120,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_120, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 120,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_120, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 120,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_120, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 120,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_120, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 120,"amdgpu_cdna2"); +DEF_REGISTER(vgpr121, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 121,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_121, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 121,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_121, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 121,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_121, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 121,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_121, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 121,"amdgpu_cdna2"); +DEF_REGISTER(vgpr122, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 122,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_122, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 122,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_122, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 122,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_122, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 122,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_122, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 122,"amdgpu_cdna2"); +DEF_REGISTER(vgpr123, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 123,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_123, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 123,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_123, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 123,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_123, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 123,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_123, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 123,"amdgpu_cdna2"); +DEF_REGISTER(vgpr124, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 124,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_124, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 124,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_124, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 124,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_124, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 124,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_124, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 124,"amdgpu_cdna2"); +DEF_REGISTER(vgpr125, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 125,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_125, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 125,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_125, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 125,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_125, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 125,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_125, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 125,"amdgpu_cdna2"); +DEF_REGISTER(vgpr126, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 126,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_126, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 126,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_126, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 126,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_126, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 126,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_126, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 126,"amdgpu_cdna2"); +DEF_REGISTER(vgpr127, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 127,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_127, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 127,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_127, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 127,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_127, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 127,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_127, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 127,"amdgpu_cdna2"); +DEF_REGISTER(vgpr128, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 128,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_128, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 128,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_128, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 128,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_128, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 128,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_128, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 128,"amdgpu_cdna2"); +DEF_REGISTER(vgpr129, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 129,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_129, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 129,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_129, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 129,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_129, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 129,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_129, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 129,"amdgpu_cdna2"); +DEF_REGISTER(vgpr130, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 130,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_130, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 130,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_130, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 130,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_130, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 130,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_130, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 130,"amdgpu_cdna2"); +DEF_REGISTER(vgpr131, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 131,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_131, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 131,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_131, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 131,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_131, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 131,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_131, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 131,"amdgpu_cdna2"); +DEF_REGISTER(vgpr132, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 132,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_132, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 132,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_132, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 132,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_132, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 132,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_132, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 132,"amdgpu_cdna2"); +DEF_REGISTER(vgpr133, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 133,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_133, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 133,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_133, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 133,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_133, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 133,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_133, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 133,"amdgpu_cdna2"); +DEF_REGISTER(vgpr134, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 134,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_134, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 134,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_134, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 134,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_134, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 134,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_134, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 134,"amdgpu_cdna2"); +DEF_REGISTER(vgpr135, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 135,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_135, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 135,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_135, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 135,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_135, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 135,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_135, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 135,"amdgpu_cdna2"); +DEF_REGISTER(vgpr136, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 136,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_136, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 136,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_136, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 136,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_136, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 136,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_136, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 136,"amdgpu_cdna2"); +DEF_REGISTER(vgpr137, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 137,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_137, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 137,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_137, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 137,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_137, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 137,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_137, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 137,"amdgpu_cdna2"); +DEF_REGISTER(vgpr138, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 138,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_138, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 138,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_138, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 138,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_138, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 138,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_138, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 138,"amdgpu_cdna2"); +DEF_REGISTER(vgpr139, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 139,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_139, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 139,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_139, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 139,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_139, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 139,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_139, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 139,"amdgpu_cdna2"); +DEF_REGISTER(vgpr140, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 140,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_140, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 140,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_140, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 140,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_140, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 140,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_140, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 140,"amdgpu_cdna2"); +DEF_REGISTER(vgpr141, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 141,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_141, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 141,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_141, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 141,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_141, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 141,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_141, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 141,"amdgpu_cdna2"); +DEF_REGISTER(vgpr142, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 142,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_142, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 142,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_142, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 142,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_142, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 142,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_142, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 142,"amdgpu_cdna2"); +DEF_REGISTER(vgpr143, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 143,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_143, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 143,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_143, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 143,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_143, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 143,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_143, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 143,"amdgpu_cdna2"); +DEF_REGISTER(vgpr144, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 144,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_144, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 144,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_144, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 144,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_144, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 144,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_144, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 144,"amdgpu_cdna2"); +DEF_REGISTER(vgpr145, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 145,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_145, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 145,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_145, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 145,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_145, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 145,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_145, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 145,"amdgpu_cdna2"); +DEF_REGISTER(vgpr146, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 146,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_146, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 146,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_146, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 146,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_146, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 146,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_146, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 146,"amdgpu_cdna2"); +DEF_REGISTER(vgpr147, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 147,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_147, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 147,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_147, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 147,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_147, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 147,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_147, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 147,"amdgpu_cdna2"); +DEF_REGISTER(vgpr148, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 148,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_148, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 148,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_148, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 148,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_148, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 148,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_148, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 148,"amdgpu_cdna2"); +DEF_REGISTER(vgpr149, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 149,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_149, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 149,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_149, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 149,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_149, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 149,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_149, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 149,"amdgpu_cdna2"); +DEF_REGISTER(vgpr150, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 150,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_150, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 150,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_150, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 150,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_150, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 150,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_150, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 150,"amdgpu_cdna2"); +DEF_REGISTER(vgpr151, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 151,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_151, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 151,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_151, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 151,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_151, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 151,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_151, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 151,"amdgpu_cdna2"); +DEF_REGISTER(vgpr152, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 152,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_152, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 152,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_152, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 152,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_152, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 152,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_152, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 152,"amdgpu_cdna2"); +DEF_REGISTER(vgpr153, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 153,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_153, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 153,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_153, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 153,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_153, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 153,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_153, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 153,"amdgpu_cdna2"); +DEF_REGISTER(vgpr154, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 154,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_154, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 154,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_154, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 154,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_154, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 154,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_154, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 154,"amdgpu_cdna2"); +DEF_REGISTER(vgpr155, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 155,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_155, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 155,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_155, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 155,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_155, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 155,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_155, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 155,"amdgpu_cdna2"); +DEF_REGISTER(vgpr156, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 156,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_156, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 156,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_156, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 156,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_156, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 156,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_156, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 156,"amdgpu_cdna2"); +DEF_REGISTER(vgpr157, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 157,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_157, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 157,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_157, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 157,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_157, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 157,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_157, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 157,"amdgpu_cdna2"); +DEF_REGISTER(vgpr158, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 158,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_158, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 158,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_158, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 158,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_158, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 158,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_158, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 158,"amdgpu_cdna2"); +DEF_REGISTER(vgpr159, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 159,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_159, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 159,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_159, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 159,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_159, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 159,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_159, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 159,"amdgpu_cdna2"); +DEF_REGISTER(vgpr160, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 160,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_160, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 160,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_160, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 160,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_160, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 160,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_160, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 160,"amdgpu_cdna2"); +DEF_REGISTER(vgpr161, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 161,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_161, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 161,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_161, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 161,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_161, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 161,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_161, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 161,"amdgpu_cdna2"); +DEF_REGISTER(vgpr162, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 162,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_162, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 162,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_162, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 162,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_162, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 162,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_162, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 162,"amdgpu_cdna2"); +DEF_REGISTER(vgpr163, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 163,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_163, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 163,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_163, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 163,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_163, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 163,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_163, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 163,"amdgpu_cdna2"); +DEF_REGISTER(vgpr164, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 164,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_164, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 164,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_164, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 164,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_164, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 164,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_164, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 164,"amdgpu_cdna2"); +DEF_REGISTER(vgpr165, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 165,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_165, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 165,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_165, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 165,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_165, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 165,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_165, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 165,"amdgpu_cdna2"); +DEF_REGISTER(vgpr166, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 166,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_166, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 166,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_166, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 166,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_166, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 166,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_166, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 166,"amdgpu_cdna2"); +DEF_REGISTER(vgpr167, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 167,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_167, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 167,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_167, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 167,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_167, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 167,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_167, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 167,"amdgpu_cdna2"); +DEF_REGISTER(vgpr168, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 168,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_168, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 168,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_168, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 168,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_168, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 168,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_168, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 168,"amdgpu_cdna2"); +DEF_REGISTER(vgpr169, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 169,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_169, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 169,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_169, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 169,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_169, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 169,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_169, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 169,"amdgpu_cdna2"); +DEF_REGISTER(vgpr170, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 170,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_170, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 170,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_170, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 170,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_170, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 170,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_170, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 170,"amdgpu_cdna2"); +DEF_REGISTER(vgpr171, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 171,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_171, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 171,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_171, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 171,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_171, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 171,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_171, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 171,"amdgpu_cdna2"); +DEF_REGISTER(vgpr172, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 172,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_172, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 172,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_172, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 172,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_172, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 172,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_172, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 172,"amdgpu_cdna2"); +DEF_REGISTER(vgpr173, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 173,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_173, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 173,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_173, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 173,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_173, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 173,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_173, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 173,"amdgpu_cdna2"); +DEF_REGISTER(vgpr174, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 174,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_174, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 174,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_174, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 174,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_174, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 174,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_174, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 174,"amdgpu_cdna2"); +DEF_REGISTER(vgpr175, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 175,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_175, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 175,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_175, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 175,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_175, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 175,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_175, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 175,"amdgpu_cdna2"); +DEF_REGISTER(vgpr176, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 176,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_176, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 176,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_176, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 176,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_176, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 176,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_176, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 176,"amdgpu_cdna2"); +DEF_REGISTER(vgpr177, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 177,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_177, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 177,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_177, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 177,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_177, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 177,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_177, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 177,"amdgpu_cdna2"); +DEF_REGISTER(vgpr178, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 178,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_178, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 178,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_178, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 178,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_178, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 178,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_178, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 178,"amdgpu_cdna2"); +DEF_REGISTER(vgpr179, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 179,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_179, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 179,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_179, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 179,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_179, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 179,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_179, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 179,"amdgpu_cdna2"); +DEF_REGISTER(vgpr180, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 180,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_180, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 180,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_180, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 180,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_180, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 180,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_180, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 180,"amdgpu_cdna2"); +DEF_REGISTER(vgpr181, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 181,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_181, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 181,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_181, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 181,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_181, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 181,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_181, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 181,"amdgpu_cdna2"); +DEF_REGISTER(vgpr182, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 182,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_182, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 182,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_182, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 182,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_182, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 182,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_182, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 182,"amdgpu_cdna2"); +DEF_REGISTER(vgpr183, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 183,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_183, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 183,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_183, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 183,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_183, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 183,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_183, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 183,"amdgpu_cdna2"); +DEF_REGISTER(vgpr184, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 184,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_184, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 184,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_184, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 184,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_184, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 184,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_184, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 184,"amdgpu_cdna2"); +DEF_REGISTER(vgpr185, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 185,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_185, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 185,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_185, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 185,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_185, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 185,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_185, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 185,"amdgpu_cdna2"); +DEF_REGISTER(vgpr186, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 186,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_186, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 186,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_186, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 186,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_186, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 186,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_186, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 186,"amdgpu_cdna2"); +DEF_REGISTER(vgpr187, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 187,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_187, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 187,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_187, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 187,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_187, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 187,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_187, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 187,"amdgpu_cdna2"); +DEF_REGISTER(vgpr188, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 188,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_188, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 188,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_188, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 188,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_188, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 188,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_188, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 188,"amdgpu_cdna2"); +DEF_REGISTER(vgpr189, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 189,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_189, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 189,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_189, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 189,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_189, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 189,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_189, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 189,"amdgpu_cdna2"); +DEF_REGISTER(vgpr190, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 190,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_190, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 190,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_190, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 190,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_190, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 190,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_190, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 190,"amdgpu_cdna2"); +DEF_REGISTER(vgpr191, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 191,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_191, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 191,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_191, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 191,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_191, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 191,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_191, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 191,"amdgpu_cdna2"); +DEF_REGISTER(vgpr192, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 192,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_192, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 192,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_192, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 192,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_192, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 192,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_192, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 192,"amdgpu_cdna2"); +DEF_REGISTER(vgpr193, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 193,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_193, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 193,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_193, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 193,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_193, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 193,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_193, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 193,"amdgpu_cdna2"); +DEF_REGISTER(vgpr194, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 194,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_194, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 194,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_194, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 194,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_194, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 194,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_194, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 194,"amdgpu_cdna2"); +DEF_REGISTER(vgpr195, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 195,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_195, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 195,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_195, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 195,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_195, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 195,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_195, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 195,"amdgpu_cdna2"); +DEF_REGISTER(vgpr196, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 196,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_196, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 196,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_196, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 196,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_196, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 196,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_196, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 196,"amdgpu_cdna2"); +DEF_REGISTER(vgpr197, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 197,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_197, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 197,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_197, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 197,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_197, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 197,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_197, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 197,"amdgpu_cdna2"); +DEF_REGISTER(vgpr198, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 198,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_198, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 198,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_198, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 198,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_198, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 198,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_198, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 198,"amdgpu_cdna2"); +DEF_REGISTER(vgpr199, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 199,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_199, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 199,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_199, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 199,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_199, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 199,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_199, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 199,"amdgpu_cdna2"); +DEF_REGISTER(vgpr200, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 200,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_200, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 200,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_200, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 200,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_200, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 200,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_200, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 200,"amdgpu_cdna2"); +DEF_REGISTER(vgpr201, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 201,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_201, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 201,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_201, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 201,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_201, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 201,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_201, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 201,"amdgpu_cdna2"); +DEF_REGISTER(vgpr202, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 202,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_202, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 202,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_202, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 202,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_202, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 202,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_202, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 202,"amdgpu_cdna2"); +DEF_REGISTER(vgpr203, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 203,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_203, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 203,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_203, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 203,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_203, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 203,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_203, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 203,"amdgpu_cdna2"); +DEF_REGISTER(vgpr204, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 204,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_204, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 204,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_204, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 204,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_204, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 204,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_204, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 204,"amdgpu_cdna2"); +DEF_REGISTER(vgpr205, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 205,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_205, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 205,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_205, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 205,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_205, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 205,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_205, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 205,"amdgpu_cdna2"); +DEF_REGISTER(vgpr206, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 206,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_206, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 206,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_206, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 206,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_206, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 206,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_206, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 206,"amdgpu_cdna2"); +DEF_REGISTER(vgpr207, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 207,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_207, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 207,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_207, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 207,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_207, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 207,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_207, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 207,"amdgpu_cdna2"); +DEF_REGISTER(vgpr208, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 208,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_208, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 208,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_208, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 208,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_208, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 208,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_208, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 208,"amdgpu_cdna2"); +DEF_REGISTER(vgpr209, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 209,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_209, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 209,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_209, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 209,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_209, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 209,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_209, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 209,"amdgpu_cdna2"); +DEF_REGISTER(vgpr210, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 210,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_210, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 210,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_210, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 210,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_210, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 210,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_210, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 210,"amdgpu_cdna2"); +DEF_REGISTER(vgpr211, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 211,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_211, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 211,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_211, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 211,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_211, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 211,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_211, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 211,"amdgpu_cdna2"); +DEF_REGISTER(vgpr212, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 212,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_212, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 212,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_212, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 212,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_212, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 212,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_212, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 212,"amdgpu_cdna2"); +DEF_REGISTER(vgpr213, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 213,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_213, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 213,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_213, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 213,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_213, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 213,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_213, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 213,"amdgpu_cdna2"); +DEF_REGISTER(vgpr214, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 214,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_214, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 214,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_214, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 214,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_214, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 214,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_214, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 214,"amdgpu_cdna2"); +DEF_REGISTER(vgpr215, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 215,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_215, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 215,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_215, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 215,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_215, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 215,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_215, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 215,"amdgpu_cdna2"); +DEF_REGISTER(vgpr216, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 216,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_216, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 216,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_216, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 216,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_216, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 216,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_216, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 216,"amdgpu_cdna2"); +DEF_REGISTER(vgpr217, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 217,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_217, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 217,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_217, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 217,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_217, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 217,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_217, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 217,"amdgpu_cdna2"); +DEF_REGISTER(vgpr218, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 218,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_218, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 218,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_218, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 218,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_218, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 218,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_218, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 218,"amdgpu_cdna2"); +DEF_REGISTER(vgpr219, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 219,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_219, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 219,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_219, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 219,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_219, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 219,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_219, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 219,"amdgpu_cdna2"); +DEF_REGISTER(vgpr220, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 220,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_220, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 220,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_220, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 220,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_220, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 220,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_220, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 220,"amdgpu_cdna2"); +DEF_REGISTER(vgpr221, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 221,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_221, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 221,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_221, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 221,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_221, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 221,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_221, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 221,"amdgpu_cdna2"); +DEF_REGISTER(vgpr222, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 222,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_222, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 222,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_222, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 222,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_222, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 222,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_222, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 222,"amdgpu_cdna2"); +DEF_REGISTER(vgpr223, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 223,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_223, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 223,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_223, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 223,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_223, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 223,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_223, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 223,"amdgpu_cdna2"); +DEF_REGISTER(vgpr224, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 224,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_224, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 224,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_224, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 224,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_224, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 224,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_224, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 224,"amdgpu_cdna2"); +DEF_REGISTER(vgpr225, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 225,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_225, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 225,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_225, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 225,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_225, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 225,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_225, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 225,"amdgpu_cdna2"); +DEF_REGISTER(vgpr226, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 226,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_226, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 226,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_226, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 226,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_226, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 226,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_226, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 226,"amdgpu_cdna2"); +DEF_REGISTER(vgpr227, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 227,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_227, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 227,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_227, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 227,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_227, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 227,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_227, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 227,"amdgpu_cdna2"); +DEF_REGISTER(vgpr228, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 228,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_228, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 228,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_228, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 228,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_228, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 228,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_228, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 228,"amdgpu_cdna2"); +DEF_REGISTER(vgpr229, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 229,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_229, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 229,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_229, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 229,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_229, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 229,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_229, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 229,"amdgpu_cdna2"); +DEF_REGISTER(vgpr230, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 230,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_230, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 230,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_230, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 230,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_230, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 230,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_230, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 230,"amdgpu_cdna2"); +DEF_REGISTER(vgpr231, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 231,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_231, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 231,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_231, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 231,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_231, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 231,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_231, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 231,"amdgpu_cdna2"); +DEF_REGISTER(vgpr232, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 232,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_232, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 232,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_232, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 232,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_232, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 232,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_232, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 232,"amdgpu_cdna2"); +DEF_REGISTER(vgpr233, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 233,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_233, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 233,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_233, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 233,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_233, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 233,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_233, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 233,"amdgpu_cdna2"); +DEF_REGISTER(vgpr234, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 234,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_234, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 234,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_234, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 234,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_234, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 234,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_234, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 234,"amdgpu_cdna2"); +DEF_REGISTER(vgpr235, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 235,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_235, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 235,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_235, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 235,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_235, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 235,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_235, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 235,"amdgpu_cdna2"); +DEF_REGISTER(vgpr236, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 236,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_236, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 236,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_236, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 236,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_236, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 236,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_236, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 236,"amdgpu_cdna2"); +DEF_REGISTER(vgpr237, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 237,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_237, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 237,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_237, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 237,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_237, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 237,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_237, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 237,"amdgpu_cdna2"); +DEF_REGISTER(vgpr238, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 238,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_238, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 238,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_238, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 238,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_238, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 238,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_238, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 238,"amdgpu_cdna2"); +DEF_REGISTER(vgpr239, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 239,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_239, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 239,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_239, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 239,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_239, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 239,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_239, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 239,"amdgpu_cdna2"); +DEF_REGISTER(vgpr240, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 240,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_240, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 240,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_240, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 240,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_240, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 240,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec16_240, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 240,"amdgpu_cdna2"); +DEF_REGISTER(vgpr241, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 241,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_241, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 241,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_241, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 241,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_241, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 241,"amdgpu_cdna2"); +DEF_REGISTER(vgpr242, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 242,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_242, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 242,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_242, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 242,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_242, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 242,"amdgpu_cdna2"); +DEF_REGISTER(vgpr243, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 243,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_243, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 243,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_243, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 243,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_243, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 243,"amdgpu_cdna2"); +DEF_REGISTER(vgpr244, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 244,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_244, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 244,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_244, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 244,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_244, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 244,"amdgpu_cdna2"); +DEF_REGISTER(vgpr245, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 245,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_245, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 245,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_245, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 245,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_245, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 245,"amdgpu_cdna2"); +DEF_REGISTER(vgpr246, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 246,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_246, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 246,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_246, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 246,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_246, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 246,"amdgpu_cdna2"); +DEF_REGISTER(vgpr247, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 247,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_247, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 247,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_247, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 247,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_247, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 247,"amdgpu_cdna2"); +DEF_REGISTER(vgpr248, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 248,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_248, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 248,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_248, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 248,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec8_248, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 248,"amdgpu_cdna2"); +DEF_REGISTER(vgpr249, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 249,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_249, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 249,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_249, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 249,"amdgpu_cdna2"); +DEF_REGISTER(vgpr250, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 250,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_250, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 250,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_250, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 250,"amdgpu_cdna2"); +DEF_REGISTER(vgpr251, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 251,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_251, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 251,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_251, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 251,"amdgpu_cdna2"); +DEF_REGISTER(vgpr252, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 252,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_252, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 252,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec4_252, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 252,"amdgpu_cdna2"); +DEF_REGISTER(vgpr253, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 253,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_253, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 253,"amdgpu_cdna2"); +DEF_REGISTER(vgpr254, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 254,"amdgpu_cdna2"); +DEF_REGISTER(vgpr_vec2_254, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 254,"amdgpu_cdna2"); +DEF_REGISTER(vgpr255, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 255,"amdgpu_cdna2"); +#endif //DYNINST_AMDGPU_CDNA2_SYS_REGS_H diff --git a/common/h/amdgpu_cdna_op_table.h b/common/h/amdgpu_cdna_op_table.h new file mode 100644 index 0000000000..e27bcc8ff2 --- /dev/null +++ b/common/h/amdgpu_cdna_op_table.h @@ -0,0 +1,1152 @@ +amdgpu_cdna_op_BUFFER_ATOMIC_ADD, +amdgpu_cdna_op_BUFFER_ATOMIC_ADD_F32, +amdgpu_cdna_op_BUFFER_ATOMIC_ADD_F64, +amdgpu_cdna_op_BUFFER_ATOMIC_ADD_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_AND, +amdgpu_cdna_op_BUFFER_ATOMIC_AND_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_CMPSWAP, +amdgpu_cdna_op_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_DEC, +amdgpu_cdna_op_BUFFER_ATOMIC_DEC_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_INC, +amdgpu_cdna_op_BUFFER_ATOMIC_INC_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_MAX_F64, +amdgpu_cdna_op_BUFFER_ATOMIC_MIN_F64, +amdgpu_cdna_op_BUFFER_ATOMIC_OR, +amdgpu_cdna_op_BUFFER_ATOMIC_OR_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_PK_ADD_F16, +amdgpu_cdna_op_BUFFER_ATOMIC_SMAX, +amdgpu_cdna_op_BUFFER_ATOMIC_SMAX_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_SMIN, +amdgpu_cdna_op_BUFFER_ATOMIC_SMIN_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_SUB, +amdgpu_cdna_op_BUFFER_ATOMIC_SUB_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_SWAP, +amdgpu_cdna_op_BUFFER_ATOMIC_SWAP_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_UMAX, +amdgpu_cdna_op_BUFFER_ATOMIC_UMAX_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_UMIN, +amdgpu_cdna_op_BUFFER_ATOMIC_UMIN_X2, +amdgpu_cdna_op_BUFFER_ATOMIC_XOR, +amdgpu_cdna_op_BUFFER_ATOMIC_XOR_X2, +amdgpu_cdna_op_BUFFER_INV, +amdgpu_cdna_op_BUFFER_LOAD_DWORD, +amdgpu_cdna_op_BUFFER_LOAD_DWORDX2, +amdgpu_cdna_op_BUFFER_LOAD_DWORDX3, +amdgpu_cdna_op_BUFFER_LOAD_DWORDX4, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_HI_X, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_X, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_XY, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_X, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_XY, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_XYZ, +amdgpu_cdna_op_BUFFER_LOAD_FORMAT_XYZW, +amdgpu_cdna_op_BUFFER_LOAD_SBYTE, +amdgpu_cdna_op_BUFFER_LOAD_SBYTE_D16, +amdgpu_cdna_op_BUFFER_LOAD_SBYTE_D16_HI, +amdgpu_cdna_op_BUFFER_LOAD_SHORT_D16, +amdgpu_cdna_op_BUFFER_LOAD_SHORT_D16_HI, +amdgpu_cdna_op_BUFFER_LOAD_SSHORT, +amdgpu_cdna_op_BUFFER_LOAD_UBYTE, +amdgpu_cdna_op_BUFFER_LOAD_UBYTE_D16, +amdgpu_cdna_op_BUFFER_LOAD_UBYTE_D16_HI, +amdgpu_cdna_op_BUFFER_LOAD_USHORT, +amdgpu_cdna_op_BUFFER_STORE_BYTE, +amdgpu_cdna_op_BUFFER_STORE_BYTE_D16_HI, +amdgpu_cdna_op_BUFFER_STORE_DWORD, +amdgpu_cdna_op_BUFFER_STORE_DWORDX2, +amdgpu_cdna_op_BUFFER_STORE_DWORDX3, +amdgpu_cdna_op_BUFFER_STORE_DWORDX4, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_HI_X, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_X, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_XY, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_X, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_XY, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_XYZ, +amdgpu_cdna_op_BUFFER_STORE_FORMAT_XYZW, +amdgpu_cdna_op_BUFFER_STORE_SHORT, +amdgpu_cdna_op_BUFFER_STORE_SHORT_D16_HI, +amdgpu_cdna_op_BUFFER_WBL2, +amdgpu_cdna_op_DS_ADD_F32, +amdgpu_cdna_op_DS_ADD_F64, +amdgpu_cdna_op_DS_ADD_RTN_F32, +amdgpu_cdna_op_DS_ADD_RTN_F64, +amdgpu_cdna_op_DS_ADD_RTN_U32, +amdgpu_cdna_op_DS_ADD_RTN_U64, +amdgpu_cdna_op_DS_ADD_U32, +amdgpu_cdna_op_DS_ADD_U64, +amdgpu_cdna_op_DS_AND_B32, +amdgpu_cdna_op_DS_AND_B64, +amdgpu_cdna_op_DS_AND_RTN_B32, +amdgpu_cdna_op_DS_AND_RTN_B64, +amdgpu_cdna_op_DS_APPEND, +amdgpu_cdna_op_DS_BPERMUTE_B32, +amdgpu_cdna_op_DS_CMPST_B32, +amdgpu_cdna_op_DS_CMPST_B64, +amdgpu_cdna_op_DS_CMPST_F32, +amdgpu_cdna_op_DS_CMPST_F64, +amdgpu_cdna_op_DS_CMPST_RTN_B32, +amdgpu_cdna_op_DS_CMPST_RTN_B64, +amdgpu_cdna_op_DS_CMPST_RTN_F32, +amdgpu_cdna_op_DS_CMPST_RTN_F64, +amdgpu_cdna_op_DS_CONDXCHG32_RTN_B64, +amdgpu_cdna_op_DS_CONSUME, +amdgpu_cdna_op_DS_DEC_RTN_U32, +amdgpu_cdna_op_DS_DEC_RTN_U64, +amdgpu_cdna_op_DS_DEC_U32, +amdgpu_cdna_op_DS_DEC_U64, +amdgpu_cdna_op_DS_GWS_BARRIER, +amdgpu_cdna_op_DS_GWS_INIT, +amdgpu_cdna_op_DS_GWS_SEMA_BR, +amdgpu_cdna_op_DS_GWS_SEMA_P, +amdgpu_cdna_op_DS_GWS_SEMA_RELEASE_ALL, +amdgpu_cdna_op_DS_GWS_SEMA_V, +amdgpu_cdna_op_DS_INC_RTN_U32, +amdgpu_cdna_op_DS_INC_RTN_U64, +amdgpu_cdna_op_DS_INC_U32, +amdgpu_cdna_op_DS_INC_U64, +amdgpu_cdna_op_DS_MAX_F32, +amdgpu_cdna_op_DS_MAX_F64, +amdgpu_cdna_op_DS_MAX_I32, +amdgpu_cdna_op_DS_MAX_I64, +amdgpu_cdna_op_DS_MAX_RTN_F32, +amdgpu_cdna_op_DS_MAX_RTN_F64, +amdgpu_cdna_op_DS_MAX_RTN_I32, +amdgpu_cdna_op_DS_MAX_RTN_I64, +amdgpu_cdna_op_DS_MAX_RTN_U32, +amdgpu_cdna_op_DS_MAX_RTN_U64, +amdgpu_cdna_op_DS_MAX_U32, +amdgpu_cdna_op_DS_MAX_U64, +amdgpu_cdna_op_DS_MIN_F32, +amdgpu_cdna_op_DS_MIN_F64, +amdgpu_cdna_op_DS_MIN_I32, +amdgpu_cdna_op_DS_MIN_I64, +amdgpu_cdna_op_DS_MIN_RTN_F32, +amdgpu_cdna_op_DS_MIN_RTN_F64, +amdgpu_cdna_op_DS_MIN_RTN_I32, +amdgpu_cdna_op_DS_MIN_RTN_I64, +amdgpu_cdna_op_DS_MIN_RTN_U32, +amdgpu_cdna_op_DS_MIN_RTN_U64, +amdgpu_cdna_op_DS_MIN_U32, +amdgpu_cdna_op_DS_MIN_U64, +amdgpu_cdna_op_DS_MSKOR_B32, +amdgpu_cdna_op_DS_MSKOR_B64, +amdgpu_cdna_op_DS_MSKOR_RTN_B32, +amdgpu_cdna_op_DS_MSKOR_RTN_B64, +amdgpu_cdna_op_DS_NOP, +amdgpu_cdna_op_DS_OR_B32, +amdgpu_cdna_op_DS_OR_B64, +amdgpu_cdna_op_DS_OR_RTN_B32, +amdgpu_cdna_op_DS_OR_RTN_B64, +amdgpu_cdna_op_DS_PERMUTE_B32, +amdgpu_cdna_op_DS_PK_ADD_BF16, +amdgpu_cdna_op_DS_PK_ADD_F16, +amdgpu_cdna_op_DS_PK_ADD_RTN_BF16, +amdgpu_cdna_op_DS_PK_ADD_RTN_F16, +amdgpu_cdna_op_DS_READ2ST64_B32, +amdgpu_cdna_op_DS_READ2ST64_B64, +amdgpu_cdna_op_DS_READ2_B32, +amdgpu_cdna_op_DS_READ2_B64, +amdgpu_cdna_op_DS_READ_ADDTID_B32, +amdgpu_cdna_op_DS_READ_B128, +amdgpu_cdna_op_DS_READ_B32, +amdgpu_cdna_op_DS_READ_B64, +amdgpu_cdna_op_DS_READ_B96, +amdgpu_cdna_op_DS_READ_I16, +amdgpu_cdna_op_DS_READ_I8, +amdgpu_cdna_op_DS_READ_I8_D16, +amdgpu_cdna_op_DS_READ_I8_D16_HI, +amdgpu_cdna_op_DS_READ_U16, +amdgpu_cdna_op_DS_READ_U16_D16, +amdgpu_cdna_op_DS_READ_U16_D16_HI, +amdgpu_cdna_op_DS_READ_U8, +amdgpu_cdna_op_DS_READ_U8_D16, +amdgpu_cdna_op_DS_READ_U8_D16_HI, +amdgpu_cdna_op_DS_RSUB_RTN_U32, +amdgpu_cdna_op_DS_RSUB_RTN_U64, +amdgpu_cdna_op_DS_RSUB_U32, +amdgpu_cdna_op_DS_RSUB_U64, +amdgpu_cdna_op_DS_SUB_RTN_U32, +amdgpu_cdna_op_DS_SUB_RTN_U64, +amdgpu_cdna_op_DS_SUB_U32, +amdgpu_cdna_op_DS_SUB_U64, +amdgpu_cdna_op_DS_SWIZZLE_B32, +amdgpu_cdna_op_DS_WRAP_RTN_B32, +amdgpu_cdna_op_DS_WRITE2ST64_B32, +amdgpu_cdna_op_DS_WRITE2ST64_B64, +amdgpu_cdna_op_DS_WRITE2_B32, +amdgpu_cdna_op_DS_WRITE2_B64, +amdgpu_cdna_op_DS_WRITE_ADDTID_B32, +amdgpu_cdna_op_DS_WRITE_B128, +amdgpu_cdna_op_DS_WRITE_B16, +amdgpu_cdna_op_DS_WRITE_B16_D16_HI, +amdgpu_cdna_op_DS_WRITE_B32, +amdgpu_cdna_op_DS_WRITE_B64, +amdgpu_cdna_op_DS_WRITE_B8, +amdgpu_cdna_op_DS_WRITE_B8_D16_HI, +amdgpu_cdna_op_DS_WRITE_B96, +amdgpu_cdna_op_DS_WRXCHG2ST64_RTN_B32, +amdgpu_cdna_op_DS_WRXCHG2ST64_RTN_B64, +amdgpu_cdna_op_DS_WRXCHG2_RTN_B32, +amdgpu_cdna_op_DS_WRXCHG2_RTN_B64, +amdgpu_cdna_op_DS_WRXCHG_RTN_B32, +amdgpu_cdna_op_DS_WRXCHG_RTN_B64, +amdgpu_cdna_op_DS_XOR_B32, +amdgpu_cdna_op_DS_XOR_B64, +amdgpu_cdna_op_DS_XOR_RTN_B32, +amdgpu_cdna_op_DS_XOR_RTN_B64, +amdgpu_cdna_op_FLAT_ATOMIC_ADD, +amdgpu_cdna_op_FLAT_ATOMIC_ADD_F32, +amdgpu_cdna_op_FLAT_ATOMIC_ADD_F64, +amdgpu_cdna_op_FLAT_ATOMIC_ADD_X2, +amdgpu_cdna_op_FLAT_ATOMIC_AND, +amdgpu_cdna_op_FLAT_ATOMIC_AND_X2, +amdgpu_cdna_op_FLAT_ATOMIC_CMPSWAP, +amdgpu_cdna_op_FLAT_ATOMIC_CMPSWAP_X2, +amdgpu_cdna_op_FLAT_ATOMIC_DEC, +amdgpu_cdna_op_FLAT_ATOMIC_DEC_X2, +amdgpu_cdna_op_FLAT_ATOMIC_INC, +amdgpu_cdna_op_FLAT_ATOMIC_INC_X2, +amdgpu_cdna_op_FLAT_ATOMIC_MAX_F64, +amdgpu_cdna_op_FLAT_ATOMIC_MIN_F64, +amdgpu_cdna_op_FLAT_ATOMIC_OR, +amdgpu_cdna_op_FLAT_ATOMIC_OR_X2, +amdgpu_cdna_op_FLAT_ATOMIC_PK_ADD_BF16, +amdgpu_cdna_op_FLAT_ATOMIC_PK_ADD_F16, +amdgpu_cdna_op_FLAT_ATOMIC_SMAX, +amdgpu_cdna_op_FLAT_ATOMIC_SMAX_X2, +amdgpu_cdna_op_FLAT_ATOMIC_SMIN, +amdgpu_cdna_op_FLAT_ATOMIC_SMIN_X2, +amdgpu_cdna_op_FLAT_ATOMIC_SUB, +amdgpu_cdna_op_FLAT_ATOMIC_SUB_X2, +amdgpu_cdna_op_FLAT_ATOMIC_SWAP, +amdgpu_cdna_op_FLAT_ATOMIC_SWAP_X2, +amdgpu_cdna_op_FLAT_ATOMIC_UMAX, +amdgpu_cdna_op_FLAT_ATOMIC_UMAX_X2, +amdgpu_cdna_op_FLAT_ATOMIC_UMIN, +amdgpu_cdna_op_FLAT_ATOMIC_UMIN_X2, +amdgpu_cdna_op_FLAT_ATOMIC_XOR, +amdgpu_cdna_op_FLAT_ATOMIC_XOR_X2, +amdgpu_cdna_op_FLAT_LOAD_DWORD, +amdgpu_cdna_op_FLAT_LOAD_DWORDX2, +amdgpu_cdna_op_FLAT_LOAD_DWORDX3, +amdgpu_cdna_op_FLAT_LOAD_DWORDX4, +amdgpu_cdna_op_FLAT_LOAD_SBYTE, +amdgpu_cdna_op_FLAT_LOAD_SBYTE_D16, +amdgpu_cdna_op_FLAT_LOAD_SBYTE_D16_HI, +amdgpu_cdna_op_FLAT_LOAD_SHORT_D16, +amdgpu_cdna_op_FLAT_LOAD_SHORT_D16_HI, +amdgpu_cdna_op_FLAT_LOAD_SSHORT, +amdgpu_cdna_op_FLAT_LOAD_UBYTE, +amdgpu_cdna_op_FLAT_LOAD_UBYTE_D16, +amdgpu_cdna_op_FLAT_LOAD_UBYTE_D16_HI, +amdgpu_cdna_op_FLAT_LOAD_USHORT, +amdgpu_cdna_op_FLAT_STORE_BYTE, +amdgpu_cdna_op_FLAT_STORE_BYTE_D16_HI, +amdgpu_cdna_op_FLAT_STORE_DWORD, +amdgpu_cdna_op_FLAT_STORE_DWORDX2, +amdgpu_cdna_op_FLAT_STORE_DWORDX3, +amdgpu_cdna_op_FLAT_STORE_DWORDX4, +amdgpu_cdna_op_FLAT_STORE_SHORT, +amdgpu_cdna_op_FLAT_STORE_SHORT_D16_HI, +amdgpu_cdna_op_GLOBAL_ATOMIC_ADD, +amdgpu_cdna_op_GLOBAL_ATOMIC_ADD_F32, +amdgpu_cdna_op_GLOBAL_ATOMIC_ADD_F64, +amdgpu_cdna_op_GLOBAL_ATOMIC_ADD_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_AND, +amdgpu_cdna_op_GLOBAL_ATOMIC_AND_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_CMPSWAP, +amdgpu_cdna_op_GLOBAL_ATOMIC_CMPSWAP_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_DEC, +amdgpu_cdna_op_GLOBAL_ATOMIC_DEC_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_INC, +amdgpu_cdna_op_GLOBAL_ATOMIC_INC_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_MAX_F64, +amdgpu_cdna_op_GLOBAL_ATOMIC_MIN_F64, +amdgpu_cdna_op_GLOBAL_ATOMIC_OR, +amdgpu_cdna_op_GLOBAL_ATOMIC_OR_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_PK_ADD_BF16, +amdgpu_cdna_op_GLOBAL_ATOMIC_PK_ADD_F16, +amdgpu_cdna_op_GLOBAL_ATOMIC_SMAX, +amdgpu_cdna_op_GLOBAL_ATOMIC_SMAX_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_SMIN, +amdgpu_cdna_op_GLOBAL_ATOMIC_SMIN_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_SUB, +amdgpu_cdna_op_GLOBAL_ATOMIC_SUB_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_SWAP, +amdgpu_cdna_op_GLOBAL_ATOMIC_SWAP_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_UMAX, +amdgpu_cdna_op_GLOBAL_ATOMIC_UMAX_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_UMIN, +amdgpu_cdna_op_GLOBAL_ATOMIC_UMIN_X2, +amdgpu_cdna_op_GLOBAL_ATOMIC_XOR, +amdgpu_cdna_op_GLOBAL_ATOMIC_XOR_X2, +amdgpu_cdna_op_GLOBAL_LOAD_DWORD, +amdgpu_cdna_op_GLOBAL_LOAD_DWORDX2, +amdgpu_cdna_op_GLOBAL_LOAD_DWORDX3, +amdgpu_cdna_op_GLOBAL_LOAD_DWORDX4, +amdgpu_cdna_op_GLOBAL_LOAD_LDS_DWORD, +amdgpu_cdna_op_GLOBAL_LOAD_LDS_SBYTE, +amdgpu_cdna_op_GLOBAL_LOAD_LDS_SSHORT, +amdgpu_cdna_op_GLOBAL_LOAD_LDS_UBYTE, +amdgpu_cdna_op_GLOBAL_LOAD_LDS_USHORT, +amdgpu_cdna_op_GLOBAL_LOAD_SBYTE, +amdgpu_cdna_op_GLOBAL_LOAD_SBYTE_D16, +amdgpu_cdna_op_GLOBAL_LOAD_SBYTE_D16_HI, +amdgpu_cdna_op_GLOBAL_LOAD_SHORT_D16, +amdgpu_cdna_op_GLOBAL_LOAD_SHORT_D16_HI, +amdgpu_cdna_op_GLOBAL_LOAD_SSHORT, +amdgpu_cdna_op_GLOBAL_LOAD_UBYTE, +amdgpu_cdna_op_GLOBAL_LOAD_UBYTE_D16, +amdgpu_cdna_op_GLOBAL_LOAD_UBYTE_D16_HI, +amdgpu_cdna_op_GLOBAL_LOAD_USHORT, +amdgpu_cdna_op_GLOBAL_STORE_BYTE, +amdgpu_cdna_op_GLOBAL_STORE_BYTE_D16_HI, +amdgpu_cdna_op_GLOBAL_STORE_DWORD, +amdgpu_cdna_op_GLOBAL_STORE_DWORDX2, +amdgpu_cdna_op_GLOBAL_STORE_DWORDX3, +amdgpu_cdna_op_GLOBAL_STORE_DWORDX4, +amdgpu_cdna_op_GLOBAL_STORE_SHORT, +amdgpu_cdna_op_GLOBAL_STORE_SHORT_D16_HI, +amdgpu_cdna_op_SCRATCH_LOAD_DWORD, +amdgpu_cdna_op_SCRATCH_LOAD_DWORDX2, +amdgpu_cdna_op_SCRATCH_LOAD_DWORDX3, +amdgpu_cdna_op_SCRATCH_LOAD_DWORDX4, +amdgpu_cdna_op_SCRATCH_LOAD_LDS_DWORD, +amdgpu_cdna_op_SCRATCH_LOAD_LDS_SBYTE, +amdgpu_cdna_op_SCRATCH_LOAD_LDS_SSHORT, +amdgpu_cdna_op_SCRATCH_LOAD_LDS_UBYTE, +amdgpu_cdna_op_SCRATCH_LOAD_LDS_USHORT, +amdgpu_cdna_op_SCRATCH_LOAD_SBYTE, +amdgpu_cdna_op_SCRATCH_LOAD_SBYTE_D16, +amdgpu_cdna_op_SCRATCH_LOAD_SBYTE_D16_HI, +amdgpu_cdna_op_SCRATCH_LOAD_SHORT_D16, +amdgpu_cdna_op_SCRATCH_LOAD_SHORT_D16_HI, +amdgpu_cdna_op_SCRATCH_LOAD_SSHORT, +amdgpu_cdna_op_SCRATCH_LOAD_UBYTE, +amdgpu_cdna_op_SCRATCH_LOAD_UBYTE_D16, +amdgpu_cdna_op_SCRATCH_LOAD_UBYTE_D16_HI, +amdgpu_cdna_op_SCRATCH_LOAD_USHORT, +amdgpu_cdna_op_SCRATCH_STORE_BYTE, +amdgpu_cdna_op_SCRATCH_STORE_BYTE_D16_HI, +amdgpu_cdna_op_SCRATCH_STORE_DWORD, +amdgpu_cdna_op_SCRATCH_STORE_DWORDX2, +amdgpu_cdna_op_SCRATCH_STORE_DWORDX3, +amdgpu_cdna_op_SCRATCH_STORE_DWORDX4, +amdgpu_cdna_op_SCRATCH_STORE_SHORT, +amdgpu_cdna_op_SCRATCH_STORE_SHORT_D16_HI, +amdgpu_cdna_op_S_ABSDIFF_I32, +amdgpu_cdna_op_S_ABS_I32, +amdgpu_cdna_op_S_ADDC_U32, +amdgpu_cdna_op_S_ADDK_I32, +amdgpu_cdna_op_S_ADD_I32, +amdgpu_cdna_op_S_ADD_U32, +amdgpu_cdna_op_S_ANDN1_SAVEEXEC_B64, +amdgpu_cdna_op_S_ANDN1_WREXEC_B64, +amdgpu_cdna_op_S_ANDN2_B32, +amdgpu_cdna_op_S_ANDN2_B64, +amdgpu_cdna_op_S_ANDN2_SAVEEXEC_B64, +amdgpu_cdna_op_S_ANDN2_WREXEC_B64, +amdgpu_cdna_op_S_AND_B32, +amdgpu_cdna_op_S_AND_B64, +amdgpu_cdna_op_S_AND_SAVEEXEC_B64, +amdgpu_cdna_op_S_ASHR_I32, +amdgpu_cdna_op_S_ASHR_I64, +amdgpu_cdna_op_S_ATC_PROBE, +amdgpu_cdna_op_S_ATC_PROBE_BUFFER, +amdgpu_cdna_op_S_ATOMIC_ADD, +amdgpu_cdna_op_S_ATOMIC_ADD_X2, +amdgpu_cdna_op_S_ATOMIC_AND, +amdgpu_cdna_op_S_ATOMIC_AND_X2, +amdgpu_cdna_op_S_ATOMIC_CMPSWAP, +amdgpu_cdna_op_S_ATOMIC_CMPSWAP_X2, +amdgpu_cdna_op_S_ATOMIC_DEC, +amdgpu_cdna_op_S_ATOMIC_DEC_X2, +amdgpu_cdna_op_S_ATOMIC_INC, +amdgpu_cdna_op_S_ATOMIC_INC_X2, +amdgpu_cdna_op_S_ATOMIC_OR, +amdgpu_cdna_op_S_ATOMIC_OR_X2, +amdgpu_cdna_op_S_ATOMIC_SMAX, +amdgpu_cdna_op_S_ATOMIC_SMAX_X2, +amdgpu_cdna_op_S_ATOMIC_SMIN, +amdgpu_cdna_op_S_ATOMIC_SMIN_X2, +amdgpu_cdna_op_S_ATOMIC_SUB, +amdgpu_cdna_op_S_ATOMIC_SUB_X2, +amdgpu_cdna_op_S_ATOMIC_SWAP, +amdgpu_cdna_op_S_ATOMIC_SWAP_X2, +amdgpu_cdna_op_S_ATOMIC_UMAX, +amdgpu_cdna_op_S_ATOMIC_UMAX_X2, +amdgpu_cdna_op_S_ATOMIC_UMIN, +amdgpu_cdna_op_S_ATOMIC_UMIN_X2, +amdgpu_cdna_op_S_ATOMIC_XOR, +amdgpu_cdna_op_S_ATOMIC_XOR_X2, +amdgpu_cdna_op_S_BARRIER, +amdgpu_cdna_op_S_BCNT0_I32_B32, +amdgpu_cdna_op_S_BCNT0_I32_B64, +amdgpu_cdna_op_S_BCNT1_I32_B32, +amdgpu_cdna_op_S_BCNT1_I32_B64, +amdgpu_cdna_op_S_BFE_I32, +amdgpu_cdna_op_S_BFE_I64, +amdgpu_cdna_op_S_BFE_U32, +amdgpu_cdna_op_S_BFE_U64, +amdgpu_cdna_op_S_BFM_B32, +amdgpu_cdna_op_S_BFM_B64, +amdgpu_cdna_op_S_BITCMP0_B32, +amdgpu_cdna_op_S_BITCMP0_B64, +amdgpu_cdna_op_S_BITCMP1_B32, +amdgpu_cdna_op_S_BITCMP1_B64, +amdgpu_cdna_op_S_BITREPLICATE_B64_B32, +amdgpu_cdna_op_S_BITSET0_B32, +amdgpu_cdna_op_S_BITSET0_B64, +amdgpu_cdna_op_S_BITSET1_B32, +amdgpu_cdna_op_S_BITSET1_B64, +amdgpu_cdna_op_S_BRANCH, +amdgpu_cdna_op_S_BREV_B32, +amdgpu_cdna_op_S_BREV_B64, +amdgpu_cdna_op_S_BUFFER_ATOMIC_ADD, +amdgpu_cdna_op_S_BUFFER_ATOMIC_ADD_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_AND, +amdgpu_cdna_op_S_BUFFER_ATOMIC_AND_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_CMPSWAP, +amdgpu_cdna_op_S_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_DEC, +amdgpu_cdna_op_S_BUFFER_ATOMIC_DEC_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_INC, +amdgpu_cdna_op_S_BUFFER_ATOMIC_INC_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_OR, +amdgpu_cdna_op_S_BUFFER_ATOMIC_OR_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SMAX, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SMAX_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SMIN, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SMIN_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SUB, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SUB_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SWAP, +amdgpu_cdna_op_S_BUFFER_ATOMIC_SWAP_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_UMAX, +amdgpu_cdna_op_S_BUFFER_ATOMIC_UMAX_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_UMIN, +amdgpu_cdna_op_S_BUFFER_ATOMIC_UMIN_X2, +amdgpu_cdna_op_S_BUFFER_ATOMIC_XOR, +amdgpu_cdna_op_S_BUFFER_ATOMIC_XOR_X2, +amdgpu_cdna_op_S_BUFFER_LOAD_DWORD, +amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX16, +amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX2, +amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX4, +amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX8, +amdgpu_cdna_op_S_BUFFER_STORE_DWORD, +amdgpu_cdna_op_S_BUFFER_STORE_DWORDX2, +amdgpu_cdna_op_S_BUFFER_STORE_DWORDX4, +amdgpu_cdna_op_S_CALL_B64, +amdgpu_cdna_op_S_CBRANCH_CDBGSYS, +amdgpu_cdna_op_S_CBRANCH_CDBGSYS_AND_USER, +amdgpu_cdna_op_S_CBRANCH_CDBGSYS_OR_USER, +amdgpu_cdna_op_S_CBRANCH_CDBGUSER, +amdgpu_cdna_op_S_CBRANCH_EXECNZ, +amdgpu_cdna_op_S_CBRANCH_EXECZ, +amdgpu_cdna_op_S_CBRANCH_G_FORK, +amdgpu_cdna_op_S_CBRANCH_I_FORK, +amdgpu_cdna_op_S_CBRANCH_JOIN, +amdgpu_cdna_op_S_CBRANCH_SCC0, +amdgpu_cdna_op_S_CBRANCH_SCC1, +amdgpu_cdna_op_S_CBRANCH_VCCNZ, +amdgpu_cdna_op_S_CBRANCH_VCCZ, +amdgpu_cdna_op_S_CMOVK_I32, +amdgpu_cdna_op_S_CMOV_B32, +amdgpu_cdna_op_S_CMOV_B64, +amdgpu_cdna_op_S_CMPK_EQ_I32, +amdgpu_cdna_op_S_CMPK_EQ_U32, +amdgpu_cdna_op_S_CMPK_GE_I32, +amdgpu_cdna_op_S_CMPK_GE_U32, +amdgpu_cdna_op_S_CMPK_GT_I32, +amdgpu_cdna_op_S_CMPK_GT_U32, +amdgpu_cdna_op_S_CMPK_LE_I32, +amdgpu_cdna_op_S_CMPK_LE_U32, +amdgpu_cdna_op_S_CMPK_LG_I32, +amdgpu_cdna_op_S_CMPK_LG_U32, +amdgpu_cdna_op_S_CMPK_LT_I32, +amdgpu_cdna_op_S_CMPK_LT_U32, +amdgpu_cdna_op_S_CMP_EQ_I32, +amdgpu_cdna_op_S_CMP_EQ_U32, +amdgpu_cdna_op_S_CMP_EQ_U64, +amdgpu_cdna_op_S_CMP_GE_I32, +amdgpu_cdna_op_S_CMP_GE_U32, +amdgpu_cdna_op_S_CMP_GT_I32, +amdgpu_cdna_op_S_CMP_GT_U32, +amdgpu_cdna_op_S_CMP_LE_I32, +amdgpu_cdna_op_S_CMP_LE_U32, +amdgpu_cdna_op_S_CMP_LG_I32, +amdgpu_cdna_op_S_CMP_LG_U32, +amdgpu_cdna_op_S_CMP_LG_U64, +amdgpu_cdna_op_S_CMP_LT_I32, +amdgpu_cdna_op_S_CMP_LT_U32, +amdgpu_cdna_op_S_CSELECT_B32, +amdgpu_cdna_op_S_CSELECT_B64, +amdgpu_cdna_op_S_DCACHE_DISCARD, +amdgpu_cdna_op_S_DCACHE_DISCARD_X2, +amdgpu_cdna_op_S_DCACHE_INV, +amdgpu_cdna_op_S_DCACHE_INV_VOL, +amdgpu_cdna_op_S_DCACHE_WB, +amdgpu_cdna_op_S_DCACHE_WB_VOL, +amdgpu_cdna_op_S_DECPERFLEVEL, +amdgpu_cdna_op_S_ENDPGM, +amdgpu_cdna_op_S_ENDPGM_ORDERED_PS_DONE, +amdgpu_cdna_op_S_ENDPGM_SAVED, +amdgpu_cdna_op_S_FF0_I32_B32, +amdgpu_cdna_op_S_FF0_I32_B64, +amdgpu_cdna_op_S_FF1_I32_B32, +amdgpu_cdna_op_S_FF1_I32_B64, +amdgpu_cdna_op_S_FLBIT_I32, +amdgpu_cdna_op_S_FLBIT_I32_B32, +amdgpu_cdna_op_S_FLBIT_I32_B64, +amdgpu_cdna_op_S_FLBIT_I32_I64, +amdgpu_cdna_op_S_GETPC_B64, +amdgpu_cdna_op_S_GETREG_B32, +amdgpu_cdna_op_S_ICACHE_INV, +amdgpu_cdna_op_S_INCPERFLEVEL, +amdgpu_cdna_op_S_LOAD_DWORD, +amdgpu_cdna_op_S_LOAD_DWORDX16, +amdgpu_cdna_op_S_LOAD_DWORDX2, +amdgpu_cdna_op_S_LOAD_DWORDX4, +amdgpu_cdna_op_S_LOAD_DWORDX8, +amdgpu_cdna_op_S_LSHL1_ADD_U32, +amdgpu_cdna_op_S_LSHL2_ADD_U32, +amdgpu_cdna_op_S_LSHL3_ADD_U32, +amdgpu_cdna_op_S_LSHL4_ADD_U32, +amdgpu_cdna_op_S_LSHL_B32, +amdgpu_cdna_op_S_LSHL_B64, +amdgpu_cdna_op_S_LSHR_B32, +amdgpu_cdna_op_S_LSHR_B64, +amdgpu_cdna_op_S_MAX_I32, +amdgpu_cdna_op_S_MAX_U32, +amdgpu_cdna_op_S_MEMREALTIME, +amdgpu_cdna_op_S_MEMTIME, +amdgpu_cdna_op_S_MIN_I32, +amdgpu_cdna_op_S_MIN_U32, +amdgpu_cdna_op_S_MOVK_I32, +amdgpu_cdna_op_S_MOVRELD_B32, +amdgpu_cdna_op_S_MOVRELD_B64, +amdgpu_cdna_op_S_MOVRELS_B32, +amdgpu_cdna_op_S_MOVRELS_B64, +amdgpu_cdna_op_S_MOV_B32, +amdgpu_cdna_op_S_MOV_B64, +amdgpu_cdna_op_S_MULK_I32, +amdgpu_cdna_op_S_MUL_HI_I32, +amdgpu_cdna_op_S_MUL_HI_U32, +amdgpu_cdna_op_S_MUL_I32, +amdgpu_cdna_op_S_NAND_B32, +amdgpu_cdna_op_S_NAND_B64, +amdgpu_cdna_op_S_NAND_SAVEEXEC_B64, +amdgpu_cdna_op_S_NOP, +amdgpu_cdna_op_S_NOR_B32, +amdgpu_cdna_op_S_NOR_B64, +amdgpu_cdna_op_S_NOR_SAVEEXEC_B64, +amdgpu_cdna_op_S_NOT_B32, +amdgpu_cdna_op_S_NOT_B64, +amdgpu_cdna_op_S_ORN1_SAVEEXEC_B64, +amdgpu_cdna_op_S_ORN2_B32, +amdgpu_cdna_op_S_ORN2_B64, +amdgpu_cdna_op_S_ORN2_SAVEEXEC_B64, +amdgpu_cdna_op_S_OR_B32, +amdgpu_cdna_op_S_OR_B64, +amdgpu_cdna_op_S_OR_SAVEEXEC_B64, +amdgpu_cdna_op_S_PACK_HH_B32_B16, +amdgpu_cdna_op_S_PACK_LH_B32_B16, +amdgpu_cdna_op_S_PACK_LL_B32_B16, +amdgpu_cdna_op_S_QUADMASK_B32, +amdgpu_cdna_op_S_QUADMASK_B64, +amdgpu_cdna_op_S_RFE_B64, +amdgpu_cdna_op_S_RFE_RESTORE_B64, +amdgpu_cdna_op_S_SCRATCH_LOAD_DWORD, +amdgpu_cdna_op_S_SCRATCH_LOAD_DWORDX2, +amdgpu_cdna_op_S_SCRATCH_LOAD_DWORDX4, +amdgpu_cdna_op_S_SCRATCH_STORE_DWORD, +amdgpu_cdna_op_S_SCRATCH_STORE_DWORDX2, +amdgpu_cdna_op_S_SCRATCH_STORE_DWORDX4, +amdgpu_cdna_op_S_SENDMSG, +amdgpu_cdna_op_S_SENDMSGHALT, +amdgpu_cdna_op_S_SETHALT, +amdgpu_cdna_op_S_SETKILL, +amdgpu_cdna_op_S_SETPC_B64, +amdgpu_cdna_op_S_SETPRIO, +amdgpu_cdna_op_S_SETREG_B32, +amdgpu_cdna_op_S_SETREG_IMM32_B32, +amdgpu_cdna_op_S_SETVSKIP, +amdgpu_cdna_op_S_SET_GPR_IDX_IDX, +amdgpu_cdna_op_S_SET_GPR_IDX_MODE, +amdgpu_cdna_op_S_SET_GPR_IDX_OFF, +amdgpu_cdna_op_S_SET_GPR_IDX_ON, +amdgpu_cdna_op_S_SET_VALU_COEXEC_MODE, +amdgpu_cdna_op_S_SEXT_I32_I16, +amdgpu_cdna_op_S_SEXT_I32_I8, +amdgpu_cdna_op_S_SLEEP, +amdgpu_cdna_op_S_STORE_DWORD, +amdgpu_cdna_op_S_STORE_DWORDX2, +amdgpu_cdna_op_S_STORE_DWORDX4, +amdgpu_cdna_op_S_SUBB_U32, +amdgpu_cdna_op_S_SUB_I32, +amdgpu_cdna_op_S_SUB_U32, +amdgpu_cdna_op_S_SWAPPC_B64, +amdgpu_cdna_op_S_TRAP, +amdgpu_cdna_op_S_TTRACEDATA, +amdgpu_cdna_op_S_WAITCNT, +amdgpu_cdna_op_S_WAKEUP, +amdgpu_cdna_op_S_WQM_B32, +amdgpu_cdna_op_S_WQM_B64, +amdgpu_cdna_op_S_XNOR_B32, +amdgpu_cdna_op_S_XNOR_B64, +amdgpu_cdna_op_S_XNOR_SAVEEXEC_B64, +amdgpu_cdna_op_S_XOR_B32, +amdgpu_cdna_op_S_XOR_B64, +amdgpu_cdna_op_S_XOR_SAVEEXEC_B64, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_X, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_XY, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_X, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_XY, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_XYZ, +amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_XYZW, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_X, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_XY, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_X, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_XY, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_XYZ, +amdgpu_cdna_op_TBUFFER_STORE_FORMAT_XYZW, +amdgpu_cdna_op_V_ACCVGPR_MOV_B32, +amdgpu_cdna_op_V_ACCVGPR_READ, +amdgpu_cdna_op_V_ACCVGPR_WRITE, +amdgpu_cdna_op_V_ADD3_U32, +amdgpu_cdna_op_V_ADDC_CO_U32, +amdgpu_cdna_op_V_ADD_CO_U32, +amdgpu_cdna_op_V_ADD_F16, +amdgpu_cdna_op_V_ADD_F32, +amdgpu_cdna_op_V_ADD_F64, +amdgpu_cdna_op_V_ADD_I16, +amdgpu_cdna_op_V_ADD_I32, +amdgpu_cdna_op_V_ADD_LSHL_U32, +amdgpu_cdna_op_V_ADD_U16, +amdgpu_cdna_op_V_ADD_U32, +amdgpu_cdna_op_V_ALIGNBIT_B32, +amdgpu_cdna_op_V_ALIGNBYTE_B32, +amdgpu_cdna_op_V_AND_B32, +amdgpu_cdna_op_V_AND_OR_B32, +amdgpu_cdna_op_V_ASHRREV_I16, +amdgpu_cdna_op_V_ASHRREV_I32, +amdgpu_cdna_op_V_ASHRREV_I64, +amdgpu_cdna_op_V_BCNT_U32_B32, +amdgpu_cdna_op_V_BFE_I32, +amdgpu_cdna_op_V_BFE_U32, +amdgpu_cdna_op_V_BFI_B32, +amdgpu_cdna_op_V_BFM_B32, +amdgpu_cdna_op_V_BFREV_B32, +amdgpu_cdna_op_V_CEIL_F16, +amdgpu_cdna_op_V_CEIL_F32, +amdgpu_cdna_op_V_CEIL_F64, +amdgpu_cdna_op_V_CLREXCP, +amdgpu_cdna_op_V_CMPX_CLASS_F16, +amdgpu_cdna_op_V_CMPX_CLASS_F32, +amdgpu_cdna_op_V_CMPX_CLASS_F64, +amdgpu_cdna_op_V_CMPX_EQ_F16, +amdgpu_cdna_op_V_CMPX_EQ_F32, +amdgpu_cdna_op_V_CMPX_EQ_F64, +amdgpu_cdna_op_V_CMPX_EQ_I16, +amdgpu_cdna_op_V_CMPX_EQ_I32, +amdgpu_cdna_op_V_CMPX_EQ_I64, +amdgpu_cdna_op_V_CMPX_EQ_U16, +amdgpu_cdna_op_V_CMPX_EQ_U32, +amdgpu_cdna_op_V_CMPX_EQ_U64, +amdgpu_cdna_op_V_CMPX_F_F16, +amdgpu_cdna_op_V_CMPX_F_F32, +amdgpu_cdna_op_V_CMPX_F_F64, +amdgpu_cdna_op_V_CMPX_F_I16, +amdgpu_cdna_op_V_CMPX_F_I32, +amdgpu_cdna_op_V_CMPX_F_I64, +amdgpu_cdna_op_V_CMPX_F_U16, +amdgpu_cdna_op_V_CMPX_F_U32, +amdgpu_cdna_op_V_CMPX_F_U64, +amdgpu_cdna_op_V_CMPX_GE_F16, +amdgpu_cdna_op_V_CMPX_GE_F32, +amdgpu_cdna_op_V_CMPX_GE_F64, +amdgpu_cdna_op_V_CMPX_GE_I16, +amdgpu_cdna_op_V_CMPX_GE_I32, +amdgpu_cdna_op_V_CMPX_GE_I64, +amdgpu_cdna_op_V_CMPX_GE_U16, +amdgpu_cdna_op_V_CMPX_GE_U32, +amdgpu_cdna_op_V_CMPX_GE_U64, +amdgpu_cdna_op_V_CMPX_GT_F16, +amdgpu_cdna_op_V_CMPX_GT_F32, +amdgpu_cdna_op_V_CMPX_GT_F64, +amdgpu_cdna_op_V_CMPX_GT_I16, +amdgpu_cdna_op_V_CMPX_GT_I32, +amdgpu_cdna_op_V_CMPX_GT_I64, +amdgpu_cdna_op_V_CMPX_GT_U16, +amdgpu_cdna_op_V_CMPX_GT_U32, +amdgpu_cdna_op_V_CMPX_GT_U64, +amdgpu_cdna_op_V_CMPX_LE_F16, +amdgpu_cdna_op_V_CMPX_LE_F32, +amdgpu_cdna_op_V_CMPX_LE_F64, +amdgpu_cdna_op_V_CMPX_LE_I16, +amdgpu_cdna_op_V_CMPX_LE_I32, +amdgpu_cdna_op_V_CMPX_LE_I64, +amdgpu_cdna_op_V_CMPX_LE_U16, +amdgpu_cdna_op_V_CMPX_LE_U32, +amdgpu_cdna_op_V_CMPX_LE_U64, +amdgpu_cdna_op_V_CMPX_LG_F16, +amdgpu_cdna_op_V_CMPX_LG_F32, +amdgpu_cdna_op_V_CMPX_LG_F64, +amdgpu_cdna_op_V_CMPX_LT_F16, +amdgpu_cdna_op_V_CMPX_LT_F32, +amdgpu_cdna_op_V_CMPX_LT_F64, +amdgpu_cdna_op_V_CMPX_LT_I16, +amdgpu_cdna_op_V_CMPX_LT_I32, +amdgpu_cdna_op_V_CMPX_LT_I64, +amdgpu_cdna_op_V_CMPX_LT_U16, +amdgpu_cdna_op_V_CMPX_LT_U32, +amdgpu_cdna_op_V_CMPX_LT_U64, +amdgpu_cdna_op_V_CMPX_NEQ_F16, +amdgpu_cdna_op_V_CMPX_NEQ_F32, +amdgpu_cdna_op_V_CMPX_NEQ_F64, +amdgpu_cdna_op_V_CMPX_NE_I16, +amdgpu_cdna_op_V_CMPX_NE_I32, +amdgpu_cdna_op_V_CMPX_NE_I64, +amdgpu_cdna_op_V_CMPX_NE_U16, +amdgpu_cdna_op_V_CMPX_NE_U32, +amdgpu_cdna_op_V_CMPX_NE_U64, +amdgpu_cdna_op_V_CMPX_NGE_F16, +amdgpu_cdna_op_V_CMPX_NGE_F32, +amdgpu_cdna_op_V_CMPX_NGE_F64, +amdgpu_cdna_op_V_CMPX_NGT_F16, +amdgpu_cdna_op_V_CMPX_NGT_F32, +amdgpu_cdna_op_V_CMPX_NGT_F64, +amdgpu_cdna_op_V_CMPX_NLE_F16, +amdgpu_cdna_op_V_CMPX_NLE_F32, +amdgpu_cdna_op_V_CMPX_NLE_F64, +amdgpu_cdna_op_V_CMPX_NLG_F16, +amdgpu_cdna_op_V_CMPX_NLG_F32, +amdgpu_cdna_op_V_CMPX_NLG_F64, +amdgpu_cdna_op_V_CMPX_NLT_F16, +amdgpu_cdna_op_V_CMPX_NLT_F32, +amdgpu_cdna_op_V_CMPX_NLT_F64, +amdgpu_cdna_op_V_CMPX_O_F16, +amdgpu_cdna_op_V_CMPX_O_F32, +amdgpu_cdna_op_V_CMPX_O_F64, +amdgpu_cdna_op_V_CMPX_TRU_F16, +amdgpu_cdna_op_V_CMPX_TRU_F32, +amdgpu_cdna_op_V_CMPX_TRU_F64, +amdgpu_cdna_op_V_CMPX_T_I16, +amdgpu_cdna_op_V_CMPX_T_I32, +amdgpu_cdna_op_V_CMPX_T_I64, +amdgpu_cdna_op_V_CMPX_T_U16, +amdgpu_cdna_op_V_CMPX_T_U32, +amdgpu_cdna_op_V_CMPX_T_U64, +amdgpu_cdna_op_V_CMPX_U_F16, +amdgpu_cdna_op_V_CMPX_U_F32, +amdgpu_cdna_op_V_CMPX_U_F64, +amdgpu_cdna_op_V_CMP_CLASS_F16, +amdgpu_cdna_op_V_CMP_CLASS_F32, +amdgpu_cdna_op_V_CMP_CLASS_F64, +amdgpu_cdna_op_V_CMP_EQ_F16, +amdgpu_cdna_op_V_CMP_EQ_F32, +amdgpu_cdna_op_V_CMP_EQ_F64, +amdgpu_cdna_op_V_CMP_EQ_I16, +amdgpu_cdna_op_V_CMP_EQ_I32, +amdgpu_cdna_op_V_CMP_EQ_I64, +amdgpu_cdna_op_V_CMP_EQ_U16, +amdgpu_cdna_op_V_CMP_EQ_U32, +amdgpu_cdna_op_V_CMP_EQ_U64, +amdgpu_cdna_op_V_CMP_F_F16, +amdgpu_cdna_op_V_CMP_F_F32, +amdgpu_cdna_op_V_CMP_F_F64, +amdgpu_cdna_op_V_CMP_F_I16, +amdgpu_cdna_op_V_CMP_F_I32, +amdgpu_cdna_op_V_CMP_F_I64, +amdgpu_cdna_op_V_CMP_F_U16, +amdgpu_cdna_op_V_CMP_F_U32, +amdgpu_cdna_op_V_CMP_F_U64, +amdgpu_cdna_op_V_CMP_GE_F16, +amdgpu_cdna_op_V_CMP_GE_F32, +amdgpu_cdna_op_V_CMP_GE_F64, +amdgpu_cdna_op_V_CMP_GE_I16, +amdgpu_cdna_op_V_CMP_GE_I32, +amdgpu_cdna_op_V_CMP_GE_I64, +amdgpu_cdna_op_V_CMP_GE_U16, +amdgpu_cdna_op_V_CMP_GE_U32, +amdgpu_cdna_op_V_CMP_GE_U64, +amdgpu_cdna_op_V_CMP_GT_F16, +amdgpu_cdna_op_V_CMP_GT_F32, +amdgpu_cdna_op_V_CMP_GT_F64, +amdgpu_cdna_op_V_CMP_GT_I16, +amdgpu_cdna_op_V_CMP_GT_I32, +amdgpu_cdna_op_V_CMP_GT_I64, +amdgpu_cdna_op_V_CMP_GT_U16, +amdgpu_cdna_op_V_CMP_GT_U32, +amdgpu_cdna_op_V_CMP_GT_U64, +amdgpu_cdna_op_V_CMP_LE_F16, +amdgpu_cdna_op_V_CMP_LE_F32, +amdgpu_cdna_op_V_CMP_LE_F64, +amdgpu_cdna_op_V_CMP_LE_I16, +amdgpu_cdna_op_V_CMP_LE_I32, +amdgpu_cdna_op_V_CMP_LE_I64, +amdgpu_cdna_op_V_CMP_LE_U16, +amdgpu_cdna_op_V_CMP_LE_U32, +amdgpu_cdna_op_V_CMP_LE_U64, +amdgpu_cdna_op_V_CMP_LG_F16, +amdgpu_cdna_op_V_CMP_LG_F32, +amdgpu_cdna_op_V_CMP_LG_F64, +amdgpu_cdna_op_V_CMP_LT_F16, +amdgpu_cdna_op_V_CMP_LT_F32, +amdgpu_cdna_op_V_CMP_LT_F64, +amdgpu_cdna_op_V_CMP_LT_I16, +amdgpu_cdna_op_V_CMP_LT_I32, +amdgpu_cdna_op_V_CMP_LT_I64, +amdgpu_cdna_op_V_CMP_LT_U16, +amdgpu_cdna_op_V_CMP_LT_U32, +amdgpu_cdna_op_V_CMP_LT_U64, +amdgpu_cdna_op_V_CMP_NEQ_F16, +amdgpu_cdna_op_V_CMP_NEQ_F32, +amdgpu_cdna_op_V_CMP_NEQ_F64, +amdgpu_cdna_op_V_CMP_NE_I16, +amdgpu_cdna_op_V_CMP_NE_I32, +amdgpu_cdna_op_V_CMP_NE_I64, +amdgpu_cdna_op_V_CMP_NE_U16, +amdgpu_cdna_op_V_CMP_NE_U32, +amdgpu_cdna_op_V_CMP_NE_U64, +amdgpu_cdna_op_V_CMP_NGE_F16, +amdgpu_cdna_op_V_CMP_NGE_F32, +amdgpu_cdna_op_V_CMP_NGE_F64, +amdgpu_cdna_op_V_CMP_NGT_F16, +amdgpu_cdna_op_V_CMP_NGT_F32, +amdgpu_cdna_op_V_CMP_NGT_F64, +amdgpu_cdna_op_V_CMP_NLE_F16, +amdgpu_cdna_op_V_CMP_NLE_F32, +amdgpu_cdna_op_V_CMP_NLE_F64, +amdgpu_cdna_op_V_CMP_NLG_F16, +amdgpu_cdna_op_V_CMP_NLG_F32, +amdgpu_cdna_op_V_CMP_NLG_F64, +amdgpu_cdna_op_V_CMP_NLT_F16, +amdgpu_cdna_op_V_CMP_NLT_F32, +amdgpu_cdna_op_V_CMP_NLT_F64, +amdgpu_cdna_op_V_CMP_O_F16, +amdgpu_cdna_op_V_CMP_O_F32, +amdgpu_cdna_op_V_CMP_O_F64, +amdgpu_cdna_op_V_CMP_TRU_F16, +amdgpu_cdna_op_V_CMP_TRU_F32, +amdgpu_cdna_op_V_CMP_TRU_F64, +amdgpu_cdna_op_V_CMP_T_I16, +amdgpu_cdna_op_V_CMP_T_I32, +amdgpu_cdna_op_V_CMP_T_I64, +amdgpu_cdna_op_V_CMP_T_U16, +amdgpu_cdna_op_V_CMP_T_U32, +amdgpu_cdna_op_V_CMP_T_U64, +amdgpu_cdna_op_V_CMP_U_F16, +amdgpu_cdna_op_V_CMP_U_F32, +amdgpu_cdna_op_V_CMP_U_F64, +amdgpu_cdna_op_V_CNDMASK_B32, +amdgpu_cdna_op_V_COS_F16, +amdgpu_cdna_op_V_COS_F32, +amdgpu_cdna_op_V_CUBEID_F32, +amdgpu_cdna_op_V_CUBEMA_F32, +amdgpu_cdna_op_V_CUBESC_F32, +amdgpu_cdna_op_V_CUBETC_F32, +amdgpu_cdna_op_V_CVT_F16_F32, +amdgpu_cdna_op_V_CVT_F16_I16, +amdgpu_cdna_op_V_CVT_F16_U16, +amdgpu_cdna_op_V_CVT_F32_BF8, +amdgpu_cdna_op_V_CVT_F32_F16, +amdgpu_cdna_op_V_CVT_F32_F64, +amdgpu_cdna_op_V_CVT_F32_FP8, +amdgpu_cdna_op_V_CVT_F32_I32, +amdgpu_cdna_op_V_CVT_F32_U32, +amdgpu_cdna_op_V_CVT_F32_UBYTE0, +amdgpu_cdna_op_V_CVT_F32_UBYTE1, +amdgpu_cdna_op_V_CVT_F32_UBYTE2, +amdgpu_cdna_op_V_CVT_F32_UBYTE3, +amdgpu_cdna_op_V_CVT_F64_F32, +amdgpu_cdna_op_V_CVT_F64_I32, +amdgpu_cdna_op_V_CVT_F64_U32, +amdgpu_cdna_op_V_CVT_FLR_I32_F32, +amdgpu_cdna_op_V_CVT_I16_F16, +amdgpu_cdna_op_V_CVT_I32_F32, +amdgpu_cdna_op_V_CVT_I32_F64, +amdgpu_cdna_op_V_CVT_NORM_I16_F16, +amdgpu_cdna_op_V_CVT_NORM_U16_F16, +amdgpu_cdna_op_V_CVT_OFF_F32_I4, +amdgpu_cdna_op_V_CVT_PKACCUM_U8_F32, +amdgpu_cdna_op_V_CVT_PKNORM_I16_F16, +amdgpu_cdna_op_V_CVT_PKNORM_I16_F32, +amdgpu_cdna_op_V_CVT_PKNORM_U16_F16, +amdgpu_cdna_op_V_CVT_PKNORM_U16_F32, +amdgpu_cdna_op_V_CVT_PKRTZ_F16_F32, +amdgpu_cdna_op_V_CVT_PK_BF8_F32, +amdgpu_cdna_op_V_CVT_PK_F32_BF8, +amdgpu_cdna_op_V_CVT_PK_F32_FP8, +amdgpu_cdna_op_V_CVT_PK_FP8_F32, +amdgpu_cdna_op_V_CVT_PK_I16_I32, +amdgpu_cdna_op_V_CVT_PK_U16_U32, +amdgpu_cdna_op_V_CVT_PK_U8_F32, +amdgpu_cdna_op_V_CVT_RPI_I32_F32, +amdgpu_cdna_op_V_CVT_SR_BF8_F32, +amdgpu_cdna_op_V_CVT_SR_FP8_F32, +amdgpu_cdna_op_V_CVT_U16_F16, +amdgpu_cdna_op_V_CVT_U32_F32, +amdgpu_cdna_op_V_CVT_U32_F64, +amdgpu_cdna_op_V_DIV_FIXUP_F16, +amdgpu_cdna_op_V_DIV_FIXUP_F32, +amdgpu_cdna_op_V_DIV_FIXUP_F64, +amdgpu_cdna_op_V_DIV_FIXUP_LEGACY_F16, +amdgpu_cdna_op_V_DIV_FMAS_F32, +amdgpu_cdna_op_V_DIV_FMAS_F64, +amdgpu_cdna_op_V_DIV_SCALE_F32, +amdgpu_cdna_op_V_DIV_SCALE_F64, +amdgpu_cdna_op_V_DOT2C_F32_F16, +amdgpu_cdna_op_V_DOT2C_I32_I16, +amdgpu_cdna_op_V_DOT2_F32_F16, +amdgpu_cdna_op_V_DOT2_I32_I16, +amdgpu_cdna_op_V_DOT2_U32_U16, +amdgpu_cdna_op_V_DOT4C_I32_I8, +amdgpu_cdna_op_V_DOT4_I32_I8, +amdgpu_cdna_op_V_DOT4_U32_U8, +amdgpu_cdna_op_V_DOT8C_I32_I4, +amdgpu_cdna_op_V_DOT8_I32_I4, +amdgpu_cdna_op_V_DOT8_U32_U4, +amdgpu_cdna_op_V_EXP_F16, +amdgpu_cdna_op_V_EXP_F32, +amdgpu_cdna_op_V_EXP_LEGACY_F32, +amdgpu_cdna_op_V_FFBH_I32, +amdgpu_cdna_op_V_FFBH_U32, +amdgpu_cdna_op_V_FFBL_B32, +amdgpu_cdna_op_V_FLOOR_F16, +amdgpu_cdna_op_V_FLOOR_F32, +amdgpu_cdna_op_V_FLOOR_F64, +amdgpu_cdna_op_V_FMAAK_F32, +amdgpu_cdna_op_V_FMAC_F32, +amdgpu_cdna_op_V_FMAC_F64, +amdgpu_cdna_op_V_FMAMK_F32, +amdgpu_cdna_op_V_FMA_F16, +amdgpu_cdna_op_V_FMA_F32, +amdgpu_cdna_op_V_FMA_F64, +amdgpu_cdna_op_V_FMA_LEGACY_F16, +amdgpu_cdna_op_V_FRACT_F16, +amdgpu_cdna_op_V_FRACT_F32, +amdgpu_cdna_op_V_FRACT_F64, +amdgpu_cdna_op_V_FREXP_EXP_I16_F16, +amdgpu_cdna_op_V_FREXP_EXP_I32_F32, +amdgpu_cdna_op_V_FREXP_EXP_I32_F64, +amdgpu_cdna_op_V_FREXP_MANT_F16, +amdgpu_cdna_op_V_FREXP_MANT_F32, +amdgpu_cdna_op_V_FREXP_MANT_F64, +amdgpu_cdna_op_V_LDEXP_F16, +amdgpu_cdna_op_V_LDEXP_F32, +amdgpu_cdna_op_V_LDEXP_F64, +amdgpu_cdna_op_V_LERP_U8, +amdgpu_cdna_op_V_LOG_F16, +amdgpu_cdna_op_V_LOG_F32, +amdgpu_cdna_op_V_LOG_LEGACY_F32, +amdgpu_cdna_op_V_LSHLREV_B16, +amdgpu_cdna_op_V_LSHLREV_B32, +amdgpu_cdna_op_V_LSHLREV_B64, +amdgpu_cdna_op_V_LSHL_ADD_U32, +amdgpu_cdna_op_V_LSHL_ADD_U64, +amdgpu_cdna_op_V_LSHL_OR_B32, +amdgpu_cdna_op_V_LSHRREV_B16, +amdgpu_cdna_op_V_LSHRREV_B32, +amdgpu_cdna_op_V_LSHRREV_B64, +amdgpu_cdna_op_V_MAC_F16, +amdgpu_cdna_op_V_MADAK_F16, +amdgpu_cdna_op_V_MADMK_F16, +amdgpu_cdna_op_V_MAD_F16, +amdgpu_cdna_op_V_MAD_I16, +amdgpu_cdna_op_V_MAD_I32_I16, +amdgpu_cdna_op_V_MAD_I32_I24, +amdgpu_cdna_op_V_MAD_I64_I32, +amdgpu_cdna_op_V_MAD_LEGACY_F16, +amdgpu_cdna_op_V_MAD_LEGACY_I16, +amdgpu_cdna_op_V_MAD_LEGACY_U16, +amdgpu_cdna_op_V_MAD_MIXHI_F16, +amdgpu_cdna_op_V_MAD_MIXLO_F16, +amdgpu_cdna_op_V_MAD_MIX_F32, +amdgpu_cdna_op_V_MAD_U16, +amdgpu_cdna_op_V_MAD_U32_U16, +amdgpu_cdna_op_V_MAD_U32_U24, +amdgpu_cdna_op_V_MAD_U64_U32, +amdgpu_cdna_op_V_MAX3_F16, +amdgpu_cdna_op_V_MAX3_F32, +amdgpu_cdna_op_V_MAX3_I16, +amdgpu_cdna_op_V_MAX3_I32, +amdgpu_cdna_op_V_MAX3_U16, +amdgpu_cdna_op_V_MAX3_U32, +amdgpu_cdna_op_V_MAX_F16, +amdgpu_cdna_op_V_MAX_F32, +amdgpu_cdna_op_V_MAX_F64, +amdgpu_cdna_op_V_MAX_I16, +amdgpu_cdna_op_V_MAX_I32, +amdgpu_cdna_op_V_MAX_U16, +amdgpu_cdna_op_V_MAX_U32, +amdgpu_cdna_op_V_MBCNT_HI_U32_B32, +amdgpu_cdna_op_V_MBCNT_LO_U32_B32, +amdgpu_cdna_op_V_MED3_F16, +amdgpu_cdna_op_V_MED3_F32, +amdgpu_cdna_op_V_MED3_I16, +amdgpu_cdna_op_V_MED3_I32, +amdgpu_cdna_op_V_MED3_U16, +amdgpu_cdna_op_V_MED3_U32, +amdgpu_cdna_op_V_MFMA_F32_16X16X16_BF16, +amdgpu_cdna_op_V_MFMA_F32_16X16X16_F16, +amdgpu_cdna_op_V_MFMA_F32_16X16X1_4B_F32, +amdgpu_cdna_op_V_MFMA_F32_16X16X32_BF8_BF8, +amdgpu_cdna_op_V_MFMA_F32_16X16X32_BF8_FP8, +amdgpu_cdna_op_V_MFMA_F32_16X16X32_FP8_BF8, +amdgpu_cdna_op_V_MFMA_F32_16X16X32_FP8_FP8, +amdgpu_cdna_op_V_MFMA_F32_16X16X4_4B_BF16, +amdgpu_cdna_op_V_MFMA_F32_16X16X4_4B_F16, +amdgpu_cdna_op_V_MFMA_F32_16X16X4_F32, +amdgpu_cdna_op_V_MFMA_F32_16X16X8_XF32, +amdgpu_cdna_op_V_MFMA_F32_32X32X16_BF8_BF8, +amdgpu_cdna_op_V_MFMA_F32_32X32X16_BF8_FP8, +amdgpu_cdna_op_V_MFMA_F32_32X32X16_FP8_BF8, +amdgpu_cdna_op_V_MFMA_F32_32X32X16_FP8_FP8, +amdgpu_cdna_op_V_MFMA_F32_32X32X1_2B_F32, +amdgpu_cdna_op_V_MFMA_F32_32X32X2_F32, +amdgpu_cdna_op_V_MFMA_F32_32X32X4_2B_BF16, +amdgpu_cdna_op_V_MFMA_F32_32X32X4_2B_F16, +amdgpu_cdna_op_V_MFMA_F32_32X32X4_XF32, +amdgpu_cdna_op_V_MFMA_F32_32X32X8_BF16, +amdgpu_cdna_op_V_MFMA_F32_32X32X8_F16, +amdgpu_cdna_op_V_MFMA_F32_4X4X1_16B_F32, +amdgpu_cdna_op_V_MFMA_F32_4X4X4_16B_BF16, +amdgpu_cdna_op_V_MFMA_F32_4X4X4_16B_F16, +amdgpu_cdna_op_V_MFMA_F64_16X16X4_F64, +amdgpu_cdna_op_V_MFMA_F64_4X4X4_4B_F64, +amdgpu_cdna_op_V_MFMA_I32_16X16X32_I8, +amdgpu_cdna_op_V_MFMA_I32_16X16X4_4B_I8, +amdgpu_cdna_op_V_MFMA_I32_32X32X16_I8, +amdgpu_cdna_op_V_MFMA_I32_32X32X4_2B_I8, +amdgpu_cdna_op_V_MFMA_I32_4X4X4_16B_I8, +amdgpu_cdna_op_V_MIN3_F16, +amdgpu_cdna_op_V_MIN3_F32, +amdgpu_cdna_op_V_MIN3_I16, +amdgpu_cdna_op_V_MIN3_I32, +amdgpu_cdna_op_V_MIN3_U16, +amdgpu_cdna_op_V_MIN3_U32, +amdgpu_cdna_op_V_MIN_F16, +amdgpu_cdna_op_V_MIN_F32, +amdgpu_cdna_op_V_MIN_F64, +amdgpu_cdna_op_V_MIN_I16, +amdgpu_cdna_op_V_MIN_I32, +amdgpu_cdna_op_V_MIN_U16, +amdgpu_cdna_op_V_MIN_U32, +amdgpu_cdna_op_V_MOV_B32, +amdgpu_cdna_op_V_MOV_B64, +amdgpu_cdna_op_V_MQSAD_PK_U16_U8, +amdgpu_cdna_op_V_MQSAD_U32_U8, +amdgpu_cdna_op_V_MSAD_U8, +amdgpu_cdna_op_V_MUL_F16, +amdgpu_cdna_op_V_MUL_F32, +amdgpu_cdna_op_V_MUL_F64, +amdgpu_cdna_op_V_MUL_HI_I32, +amdgpu_cdna_op_V_MUL_HI_I32_I24, +amdgpu_cdna_op_V_MUL_HI_U32, +amdgpu_cdna_op_V_MUL_HI_U32_U24, +amdgpu_cdna_op_V_MUL_I32_I24, +amdgpu_cdna_op_V_MUL_LEGACY_F32, +amdgpu_cdna_op_V_MUL_LO_U16, +amdgpu_cdna_op_V_MUL_LO_U32, +amdgpu_cdna_op_V_MUL_U32_U24, +amdgpu_cdna_op_V_NOP, +amdgpu_cdna_op_V_NOT_B32, +amdgpu_cdna_op_V_OR3_B32, +amdgpu_cdna_op_V_OR_B32, +amdgpu_cdna_op_V_PACK_B32_F16, +amdgpu_cdna_op_V_PERM_B32, +amdgpu_cdna_op_V_PK_ADD_F16, +amdgpu_cdna_op_V_PK_ADD_F32, +amdgpu_cdna_op_V_PK_ADD_I16, +amdgpu_cdna_op_V_PK_ADD_U16, +amdgpu_cdna_op_V_PK_ASHRREV_I16, +amdgpu_cdna_op_V_PK_FMAC_F16, +amdgpu_cdna_op_V_PK_FMA_F16, +amdgpu_cdna_op_V_PK_FMA_F32, +amdgpu_cdna_op_V_PK_LSHLREV_B16, +amdgpu_cdna_op_V_PK_LSHRREV_B16, +amdgpu_cdna_op_V_PK_MAD_I16, +amdgpu_cdna_op_V_PK_MAD_U16, +amdgpu_cdna_op_V_PK_MAX_F16, +amdgpu_cdna_op_V_PK_MAX_I16, +amdgpu_cdna_op_V_PK_MAX_U16, +amdgpu_cdna_op_V_PK_MIN_F16, +amdgpu_cdna_op_V_PK_MIN_I16, +amdgpu_cdna_op_V_PK_MIN_U16, +amdgpu_cdna_op_V_PK_MOV_B32, +amdgpu_cdna_op_V_PK_MUL_F16, +amdgpu_cdna_op_V_PK_MUL_F32, +amdgpu_cdna_op_V_PK_MUL_LO_U16, +amdgpu_cdna_op_V_PK_SUB_I16, +amdgpu_cdna_op_V_PK_SUB_U16, +amdgpu_cdna_op_V_QSAD_PK_U16_U8, +amdgpu_cdna_op_V_RCP_F16, +amdgpu_cdna_op_V_RCP_F32, +amdgpu_cdna_op_V_RCP_F64, +amdgpu_cdna_op_V_RCP_IFLAG_F32, +amdgpu_cdna_op_V_READFIRSTLANE_B32, +amdgpu_cdna_op_V_READLANE_B32, +amdgpu_cdna_op_V_RNDNE_F16, +amdgpu_cdna_op_V_RNDNE_F32, +amdgpu_cdna_op_V_RNDNE_F64, +amdgpu_cdna_op_V_RSQ_F16, +amdgpu_cdna_op_V_RSQ_F32, +amdgpu_cdna_op_V_RSQ_F64, +amdgpu_cdna_op_V_SAD_HI_U8, +amdgpu_cdna_op_V_SAD_U16, +amdgpu_cdna_op_V_SAD_U32, +amdgpu_cdna_op_V_SAD_U8, +amdgpu_cdna_op_V_SAT_PK_U8_I16, +amdgpu_cdna_op_V_SCREEN_PARTITION_4SE_B32, +amdgpu_cdna_op_V_SIN_F16, +amdgpu_cdna_op_V_SIN_F32, +amdgpu_cdna_op_V_SMFMAC_F32_16X16X32_BF16, +amdgpu_cdna_op_V_SMFMAC_F32_16X16X32_F16, +amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_BF8_BF8, +amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_BF8_FP8, +amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_FP8_BF8, +amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_FP8_FP8, +amdgpu_cdna_op_V_SMFMAC_F32_32X32X16_BF16, +amdgpu_cdna_op_V_SMFMAC_F32_32X32X16_F16, +amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_BF8_BF8, +amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_BF8_FP8, +amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_FP8_BF8, +amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_FP8_FP8, +amdgpu_cdna_op_V_SMFMAC_I32_16X16X64_I8, +amdgpu_cdna_op_V_SMFMAC_I32_32X32X32_I8, +amdgpu_cdna_op_V_SQRT_F16, +amdgpu_cdna_op_V_SQRT_F32, +amdgpu_cdna_op_V_SQRT_F64, +amdgpu_cdna_op_V_SUBBREV_CO_U32, +amdgpu_cdna_op_V_SUBB_CO_U32, +amdgpu_cdna_op_V_SUBREV_CO_U32, +amdgpu_cdna_op_V_SUBREV_F16, +amdgpu_cdna_op_V_SUBREV_F32, +amdgpu_cdna_op_V_SUBREV_U16, +amdgpu_cdna_op_V_SUBREV_U32, +amdgpu_cdna_op_V_SUB_CO_U32, +amdgpu_cdna_op_V_SUB_F16, +amdgpu_cdna_op_V_SUB_F32, +amdgpu_cdna_op_V_SUB_I16, +amdgpu_cdna_op_V_SUB_I32, +amdgpu_cdna_op_V_SUB_U16, +amdgpu_cdna_op_V_SUB_U32, +amdgpu_cdna_op_V_SWAP_B32, +amdgpu_cdna_op_V_TRIG_PREOP_F64, +amdgpu_cdna_op_V_TRUNC_F16, +amdgpu_cdna_op_V_TRUNC_F32, +amdgpu_cdna_op_V_TRUNC_F64, +amdgpu_cdna_op_V_WRITELANE_B32, +amdgpu_cdna_op_V_XAD_U32, +amdgpu_cdna_op_V_XNOR_B32, +amdgpu_cdna_op_V_XOR_B32, diff --git a/common/h/amdgpu_cdna_sys_regs.h b/common/h/amdgpu_cdna_sys_regs.h new file mode 100644 index 0000000000..c90bf12e57 --- /dev/null +++ b/common/h/amdgpu_cdna_sys_regs.h @@ -0,0 +1,1563 @@ +#ifndef DYNINST_AMDGPU_CDNA_SYS_REGS_H +#define DYNINST_AMDGPU_CDNA_SYS_REGS_H +DEF_REGISTER(address_mode_32, Arch_amdgpu_cdna | HWR | BITS_32 | 0,"amdgpu_cdna"); +DEF_REGISTER(exec, Arch_amdgpu_cdna | HWR | BITS_64 | 1,"amdgpu_cdna"); +DEF_REGISTER(exec_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 1,"amdgpu_cdna"); +DEF_REGISTER(exec_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 1,"amdgpu_cdna"); +DEF_REGISTER(expcnt, Arch_amdgpu_cdna | HWR | BITS_3 | 2,"amdgpu_cdna"); +DEF_REGISTER(export_icount, Arch_amdgpu_cdna | HWR | BITS_8 | 3,"amdgpu_cdna"); +DEF_REGISTER(flat_scratch, Arch_amdgpu_cdna | HWR | BITS_64 | 4,"amdgpu_cdna"); +DEF_REGISTER(flat_scratch_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 4,"amdgpu_cdna"); +DEF_REGISTER(flat_scratch_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 4,"amdgpu_cdna"); +DEF_REGISTER(gpr_alloc, Arch_amdgpu_cdna | HWR | BITS_32 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpr_base, Arch_amdgpu_cdna | 0x0 | BITS_6 | 0x8000 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpt_size, Arch_amdgpu_cdna | 0x80000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna"); +DEF_REGISTER(sgpr_base, Arch_amdgpu_cdna | 0x100000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna"); +DEF_REGISTER(sgpr_size, Arch_amdgpu_cdna | 0x180000 | BITS_4 | 0x8000 | 5,"amdgpu_cdna"); +DEF_REGISTER(ib_sts, Arch_amdgpu_cdna | HWR | BITS_32 | 6,"amdgpu_cdna"); +DEF_REGISTER(exp_cnt, Arch_amdgpu_cdna | 0x40000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna"); +DEF_REGISTER(lgkm_cnt, Arch_amdgpu_cdna | 0x80000 | BITS_4 | 0x8000 | 6,"amdgpu_cdna"); +DEF_REGISTER(valu_cnt, Arch_amdgpu_cdna | 0xc0000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna"); +DEF_REGISTER(vm_cnt, Arch_amdgpu_cdna | 0xf0000 | BITS_6 | 0x8000 | 6,"amdgpu_cdna"); +DEF_REGISTER(lds_alloc, Arch_amdgpu_cdna | HWR | BITS_32 | 7,"amdgpu_cdna"); +DEF_REGISTER(lds_base, Arch_amdgpu_cdna | 0x0 | BITS_8 | 0x8000 | 7,"amdgpu_cdna"); +DEF_REGISTER(lds_size, Arch_amdgpu_cdna | 0xc0000 | BITS_9 | 0x8000 | 7,"amdgpu_cdna"); +DEF_REGISTER(lds_gds_constant_message_count, Arch_amdgpu_cdna | HWR | BITS_8 | 8,"amdgpu_cdna"); +DEF_REGISTER(lgkmcnt, Arch_amdgpu_cdna | HWR | BITS_4 | 9,"amdgpu_cdna"); +DEF_REGISTER(m0, Arch_amdgpu_cdna | HWR | BITS_32 | 10,"amdgpu_cdna"); +DEF_REGISTER(gds_size, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(lds_direct_address, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(lds_interpolation_parameter_offset, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(lds_memory_vfetch_offset, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(lds_direct_data_type, Arch_amdgpu_cdna | 0x100000 | BITS_3 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(lds_interpolation_new_prim_mask, Arch_amdgpu_cdna | 0x100000 | BITS_15 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(gds_base, Arch_amdgpu_cdna | 0x100000 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); +DEF_REGISTER(mode, Arch_amdgpu_cdna | HWR | BITS_32 | 11,"amdgpu_cdna"); +DEF_REGISTER(fp_round, Arch_amdgpu_cdna | 0x0 | BITS_4 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(fp_denorm, Arch_amdgpu_cdna | 0x40000 | BITS_4 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(dx10_clamp, Arch_amdgpu_cdna | 0x80000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(ieee, Arch_amdgpu_cdna | 0x90000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(lod_clamped, Arch_amdgpu_cdna | 0xa0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(debug, Arch_amdgpu_cdna | 0xb0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(excp_en, Arch_amdgpu_cdna | 0xc0000 | BITS_7 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(fp16_ovfl, Arch_amdgpu_cdna | 0x170000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(pops_packer0, Arch_amdgpu_cdna | 0x180000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(pops_packer1, Arch_amdgpu_cdna | 0x190000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(disable_perf, Arch_amdgpu_cdna | 0x1a0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(gpr_idx_en, Arch_amdgpu_cdna | 0x1b0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(vskip, Arch_amdgpu_cdna | 0x1c0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(csp, Arch_amdgpu_cdna | 0x1d0000 | BITS_3 | 0x8000 | 11,"amdgpu_cdna"); +DEF_REGISTER(pc, Arch_amdgpu_cdna | PC | BITS_48 | 0,"amdgpu_cdna"); +DEF_REGISTER(pops_exiting_wave_id, Arch_amdgpu_cdna | HWR | BITS_64 | 12,"amdgpu_cdna"); +DEF_REGISTER(private_base, Arch_amdgpu_cdna | HWR | BITS_64 | 13,"amdgpu_cdna"); +DEF_REGISTER(private_limit, Arch_amdgpu_cdna | HWR | BITS_64 | 14,"amdgpu_cdna"); +DEF_REGISTER(shared_base, Arch_amdgpu_cdna | HWR | BITS_64 | 15,"amdgpu_cdna"); +DEF_REGISTER(shared_limit, Arch_amdgpu_cdna | HWR | BITS_64 | 16,"amdgpu_cdna"); +DEF_REGISTER(status, Arch_amdgpu_cdna | HWR | BITS_32 | 17,"amdgpu_cdna"); +DEF_REGISTER(scc, Arch_amdgpu_cdna | 0x0 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(spi_prio, Arch_amdgpu_cdna | 0x10000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(wave_prio, Arch_amdgpu_cdna | 0x30000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(priv, Arch_amdgpu_cdna | 0x50000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(trap_en, Arch_amdgpu_cdna | 0x60000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(ttrace_en, Arch_amdgpu_cdna | 0x70000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(export_rdy, Arch_amdgpu_cdna | 0x80000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(execz, Arch_amdgpu_cdna | 0x90000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(vccz, Arch_amdgpu_cdna | 0xa0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(in_tg, Arch_amdgpu_cdna | 0xb0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(in_barrier, Arch_amdgpu_cdna | 0xc0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(halt, Arch_amdgpu_cdna | 0xd0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(trap, Arch_amdgpu_cdna | 0xe0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(ttrace_cu_en, Arch_amdgpu_cdna | 0xf0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(valid, Arch_amdgpu_cdna | 0x100000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(ecc_err, Arch_amdgpu_cdna | 0x110000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(skin_export, Arch_amdgpu_cdna | 0x120000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(perf_en, Arch_amdgpu_cdna | 0x130000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(cond_dbg_user, Arch_amdgpu_cdna | 0x140000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(cond_dbg_sys, Arch_amdgpu_cdna | 0x150000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(allow_replay, Arch_amdgpu_cdna | 0x160000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(must_export, Arch_amdgpu_cdna | 0x1b0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); +DEF_REGISTER(tba, Arch_amdgpu_cdna | HWR | BITS_64 | 18,"amdgpu_cdna"); +DEF_REGISTER(tid, Arch_amdgpu_cdna | HWR | BITS_32 | 19,"amdgpu_cdna"); +DEF_REGISTER(tma, Arch_amdgpu_cdna | HWR | BITS_64 | 20,"amdgpu_cdna"); +DEF_REGISTER(trap_base_address, Arch_amdgpu_cdna | HWR | BITS_64 | 21,"amdgpu_cdna"); +DEF_REGISTER(trap_memory_address, Arch_amdgpu_cdna | HWR | BITS_64 | 22,"amdgpu_cdna"); +DEF_REGISTER(ttmp0, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 0,"amdgpu_cdna"); +DEF_REGISTER(ttmp1, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 1,"amdgpu_cdna"); +DEF_REGISTER(ttmp10, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 2,"amdgpu_cdna"); +DEF_REGISTER(ttmp11, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 3,"amdgpu_cdna"); +DEF_REGISTER(ttmp12, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 4,"amdgpu_cdna"); +DEF_REGISTER(ttmp13, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 5,"amdgpu_cdna"); +DEF_REGISTER(ttmp14, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 6,"amdgpu_cdna"); +DEF_REGISTER(ttmp15, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 7,"amdgpu_cdna"); +DEF_REGISTER(ttmp2, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 8,"amdgpu_cdna"); +DEF_REGISTER(ttmp3, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 9,"amdgpu_cdna"); +DEF_REGISTER(ttmp4, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 10,"amdgpu_cdna"); +DEF_REGISTER(ttmp5, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 11,"amdgpu_cdna"); +DEF_REGISTER(ttmp6, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 12,"amdgpu_cdna"); +DEF_REGISTER(ttmp7, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 13,"amdgpu_cdna"); +DEF_REGISTER(ttmp8, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 14,"amdgpu_cdna"); +DEF_REGISTER(ttmp9, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 15,"amdgpu_cdna"); +DEF_REGISTER(vcc, Arch_amdgpu_cdna | HWR | BITS_64 | 23,"amdgpu_cdna"); +DEF_REGISTER(vcc_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 23,"amdgpu_cdna"); +DEF_REGISTER(vcc_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 23,"amdgpu_cdna"); +DEF_REGISTER(vectory_memory_icount, Arch_amdgpu_cdna | HWR | BITS_8 | 24,"amdgpu_cdna"); +DEF_REGISTER(vmcnt, Arch_amdgpu_cdna | HWR | BITS_6 | 25,"amdgpu_cdna"); +DEF_REGISTER(xnack_mask, Arch_amdgpu_cdna | HWR | BITS_64 | 26,"amdgpu_cdna"); +DEF_REGISTER(xnack_mask_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 26,"amdgpu_cdna"); +DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 26,"amdgpu_cdna"); +DEF_REGISTER(sgpr0, Arch_amdgpu_cdna | SGPR | BITS_32 | 0,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_0, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_0, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_0, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec16_0, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna"); +DEF_REGISTER(sgpr1, Arch_amdgpu_cdna | SGPR | BITS_32 | 1,"amdgpu_cdna"); +DEF_REGISTER(sgpr2, Arch_amdgpu_cdna | SGPR | BITS_32 | 2,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_2, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna"); +DEF_REGISTER(sgpr3, Arch_amdgpu_cdna | SGPR | BITS_32 | 3,"amdgpu_cdna"); +DEF_REGISTER(sgpr4, Arch_amdgpu_cdna | SGPR | BITS_32 | 4,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_4, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_4, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna"); +DEF_REGISTER(sgpr5, Arch_amdgpu_cdna | SGPR | BITS_32 | 5,"amdgpu_cdna"); +DEF_REGISTER(sgpr6, Arch_amdgpu_cdna | SGPR | BITS_32 | 6,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_6, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna"); +DEF_REGISTER(sgpr7, Arch_amdgpu_cdna | SGPR | BITS_32 | 7,"amdgpu_cdna"); +DEF_REGISTER(sgpr8, Arch_amdgpu_cdna | SGPR | BITS_32 | 8,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_8, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_8, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_8, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna"); +DEF_REGISTER(sgpr9, Arch_amdgpu_cdna | SGPR | BITS_32 | 9,"amdgpu_cdna"); +DEF_REGISTER(sgpr10, Arch_amdgpu_cdna | SGPR | BITS_32 | 10,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_10, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna"); +DEF_REGISTER(sgpr11, Arch_amdgpu_cdna | SGPR | BITS_32 | 11,"amdgpu_cdna"); +DEF_REGISTER(sgpr12, Arch_amdgpu_cdna | SGPR | BITS_32 | 12,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_12, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_12, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna"); +DEF_REGISTER(sgpr13, Arch_amdgpu_cdna | SGPR | BITS_32 | 13,"amdgpu_cdna"); +DEF_REGISTER(sgpr14, Arch_amdgpu_cdna | SGPR | BITS_32 | 14,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_14, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna"); +DEF_REGISTER(sgpr15, Arch_amdgpu_cdna | SGPR | BITS_32 | 15,"amdgpu_cdna"); +DEF_REGISTER(sgpr16, Arch_amdgpu_cdna | SGPR | BITS_32 | 16,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_16, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_16, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_16, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec16_16, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna"); +DEF_REGISTER(sgpr17, Arch_amdgpu_cdna | SGPR | BITS_32 | 17,"amdgpu_cdna"); +DEF_REGISTER(sgpr18, Arch_amdgpu_cdna | SGPR | BITS_32 | 18,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_18, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna"); +DEF_REGISTER(sgpr19, Arch_amdgpu_cdna | SGPR | BITS_32 | 19,"amdgpu_cdna"); +DEF_REGISTER(sgpr20, Arch_amdgpu_cdna | SGPR | BITS_32 | 20,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_20, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_20, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna"); +DEF_REGISTER(sgpr21, Arch_amdgpu_cdna | SGPR | BITS_32 | 21,"amdgpu_cdna"); +DEF_REGISTER(sgpr22, Arch_amdgpu_cdna | SGPR | BITS_32 | 22,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_22, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna"); +DEF_REGISTER(sgpr23, Arch_amdgpu_cdna | SGPR | BITS_32 | 23,"amdgpu_cdna"); +DEF_REGISTER(sgpr24, Arch_amdgpu_cdna | SGPR | BITS_32 | 24,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_24, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_24, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_24, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna"); +DEF_REGISTER(sgpr25, Arch_amdgpu_cdna | SGPR | BITS_32 | 25,"amdgpu_cdna"); +DEF_REGISTER(sgpr26, Arch_amdgpu_cdna | SGPR | BITS_32 | 26,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_26, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna"); +DEF_REGISTER(sgpr27, Arch_amdgpu_cdna | SGPR | BITS_32 | 27,"amdgpu_cdna"); +DEF_REGISTER(sgpr28, Arch_amdgpu_cdna | SGPR | BITS_32 | 28,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_28, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_28, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna"); +DEF_REGISTER(sgpr29, Arch_amdgpu_cdna | SGPR | BITS_32 | 29,"amdgpu_cdna"); +DEF_REGISTER(sgpr30, Arch_amdgpu_cdna | SGPR | BITS_32 | 30,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_30, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna"); +DEF_REGISTER(sgpr31, Arch_amdgpu_cdna | SGPR | BITS_32 | 31,"amdgpu_cdna"); +DEF_REGISTER(sgpr32, Arch_amdgpu_cdna | SGPR | BITS_32 | 32,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_32, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_32, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_32, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec16_32, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna"); +DEF_REGISTER(sgpr33, Arch_amdgpu_cdna | SGPR | BITS_32 | 33,"amdgpu_cdna"); +DEF_REGISTER(sgpr34, Arch_amdgpu_cdna | SGPR | BITS_32 | 34,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_34, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna"); +DEF_REGISTER(sgpr35, Arch_amdgpu_cdna | SGPR | BITS_32 | 35,"amdgpu_cdna"); +DEF_REGISTER(sgpr36, Arch_amdgpu_cdna | SGPR | BITS_32 | 36,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_36, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_36, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna"); +DEF_REGISTER(sgpr37, Arch_amdgpu_cdna | SGPR | BITS_32 | 37,"amdgpu_cdna"); +DEF_REGISTER(sgpr38, Arch_amdgpu_cdna | SGPR | BITS_32 | 38,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_38, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna"); +DEF_REGISTER(sgpr39, Arch_amdgpu_cdna | SGPR | BITS_32 | 39,"amdgpu_cdna"); +DEF_REGISTER(sgpr40, Arch_amdgpu_cdna | SGPR | BITS_32 | 40,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_40, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_40, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_40, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna"); +DEF_REGISTER(sgpr41, Arch_amdgpu_cdna | SGPR | BITS_32 | 41,"amdgpu_cdna"); +DEF_REGISTER(sgpr42, Arch_amdgpu_cdna | SGPR | BITS_32 | 42,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_42, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna"); +DEF_REGISTER(sgpr43, Arch_amdgpu_cdna | SGPR | BITS_32 | 43,"amdgpu_cdna"); +DEF_REGISTER(sgpr44, Arch_amdgpu_cdna | SGPR | BITS_32 | 44,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_44, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_44, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna"); +DEF_REGISTER(sgpr45, Arch_amdgpu_cdna | SGPR | BITS_32 | 45,"amdgpu_cdna"); +DEF_REGISTER(sgpr46, Arch_amdgpu_cdna | SGPR | BITS_32 | 46,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_46, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna"); +DEF_REGISTER(sgpr47, Arch_amdgpu_cdna | SGPR | BITS_32 | 47,"amdgpu_cdna"); +DEF_REGISTER(sgpr48, Arch_amdgpu_cdna | SGPR | BITS_32 | 48,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_48, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_48, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_48, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec16_48, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna"); +DEF_REGISTER(sgpr49, Arch_amdgpu_cdna | SGPR | BITS_32 | 49,"amdgpu_cdna"); +DEF_REGISTER(sgpr50, Arch_amdgpu_cdna | SGPR | BITS_32 | 50,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_50, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna"); +DEF_REGISTER(sgpr51, Arch_amdgpu_cdna | SGPR | BITS_32 | 51,"amdgpu_cdna"); +DEF_REGISTER(sgpr52, Arch_amdgpu_cdna | SGPR | BITS_32 | 52,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_52, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_52, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna"); +DEF_REGISTER(sgpr53, Arch_amdgpu_cdna | SGPR | BITS_32 | 53,"amdgpu_cdna"); +DEF_REGISTER(sgpr54, Arch_amdgpu_cdna | SGPR | BITS_32 | 54,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_54, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna"); +DEF_REGISTER(sgpr55, Arch_amdgpu_cdna | SGPR | BITS_32 | 55,"amdgpu_cdna"); +DEF_REGISTER(sgpr56, Arch_amdgpu_cdna | SGPR | BITS_32 | 56,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_56, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_56, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_56, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna"); +DEF_REGISTER(sgpr57, Arch_amdgpu_cdna | SGPR | BITS_32 | 57,"amdgpu_cdna"); +DEF_REGISTER(sgpr58, Arch_amdgpu_cdna | SGPR | BITS_32 | 58,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_58, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna"); +DEF_REGISTER(sgpr59, Arch_amdgpu_cdna | SGPR | BITS_32 | 59,"amdgpu_cdna"); +DEF_REGISTER(sgpr60, Arch_amdgpu_cdna | SGPR | BITS_32 | 60,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_60, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_60, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna"); +DEF_REGISTER(sgpr61, Arch_amdgpu_cdna | SGPR | BITS_32 | 61,"amdgpu_cdna"); +DEF_REGISTER(sgpr62, Arch_amdgpu_cdna | SGPR | BITS_32 | 62,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_62, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna"); +DEF_REGISTER(sgpr63, Arch_amdgpu_cdna | SGPR | BITS_32 | 63,"amdgpu_cdna"); +DEF_REGISTER(sgpr64, Arch_amdgpu_cdna | SGPR | BITS_32 | 64,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_64, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_64, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_64, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec16_64, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna"); +DEF_REGISTER(sgpr65, Arch_amdgpu_cdna | SGPR | BITS_32 | 65,"amdgpu_cdna"); +DEF_REGISTER(sgpr66, Arch_amdgpu_cdna | SGPR | BITS_32 | 66,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_66, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna"); +DEF_REGISTER(sgpr67, Arch_amdgpu_cdna | SGPR | BITS_32 | 67,"amdgpu_cdna"); +DEF_REGISTER(sgpr68, Arch_amdgpu_cdna | SGPR | BITS_32 | 68,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_68, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_68, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna"); +DEF_REGISTER(sgpr69, Arch_amdgpu_cdna | SGPR | BITS_32 | 69,"amdgpu_cdna"); +DEF_REGISTER(sgpr70, Arch_amdgpu_cdna | SGPR | BITS_32 | 70,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_70, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna"); +DEF_REGISTER(sgpr71, Arch_amdgpu_cdna | SGPR | BITS_32 | 71,"amdgpu_cdna"); +DEF_REGISTER(sgpr72, Arch_amdgpu_cdna | SGPR | BITS_32 | 72,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_72, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_72, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_72, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna"); +DEF_REGISTER(sgpr73, Arch_amdgpu_cdna | SGPR | BITS_32 | 73,"amdgpu_cdna"); +DEF_REGISTER(sgpr74, Arch_amdgpu_cdna | SGPR | BITS_32 | 74,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_74, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna"); +DEF_REGISTER(sgpr75, Arch_amdgpu_cdna | SGPR | BITS_32 | 75,"amdgpu_cdna"); +DEF_REGISTER(sgpr76, Arch_amdgpu_cdna | SGPR | BITS_32 | 76,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_76, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_76, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna"); +DEF_REGISTER(sgpr77, Arch_amdgpu_cdna | SGPR | BITS_32 | 77,"amdgpu_cdna"); +DEF_REGISTER(sgpr78, Arch_amdgpu_cdna | SGPR | BITS_32 | 78,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_78, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna"); +DEF_REGISTER(sgpr79, Arch_amdgpu_cdna | SGPR | BITS_32 | 79,"amdgpu_cdna"); +DEF_REGISTER(sgpr80, Arch_amdgpu_cdna | SGPR | BITS_32 | 80,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_80, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_80, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_80, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec16_80, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna"); +DEF_REGISTER(sgpr81, Arch_amdgpu_cdna | SGPR | BITS_32 | 81,"amdgpu_cdna"); +DEF_REGISTER(sgpr82, Arch_amdgpu_cdna | SGPR | BITS_32 | 82,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_82, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna"); +DEF_REGISTER(sgpr83, Arch_amdgpu_cdna | SGPR | BITS_32 | 83,"amdgpu_cdna"); +DEF_REGISTER(sgpr84, Arch_amdgpu_cdna | SGPR | BITS_32 | 84,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_84, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_84, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna"); +DEF_REGISTER(sgpr85, Arch_amdgpu_cdna | SGPR | BITS_32 | 85,"amdgpu_cdna"); +DEF_REGISTER(sgpr86, Arch_amdgpu_cdna | SGPR | BITS_32 | 86,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_86, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna"); +DEF_REGISTER(sgpr87, Arch_amdgpu_cdna | SGPR | BITS_32 | 87,"amdgpu_cdna"); +DEF_REGISTER(sgpr88, Arch_amdgpu_cdna | SGPR | BITS_32 | 88,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_88, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_88, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_88, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna"); +DEF_REGISTER(sgpr89, Arch_amdgpu_cdna | SGPR | BITS_32 | 89,"amdgpu_cdna"); +DEF_REGISTER(sgpr90, Arch_amdgpu_cdna | SGPR | BITS_32 | 90,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_90, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna"); +DEF_REGISTER(sgpr91, Arch_amdgpu_cdna | SGPR | BITS_32 | 91,"amdgpu_cdna"); +DEF_REGISTER(sgpr92, Arch_amdgpu_cdna | SGPR | BITS_32 | 92,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_92, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_92, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna"); +DEF_REGISTER(sgpr93, Arch_amdgpu_cdna | SGPR | BITS_32 | 93,"amdgpu_cdna"); +DEF_REGISTER(sgpr94, Arch_amdgpu_cdna | SGPR | BITS_32 | 94,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_94, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna"); +DEF_REGISTER(sgpr95, Arch_amdgpu_cdna | SGPR | BITS_32 | 95,"amdgpu_cdna"); +DEF_REGISTER(sgpr96, Arch_amdgpu_cdna | SGPR | BITS_32 | 96,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_96, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_96, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec8_96, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna"); +DEF_REGISTER(sgpr97, Arch_amdgpu_cdna | SGPR | BITS_32 | 97,"amdgpu_cdna"); +DEF_REGISTER(sgpr98, Arch_amdgpu_cdna | SGPR | BITS_32 | 98,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_98, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna"); +DEF_REGISTER(sgpr99, Arch_amdgpu_cdna | SGPR | BITS_32 | 99,"amdgpu_cdna"); +DEF_REGISTER(sgpr100, Arch_amdgpu_cdna | SGPR | BITS_32 | 100,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_100, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec4_100, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna"); +DEF_REGISTER(sgpr101, Arch_amdgpu_cdna | SGPR | BITS_32 | 101,"amdgpu_cdna"); +DEF_REGISTER(sgpr102, Arch_amdgpu_cdna | SGPR | BITS_32 | 102,"amdgpu_cdna"); +DEF_REGISTER(sgpr_vec2_102, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna"); +DEF_REGISTER(sgpr103, Arch_amdgpu_cdna | SGPR | BITS_32 | 103,"amdgpu_cdna"); +DEF_REGISTER(vgpr0, Arch_amdgpu_cdna | VGPR | BITS_32 | 0,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_0, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_0, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_0, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_0, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna"); +DEF_REGISTER(vgpr1, Arch_amdgpu_cdna | VGPR | BITS_32 | 1,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_1, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 1,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_1, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 1,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_1, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 1,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_1, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 1,"amdgpu_cdna"); +DEF_REGISTER(vgpr2, Arch_amdgpu_cdna | VGPR | BITS_32 | 2,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_2, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_2, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 2,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_2, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 2,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_2, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 2,"amdgpu_cdna"); +DEF_REGISTER(vgpr3, Arch_amdgpu_cdna | VGPR | BITS_32 | 3,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_3, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 3,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_3, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 3,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_3, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 3,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_3, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 3,"amdgpu_cdna"); +DEF_REGISTER(vgpr4, Arch_amdgpu_cdna | VGPR | BITS_32 | 4,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_4, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_4, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_4, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 4,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_4, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 4,"amdgpu_cdna"); +DEF_REGISTER(vgpr5, Arch_amdgpu_cdna | VGPR | BITS_32 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_5, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_5, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_5, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_5, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 5,"amdgpu_cdna"); +DEF_REGISTER(vgpr6, Arch_amdgpu_cdna | VGPR | BITS_32 | 6,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_6, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_6, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 6,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_6, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 6,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_6, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 6,"amdgpu_cdna"); +DEF_REGISTER(vgpr7, Arch_amdgpu_cdna | VGPR | BITS_32 | 7,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_7, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 7,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_7, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 7,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_7, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 7,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_7, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 7,"amdgpu_cdna"); +DEF_REGISTER(vgpr8, Arch_amdgpu_cdna | VGPR | BITS_32 | 8,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_8, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_8, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_8, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_8, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 8,"amdgpu_cdna"); +DEF_REGISTER(vgpr9, Arch_amdgpu_cdna | VGPR | BITS_32 | 9,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_9, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 9,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_9, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 9,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_9, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 9,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_9, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 9,"amdgpu_cdna"); +DEF_REGISTER(vgpr10, Arch_amdgpu_cdna | VGPR | BITS_32 | 10,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_10, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_10, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 10,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_10, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 10,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_10, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 10,"amdgpu_cdna"); +DEF_REGISTER(vgpr11, Arch_amdgpu_cdna | VGPR | BITS_32 | 11,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_11, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 11,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_11, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 11,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_11, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 11,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_11, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 11,"amdgpu_cdna"); +DEF_REGISTER(vgpr12, Arch_amdgpu_cdna | VGPR | BITS_32 | 12,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_12, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_12, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_12, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 12,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_12, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 12,"amdgpu_cdna"); +DEF_REGISTER(vgpr13, Arch_amdgpu_cdna | VGPR | BITS_32 | 13,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_13, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 13,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_13, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 13,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_13, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 13,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_13, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 13,"amdgpu_cdna"); +DEF_REGISTER(vgpr14, Arch_amdgpu_cdna | VGPR | BITS_32 | 14,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_14, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_14, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 14,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_14, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 14,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_14, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 14,"amdgpu_cdna"); +DEF_REGISTER(vgpr15, Arch_amdgpu_cdna | VGPR | BITS_32 | 15,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_15, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 15,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_15, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 15,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_15, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 15,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_15, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 15,"amdgpu_cdna"); +DEF_REGISTER(vgpr16, Arch_amdgpu_cdna | VGPR | BITS_32 | 16,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_16, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_16, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_16, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_16, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna"); +DEF_REGISTER(vgpr17, Arch_amdgpu_cdna | VGPR | BITS_32 | 17,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_17, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 17,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_17, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 17,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_17, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 17,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_17, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 17,"amdgpu_cdna"); +DEF_REGISTER(vgpr18, Arch_amdgpu_cdna | VGPR | BITS_32 | 18,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_18, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_18, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 18,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_18, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 18,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_18, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 18,"amdgpu_cdna"); +DEF_REGISTER(vgpr19, Arch_amdgpu_cdna | VGPR | BITS_32 | 19,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_19, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 19,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_19, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 19,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_19, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 19,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_19, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 19,"amdgpu_cdna"); +DEF_REGISTER(vgpr20, Arch_amdgpu_cdna | VGPR | BITS_32 | 20,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_20, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_20, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_20, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 20,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_20, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 20,"amdgpu_cdna"); +DEF_REGISTER(vgpr21, Arch_amdgpu_cdna | VGPR | BITS_32 | 21,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_21, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 21,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_21, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 21,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_21, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 21,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_21, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 21,"amdgpu_cdna"); +DEF_REGISTER(vgpr22, Arch_amdgpu_cdna | VGPR | BITS_32 | 22,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_22, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_22, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 22,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_22, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 22,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_22, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 22,"amdgpu_cdna"); +DEF_REGISTER(vgpr23, Arch_amdgpu_cdna | VGPR | BITS_32 | 23,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_23, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 23,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_23, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 23,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_23, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 23,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_23, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 23,"amdgpu_cdna"); +DEF_REGISTER(vgpr24, Arch_amdgpu_cdna | VGPR | BITS_32 | 24,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_24, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_24, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_24, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_24, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 24,"amdgpu_cdna"); +DEF_REGISTER(vgpr25, Arch_amdgpu_cdna | VGPR | BITS_32 | 25,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_25, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 25,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_25, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 25,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_25, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 25,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_25, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 25,"amdgpu_cdna"); +DEF_REGISTER(vgpr26, Arch_amdgpu_cdna | VGPR | BITS_32 | 26,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_26, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_26, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 26,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_26, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 26,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_26, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 26,"amdgpu_cdna"); +DEF_REGISTER(vgpr27, Arch_amdgpu_cdna | VGPR | BITS_32 | 27,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_27, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 27,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_27, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 27,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_27, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 27,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_27, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 27,"amdgpu_cdna"); +DEF_REGISTER(vgpr28, Arch_amdgpu_cdna | VGPR | BITS_32 | 28,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_28, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_28, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_28, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 28,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_28, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 28,"amdgpu_cdna"); +DEF_REGISTER(vgpr29, Arch_amdgpu_cdna | VGPR | BITS_32 | 29,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_29, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 29,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_29, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 29,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_29, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 29,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_29, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 29,"amdgpu_cdna"); +DEF_REGISTER(vgpr30, Arch_amdgpu_cdna | VGPR | BITS_32 | 30,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_30, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_30, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 30,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_30, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 30,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_30, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 30,"amdgpu_cdna"); +DEF_REGISTER(vgpr31, Arch_amdgpu_cdna | VGPR | BITS_32 | 31,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_31, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 31,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_31, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 31,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_31, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 31,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_31, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 31,"amdgpu_cdna"); +DEF_REGISTER(vgpr32, Arch_amdgpu_cdna | VGPR | BITS_32 | 32,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_32, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_32, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_32, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_32, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna"); +DEF_REGISTER(vgpr33, Arch_amdgpu_cdna | VGPR | BITS_32 | 33,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_33, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 33,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_33, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 33,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_33, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 33,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_33, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 33,"amdgpu_cdna"); +DEF_REGISTER(vgpr34, Arch_amdgpu_cdna | VGPR | BITS_32 | 34,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_34, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_34, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 34,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_34, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 34,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_34, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 34,"amdgpu_cdna"); +DEF_REGISTER(vgpr35, Arch_amdgpu_cdna | VGPR | BITS_32 | 35,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_35, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 35,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_35, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 35,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_35, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 35,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_35, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 35,"amdgpu_cdna"); +DEF_REGISTER(vgpr36, Arch_amdgpu_cdna | VGPR | BITS_32 | 36,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_36, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_36, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_36, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 36,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_36, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 36,"amdgpu_cdna"); +DEF_REGISTER(vgpr37, Arch_amdgpu_cdna | VGPR | BITS_32 | 37,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_37, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 37,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_37, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 37,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_37, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 37,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_37, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 37,"amdgpu_cdna"); +DEF_REGISTER(vgpr38, Arch_amdgpu_cdna | VGPR | BITS_32 | 38,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_38, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_38, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 38,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_38, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 38,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_38, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 38,"amdgpu_cdna"); +DEF_REGISTER(vgpr39, Arch_amdgpu_cdna | VGPR | BITS_32 | 39,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_39, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 39,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_39, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 39,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_39, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 39,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_39, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 39,"amdgpu_cdna"); +DEF_REGISTER(vgpr40, Arch_amdgpu_cdna | VGPR | BITS_32 | 40,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_40, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_40, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_40, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_40, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 40,"amdgpu_cdna"); +DEF_REGISTER(vgpr41, Arch_amdgpu_cdna | VGPR | BITS_32 | 41,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_41, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 41,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_41, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 41,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_41, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 41,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_41, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 41,"amdgpu_cdna"); +DEF_REGISTER(vgpr42, Arch_amdgpu_cdna | VGPR | BITS_32 | 42,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_42, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_42, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 42,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_42, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 42,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_42, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 42,"amdgpu_cdna"); +DEF_REGISTER(vgpr43, Arch_amdgpu_cdna | VGPR | BITS_32 | 43,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_43, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 43,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_43, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 43,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_43, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 43,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_43, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 43,"amdgpu_cdna"); +DEF_REGISTER(vgpr44, Arch_amdgpu_cdna | VGPR | BITS_32 | 44,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_44, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_44, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_44, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 44,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_44, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 44,"amdgpu_cdna"); +DEF_REGISTER(vgpr45, Arch_amdgpu_cdna | VGPR | BITS_32 | 45,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_45, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 45,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_45, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 45,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_45, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 45,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_45, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 45,"amdgpu_cdna"); +DEF_REGISTER(vgpr46, Arch_amdgpu_cdna | VGPR | BITS_32 | 46,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_46, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_46, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 46,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_46, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 46,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_46, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 46,"amdgpu_cdna"); +DEF_REGISTER(vgpr47, Arch_amdgpu_cdna | VGPR | BITS_32 | 47,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_47, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 47,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_47, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 47,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_47, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 47,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_47, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 47,"amdgpu_cdna"); +DEF_REGISTER(vgpr48, Arch_amdgpu_cdna | VGPR | BITS_32 | 48,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_48, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_48, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_48, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_48, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna"); +DEF_REGISTER(vgpr49, Arch_amdgpu_cdna | VGPR | BITS_32 | 49,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_49, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 49,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_49, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 49,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_49, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 49,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_49, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 49,"amdgpu_cdna"); +DEF_REGISTER(vgpr50, Arch_amdgpu_cdna | VGPR | BITS_32 | 50,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_50, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_50, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 50,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_50, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 50,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_50, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 50,"amdgpu_cdna"); +DEF_REGISTER(vgpr51, Arch_amdgpu_cdna | VGPR | BITS_32 | 51,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_51, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 51,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_51, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 51,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_51, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 51,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_51, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 51,"amdgpu_cdna"); +DEF_REGISTER(vgpr52, Arch_amdgpu_cdna | VGPR | BITS_32 | 52,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_52, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_52, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_52, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 52,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_52, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 52,"amdgpu_cdna"); +DEF_REGISTER(vgpr53, Arch_amdgpu_cdna | VGPR | BITS_32 | 53,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_53, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 53,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_53, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 53,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_53, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 53,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_53, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 53,"amdgpu_cdna"); +DEF_REGISTER(vgpr54, Arch_amdgpu_cdna | VGPR | BITS_32 | 54,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_54, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_54, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 54,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_54, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 54,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_54, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 54,"amdgpu_cdna"); +DEF_REGISTER(vgpr55, Arch_amdgpu_cdna | VGPR | BITS_32 | 55,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_55, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 55,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_55, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 55,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_55, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 55,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_55, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 55,"amdgpu_cdna"); +DEF_REGISTER(vgpr56, Arch_amdgpu_cdna | VGPR | BITS_32 | 56,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_56, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_56, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_56, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_56, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 56,"amdgpu_cdna"); +DEF_REGISTER(vgpr57, Arch_amdgpu_cdna | VGPR | BITS_32 | 57,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_57, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 57,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_57, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 57,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_57, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 57,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_57, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 57,"amdgpu_cdna"); +DEF_REGISTER(vgpr58, Arch_amdgpu_cdna | VGPR | BITS_32 | 58,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_58, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_58, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 58,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_58, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 58,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_58, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 58,"amdgpu_cdna"); +DEF_REGISTER(vgpr59, Arch_amdgpu_cdna | VGPR | BITS_32 | 59,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_59, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 59,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_59, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 59,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_59, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 59,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_59, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 59,"amdgpu_cdna"); +DEF_REGISTER(vgpr60, Arch_amdgpu_cdna | VGPR | BITS_32 | 60,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_60, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_60, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_60, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 60,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_60, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 60,"amdgpu_cdna"); +DEF_REGISTER(vgpr61, Arch_amdgpu_cdna | VGPR | BITS_32 | 61,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_61, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 61,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_61, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 61,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_61, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 61,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_61, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 61,"amdgpu_cdna"); +DEF_REGISTER(vgpr62, Arch_amdgpu_cdna | VGPR | BITS_32 | 62,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_62, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_62, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 62,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_62, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 62,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_62, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 62,"amdgpu_cdna"); +DEF_REGISTER(vgpr63, Arch_amdgpu_cdna | VGPR | BITS_32 | 63,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_63, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 63,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_63, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 63,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_63, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 63,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_63, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 63,"amdgpu_cdna"); +DEF_REGISTER(vgpr64, Arch_amdgpu_cdna | VGPR | BITS_32 | 64,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_64, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_64, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_64, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_64, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna"); +DEF_REGISTER(vgpr65, Arch_amdgpu_cdna | VGPR | BITS_32 | 65,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_65, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 65,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_65, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 65,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_65, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 65,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_65, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 65,"amdgpu_cdna"); +DEF_REGISTER(vgpr66, Arch_amdgpu_cdna | VGPR | BITS_32 | 66,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_66, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_66, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 66,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_66, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 66,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_66, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 66,"amdgpu_cdna"); +DEF_REGISTER(vgpr67, Arch_amdgpu_cdna | VGPR | BITS_32 | 67,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_67, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 67,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_67, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 67,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_67, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 67,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_67, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 67,"amdgpu_cdna"); +DEF_REGISTER(vgpr68, Arch_amdgpu_cdna | VGPR | BITS_32 | 68,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_68, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_68, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_68, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 68,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_68, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 68,"amdgpu_cdna"); +DEF_REGISTER(vgpr69, Arch_amdgpu_cdna | VGPR | BITS_32 | 69,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_69, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 69,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_69, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 69,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_69, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 69,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_69, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 69,"amdgpu_cdna"); +DEF_REGISTER(vgpr70, Arch_amdgpu_cdna | VGPR | BITS_32 | 70,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_70, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_70, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 70,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_70, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 70,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_70, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 70,"amdgpu_cdna"); +DEF_REGISTER(vgpr71, Arch_amdgpu_cdna | VGPR | BITS_32 | 71,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_71, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 71,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_71, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 71,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_71, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 71,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_71, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 71,"amdgpu_cdna"); +DEF_REGISTER(vgpr72, Arch_amdgpu_cdna | VGPR | BITS_32 | 72,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_72, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_72, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_72, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_72, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 72,"amdgpu_cdna"); +DEF_REGISTER(vgpr73, Arch_amdgpu_cdna | VGPR | BITS_32 | 73,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_73, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 73,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_73, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 73,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_73, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 73,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_73, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 73,"amdgpu_cdna"); +DEF_REGISTER(vgpr74, Arch_amdgpu_cdna | VGPR | BITS_32 | 74,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_74, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_74, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 74,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_74, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 74,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_74, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 74,"amdgpu_cdna"); +DEF_REGISTER(vgpr75, Arch_amdgpu_cdna | VGPR | BITS_32 | 75,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_75, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 75,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_75, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 75,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_75, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 75,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_75, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 75,"amdgpu_cdna"); +DEF_REGISTER(vgpr76, Arch_amdgpu_cdna | VGPR | BITS_32 | 76,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_76, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_76, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_76, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 76,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_76, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 76,"amdgpu_cdna"); +DEF_REGISTER(vgpr77, Arch_amdgpu_cdna | VGPR | BITS_32 | 77,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_77, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 77,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_77, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 77,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_77, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 77,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_77, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 77,"amdgpu_cdna"); +DEF_REGISTER(vgpr78, Arch_amdgpu_cdna | VGPR | BITS_32 | 78,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_78, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_78, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 78,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_78, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 78,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_78, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 78,"amdgpu_cdna"); +DEF_REGISTER(vgpr79, Arch_amdgpu_cdna | VGPR | BITS_32 | 79,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_79, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 79,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_79, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 79,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_79, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 79,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_79, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 79,"amdgpu_cdna"); +DEF_REGISTER(vgpr80, Arch_amdgpu_cdna | VGPR | BITS_32 | 80,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_80, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_80, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_80, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_80, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna"); +DEF_REGISTER(vgpr81, Arch_amdgpu_cdna | VGPR | BITS_32 | 81,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_81, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 81,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_81, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 81,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_81, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 81,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_81, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 81,"amdgpu_cdna"); +DEF_REGISTER(vgpr82, Arch_amdgpu_cdna | VGPR | BITS_32 | 82,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_82, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_82, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 82,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_82, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 82,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_82, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 82,"amdgpu_cdna"); +DEF_REGISTER(vgpr83, Arch_amdgpu_cdna | VGPR | BITS_32 | 83,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_83, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 83,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_83, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 83,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_83, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 83,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_83, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 83,"amdgpu_cdna"); +DEF_REGISTER(vgpr84, Arch_amdgpu_cdna | VGPR | BITS_32 | 84,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_84, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_84, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_84, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 84,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_84, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 84,"amdgpu_cdna"); +DEF_REGISTER(vgpr85, Arch_amdgpu_cdna | VGPR | BITS_32 | 85,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_85, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 85,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_85, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 85,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_85, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 85,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_85, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 85,"amdgpu_cdna"); +DEF_REGISTER(vgpr86, Arch_amdgpu_cdna | VGPR | BITS_32 | 86,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_86, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_86, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 86,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_86, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 86,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_86, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 86,"amdgpu_cdna"); +DEF_REGISTER(vgpr87, Arch_amdgpu_cdna | VGPR | BITS_32 | 87,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_87, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 87,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_87, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 87,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_87, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 87,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_87, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 87,"amdgpu_cdna"); +DEF_REGISTER(vgpr88, Arch_amdgpu_cdna | VGPR | BITS_32 | 88,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_88, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_88, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_88, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_88, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 88,"amdgpu_cdna"); +DEF_REGISTER(vgpr89, Arch_amdgpu_cdna | VGPR | BITS_32 | 89,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_89, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 89,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_89, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 89,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_89, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 89,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_89, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 89,"amdgpu_cdna"); +DEF_REGISTER(vgpr90, Arch_amdgpu_cdna | VGPR | BITS_32 | 90,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_90, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_90, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 90,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_90, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 90,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_90, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 90,"amdgpu_cdna"); +DEF_REGISTER(vgpr91, Arch_amdgpu_cdna | VGPR | BITS_32 | 91,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_91, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 91,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_91, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 91,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_91, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 91,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_91, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 91,"amdgpu_cdna"); +DEF_REGISTER(vgpr92, Arch_amdgpu_cdna | VGPR | BITS_32 | 92,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_92, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_92, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_92, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 92,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_92, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 92,"amdgpu_cdna"); +DEF_REGISTER(vgpr93, Arch_amdgpu_cdna | VGPR | BITS_32 | 93,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_93, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 93,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_93, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 93,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_93, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 93,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_93, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 93,"amdgpu_cdna"); +DEF_REGISTER(vgpr94, Arch_amdgpu_cdna | VGPR | BITS_32 | 94,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_94, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_94, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 94,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_94, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 94,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_94, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 94,"amdgpu_cdna"); +DEF_REGISTER(vgpr95, Arch_amdgpu_cdna | VGPR | BITS_32 | 95,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_95, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 95,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_95, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 95,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_95, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 95,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_95, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 95,"amdgpu_cdna"); +DEF_REGISTER(vgpr96, Arch_amdgpu_cdna | VGPR | BITS_32 | 96,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_96, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_96, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_96, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_96, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 96,"amdgpu_cdna"); +DEF_REGISTER(vgpr97, Arch_amdgpu_cdna | VGPR | BITS_32 | 97,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_97, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 97,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_97, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 97,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_97, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 97,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_97, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 97,"amdgpu_cdna"); +DEF_REGISTER(vgpr98, Arch_amdgpu_cdna | VGPR | BITS_32 | 98,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_98, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_98, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 98,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_98, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 98,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_98, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 98,"amdgpu_cdna"); +DEF_REGISTER(vgpr99, Arch_amdgpu_cdna | VGPR | BITS_32 | 99,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_99, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 99,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_99, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 99,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_99, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 99,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_99, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 99,"amdgpu_cdna"); +DEF_REGISTER(vgpr100, Arch_amdgpu_cdna | VGPR | BITS_32 | 100,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_100, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_100, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_100, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 100,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_100, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 100,"amdgpu_cdna"); +DEF_REGISTER(vgpr101, Arch_amdgpu_cdna | VGPR | BITS_32 | 101,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_101, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 101,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_101, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 101,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_101, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 101,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_101, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 101,"amdgpu_cdna"); +DEF_REGISTER(vgpr102, Arch_amdgpu_cdna | VGPR | BITS_32 | 102,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_102, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_102, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 102,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_102, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 102,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_102, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 102,"amdgpu_cdna"); +DEF_REGISTER(vgpr103, Arch_amdgpu_cdna | VGPR | BITS_32 | 103,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_103, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 103,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_103, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 103,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_103, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 103,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_103, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 103,"amdgpu_cdna"); +DEF_REGISTER(vgpr104, Arch_amdgpu_cdna | VGPR | BITS_32 | 104,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_104, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 104,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_104, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 104,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_104, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 104,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_104, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 104,"amdgpu_cdna"); +DEF_REGISTER(vgpr105, Arch_amdgpu_cdna | VGPR | BITS_32 | 105,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_105, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 105,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_105, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 105,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_105, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 105,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_105, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 105,"amdgpu_cdna"); +DEF_REGISTER(vgpr106, Arch_amdgpu_cdna | VGPR | BITS_32 | 106,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_106, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 106,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_106, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 106,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_106, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 106,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_106, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 106,"amdgpu_cdna"); +DEF_REGISTER(vgpr107, Arch_amdgpu_cdna | VGPR | BITS_32 | 107,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_107, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 107,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_107, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 107,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_107, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 107,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_107, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 107,"amdgpu_cdna"); +DEF_REGISTER(vgpr108, Arch_amdgpu_cdna | VGPR | BITS_32 | 108,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_108, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 108,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_108, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 108,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_108, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 108,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_108, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 108,"amdgpu_cdna"); +DEF_REGISTER(vgpr109, Arch_amdgpu_cdna | VGPR | BITS_32 | 109,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_109, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 109,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_109, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 109,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_109, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 109,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_109, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 109,"amdgpu_cdna"); +DEF_REGISTER(vgpr110, Arch_amdgpu_cdna | VGPR | BITS_32 | 110,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_110, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 110,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_110, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 110,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_110, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 110,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_110, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 110,"amdgpu_cdna"); +DEF_REGISTER(vgpr111, Arch_amdgpu_cdna | VGPR | BITS_32 | 111,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_111, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 111,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_111, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 111,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_111, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 111,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_111, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 111,"amdgpu_cdna"); +DEF_REGISTER(vgpr112, Arch_amdgpu_cdna | VGPR | BITS_32 | 112,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_112, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 112,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_112, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 112,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_112, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 112,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_112, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 112,"amdgpu_cdna"); +DEF_REGISTER(vgpr113, Arch_amdgpu_cdna | VGPR | BITS_32 | 113,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_113, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 113,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_113, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 113,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_113, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 113,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_113, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 113,"amdgpu_cdna"); +DEF_REGISTER(vgpr114, Arch_amdgpu_cdna | VGPR | BITS_32 | 114,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_114, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 114,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_114, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 114,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_114, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 114,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_114, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 114,"amdgpu_cdna"); +DEF_REGISTER(vgpr115, Arch_amdgpu_cdna | VGPR | BITS_32 | 115,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_115, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 115,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_115, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 115,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_115, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 115,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_115, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 115,"amdgpu_cdna"); +DEF_REGISTER(vgpr116, Arch_amdgpu_cdna | VGPR | BITS_32 | 116,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_116, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 116,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_116, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 116,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_116, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 116,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_116, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 116,"amdgpu_cdna"); +DEF_REGISTER(vgpr117, Arch_amdgpu_cdna | VGPR | BITS_32 | 117,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_117, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 117,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_117, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 117,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_117, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 117,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_117, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 117,"amdgpu_cdna"); +DEF_REGISTER(vgpr118, Arch_amdgpu_cdna | VGPR | BITS_32 | 118,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_118, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 118,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_118, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 118,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_118, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 118,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_118, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 118,"amdgpu_cdna"); +DEF_REGISTER(vgpr119, Arch_amdgpu_cdna | VGPR | BITS_32 | 119,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_119, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 119,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_119, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 119,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_119, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 119,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_119, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 119,"amdgpu_cdna"); +DEF_REGISTER(vgpr120, Arch_amdgpu_cdna | VGPR | BITS_32 | 120,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_120, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 120,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_120, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 120,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_120, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 120,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_120, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 120,"amdgpu_cdna"); +DEF_REGISTER(vgpr121, Arch_amdgpu_cdna | VGPR | BITS_32 | 121,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_121, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 121,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_121, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 121,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_121, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 121,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_121, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 121,"amdgpu_cdna"); +DEF_REGISTER(vgpr122, Arch_amdgpu_cdna | VGPR | BITS_32 | 122,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_122, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 122,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_122, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 122,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_122, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 122,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_122, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 122,"amdgpu_cdna"); +DEF_REGISTER(vgpr123, Arch_amdgpu_cdna | VGPR | BITS_32 | 123,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_123, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 123,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_123, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 123,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_123, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 123,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_123, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 123,"amdgpu_cdna"); +DEF_REGISTER(vgpr124, Arch_amdgpu_cdna | VGPR | BITS_32 | 124,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_124, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 124,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_124, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 124,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_124, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 124,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_124, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 124,"amdgpu_cdna"); +DEF_REGISTER(vgpr125, Arch_amdgpu_cdna | VGPR | BITS_32 | 125,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_125, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 125,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_125, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 125,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_125, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 125,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_125, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 125,"amdgpu_cdna"); +DEF_REGISTER(vgpr126, Arch_amdgpu_cdna | VGPR | BITS_32 | 126,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_126, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 126,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_126, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 126,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_126, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 126,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_126, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 126,"amdgpu_cdna"); +DEF_REGISTER(vgpr127, Arch_amdgpu_cdna | VGPR | BITS_32 | 127,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_127, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 127,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_127, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 127,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_127, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 127,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_127, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 127,"amdgpu_cdna"); +DEF_REGISTER(vgpr128, Arch_amdgpu_cdna | VGPR | BITS_32 | 128,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_128, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 128,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_128, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 128,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_128, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 128,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_128, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 128,"amdgpu_cdna"); +DEF_REGISTER(vgpr129, Arch_amdgpu_cdna | VGPR | BITS_32 | 129,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_129, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 129,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_129, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 129,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_129, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 129,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_129, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 129,"amdgpu_cdna"); +DEF_REGISTER(vgpr130, Arch_amdgpu_cdna | VGPR | BITS_32 | 130,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_130, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 130,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_130, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 130,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_130, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 130,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_130, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 130,"amdgpu_cdna"); +DEF_REGISTER(vgpr131, Arch_amdgpu_cdna | VGPR | BITS_32 | 131,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_131, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 131,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_131, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 131,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_131, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 131,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_131, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 131,"amdgpu_cdna"); +DEF_REGISTER(vgpr132, Arch_amdgpu_cdna | VGPR | BITS_32 | 132,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_132, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 132,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_132, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 132,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_132, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 132,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_132, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 132,"amdgpu_cdna"); +DEF_REGISTER(vgpr133, Arch_amdgpu_cdna | VGPR | BITS_32 | 133,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_133, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 133,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_133, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 133,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_133, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 133,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_133, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 133,"amdgpu_cdna"); +DEF_REGISTER(vgpr134, Arch_amdgpu_cdna | VGPR | BITS_32 | 134,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_134, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 134,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_134, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 134,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_134, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 134,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_134, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 134,"amdgpu_cdna"); +DEF_REGISTER(vgpr135, Arch_amdgpu_cdna | VGPR | BITS_32 | 135,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_135, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 135,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_135, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 135,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_135, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 135,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_135, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 135,"amdgpu_cdna"); +DEF_REGISTER(vgpr136, Arch_amdgpu_cdna | VGPR | BITS_32 | 136,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_136, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 136,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_136, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 136,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_136, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 136,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_136, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 136,"amdgpu_cdna"); +DEF_REGISTER(vgpr137, Arch_amdgpu_cdna | VGPR | BITS_32 | 137,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_137, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 137,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_137, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 137,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_137, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 137,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_137, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 137,"amdgpu_cdna"); +DEF_REGISTER(vgpr138, Arch_amdgpu_cdna | VGPR | BITS_32 | 138,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_138, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 138,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_138, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 138,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_138, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 138,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_138, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 138,"amdgpu_cdna"); +DEF_REGISTER(vgpr139, Arch_amdgpu_cdna | VGPR | BITS_32 | 139,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_139, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 139,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_139, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 139,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_139, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 139,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_139, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 139,"amdgpu_cdna"); +DEF_REGISTER(vgpr140, Arch_amdgpu_cdna | VGPR | BITS_32 | 140,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_140, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 140,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_140, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 140,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_140, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 140,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_140, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 140,"amdgpu_cdna"); +DEF_REGISTER(vgpr141, Arch_amdgpu_cdna | VGPR | BITS_32 | 141,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_141, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 141,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_141, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 141,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_141, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 141,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_141, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 141,"amdgpu_cdna"); +DEF_REGISTER(vgpr142, Arch_amdgpu_cdna | VGPR | BITS_32 | 142,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_142, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 142,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_142, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 142,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_142, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 142,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_142, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 142,"amdgpu_cdna"); +DEF_REGISTER(vgpr143, Arch_amdgpu_cdna | VGPR | BITS_32 | 143,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_143, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 143,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_143, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 143,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_143, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 143,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_143, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 143,"amdgpu_cdna"); +DEF_REGISTER(vgpr144, Arch_amdgpu_cdna | VGPR | BITS_32 | 144,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_144, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 144,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_144, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 144,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_144, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 144,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_144, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 144,"amdgpu_cdna"); +DEF_REGISTER(vgpr145, Arch_amdgpu_cdna | VGPR | BITS_32 | 145,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_145, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 145,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_145, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 145,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_145, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 145,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_145, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 145,"amdgpu_cdna"); +DEF_REGISTER(vgpr146, Arch_amdgpu_cdna | VGPR | BITS_32 | 146,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_146, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 146,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_146, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 146,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_146, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 146,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_146, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 146,"amdgpu_cdna"); +DEF_REGISTER(vgpr147, Arch_amdgpu_cdna | VGPR | BITS_32 | 147,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_147, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 147,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_147, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 147,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_147, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 147,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_147, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 147,"amdgpu_cdna"); +DEF_REGISTER(vgpr148, Arch_amdgpu_cdna | VGPR | BITS_32 | 148,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_148, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 148,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_148, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 148,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_148, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 148,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_148, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 148,"amdgpu_cdna"); +DEF_REGISTER(vgpr149, Arch_amdgpu_cdna | VGPR | BITS_32 | 149,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_149, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 149,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_149, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 149,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_149, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 149,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_149, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 149,"amdgpu_cdna"); +DEF_REGISTER(vgpr150, Arch_amdgpu_cdna | VGPR | BITS_32 | 150,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_150, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 150,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_150, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 150,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_150, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 150,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_150, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 150,"amdgpu_cdna"); +DEF_REGISTER(vgpr151, Arch_amdgpu_cdna | VGPR | BITS_32 | 151,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_151, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 151,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_151, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 151,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_151, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 151,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_151, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 151,"amdgpu_cdna"); +DEF_REGISTER(vgpr152, Arch_amdgpu_cdna | VGPR | BITS_32 | 152,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_152, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 152,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_152, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 152,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_152, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 152,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_152, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 152,"amdgpu_cdna"); +DEF_REGISTER(vgpr153, Arch_amdgpu_cdna | VGPR | BITS_32 | 153,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_153, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 153,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_153, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 153,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_153, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 153,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_153, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 153,"amdgpu_cdna"); +DEF_REGISTER(vgpr154, Arch_amdgpu_cdna | VGPR | BITS_32 | 154,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_154, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 154,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_154, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 154,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_154, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 154,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_154, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 154,"amdgpu_cdna"); +DEF_REGISTER(vgpr155, Arch_amdgpu_cdna | VGPR | BITS_32 | 155,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_155, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 155,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_155, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 155,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_155, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 155,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_155, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 155,"amdgpu_cdna"); +DEF_REGISTER(vgpr156, Arch_amdgpu_cdna | VGPR | BITS_32 | 156,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_156, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 156,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_156, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 156,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_156, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 156,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_156, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 156,"amdgpu_cdna"); +DEF_REGISTER(vgpr157, Arch_amdgpu_cdna | VGPR | BITS_32 | 157,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_157, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 157,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_157, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 157,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_157, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 157,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_157, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 157,"amdgpu_cdna"); +DEF_REGISTER(vgpr158, Arch_amdgpu_cdna | VGPR | BITS_32 | 158,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_158, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 158,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_158, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 158,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_158, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 158,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_158, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 158,"amdgpu_cdna"); +DEF_REGISTER(vgpr159, Arch_amdgpu_cdna | VGPR | BITS_32 | 159,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_159, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 159,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_159, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 159,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_159, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 159,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_159, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 159,"amdgpu_cdna"); +DEF_REGISTER(vgpr160, Arch_amdgpu_cdna | VGPR | BITS_32 | 160,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_160, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 160,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_160, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 160,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_160, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 160,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_160, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 160,"amdgpu_cdna"); +DEF_REGISTER(vgpr161, Arch_amdgpu_cdna | VGPR | BITS_32 | 161,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_161, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 161,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_161, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 161,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_161, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 161,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_161, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 161,"amdgpu_cdna"); +DEF_REGISTER(vgpr162, Arch_amdgpu_cdna | VGPR | BITS_32 | 162,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_162, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 162,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_162, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 162,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_162, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 162,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_162, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 162,"amdgpu_cdna"); +DEF_REGISTER(vgpr163, Arch_amdgpu_cdna | VGPR | BITS_32 | 163,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_163, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 163,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_163, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 163,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_163, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 163,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_163, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 163,"amdgpu_cdna"); +DEF_REGISTER(vgpr164, Arch_amdgpu_cdna | VGPR | BITS_32 | 164,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_164, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 164,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_164, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 164,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_164, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 164,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_164, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 164,"amdgpu_cdna"); +DEF_REGISTER(vgpr165, Arch_amdgpu_cdna | VGPR | BITS_32 | 165,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_165, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 165,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_165, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 165,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_165, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 165,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_165, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 165,"amdgpu_cdna"); +DEF_REGISTER(vgpr166, Arch_amdgpu_cdna | VGPR | BITS_32 | 166,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_166, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 166,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_166, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 166,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_166, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 166,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_166, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 166,"amdgpu_cdna"); +DEF_REGISTER(vgpr167, Arch_amdgpu_cdna | VGPR | BITS_32 | 167,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_167, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 167,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_167, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 167,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_167, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 167,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_167, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 167,"amdgpu_cdna"); +DEF_REGISTER(vgpr168, Arch_amdgpu_cdna | VGPR | BITS_32 | 168,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_168, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 168,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_168, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 168,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_168, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 168,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_168, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 168,"amdgpu_cdna"); +DEF_REGISTER(vgpr169, Arch_amdgpu_cdna | VGPR | BITS_32 | 169,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_169, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 169,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_169, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 169,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_169, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 169,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_169, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 169,"amdgpu_cdna"); +DEF_REGISTER(vgpr170, Arch_amdgpu_cdna | VGPR | BITS_32 | 170,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_170, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 170,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_170, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 170,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_170, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 170,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_170, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 170,"amdgpu_cdna"); +DEF_REGISTER(vgpr171, Arch_amdgpu_cdna | VGPR | BITS_32 | 171,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_171, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 171,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_171, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 171,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_171, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 171,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_171, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 171,"amdgpu_cdna"); +DEF_REGISTER(vgpr172, Arch_amdgpu_cdna | VGPR | BITS_32 | 172,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_172, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 172,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_172, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 172,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_172, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 172,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_172, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 172,"amdgpu_cdna"); +DEF_REGISTER(vgpr173, Arch_amdgpu_cdna | VGPR | BITS_32 | 173,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_173, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 173,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_173, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 173,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_173, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 173,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_173, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 173,"amdgpu_cdna"); +DEF_REGISTER(vgpr174, Arch_amdgpu_cdna | VGPR | BITS_32 | 174,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_174, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 174,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_174, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 174,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_174, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 174,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_174, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 174,"amdgpu_cdna"); +DEF_REGISTER(vgpr175, Arch_amdgpu_cdna | VGPR | BITS_32 | 175,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_175, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 175,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_175, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 175,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_175, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 175,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_175, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 175,"amdgpu_cdna"); +DEF_REGISTER(vgpr176, Arch_amdgpu_cdna | VGPR | BITS_32 | 176,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_176, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 176,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_176, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 176,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_176, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 176,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_176, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 176,"amdgpu_cdna"); +DEF_REGISTER(vgpr177, Arch_amdgpu_cdna | VGPR | BITS_32 | 177,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_177, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 177,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_177, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 177,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_177, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 177,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_177, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 177,"amdgpu_cdna"); +DEF_REGISTER(vgpr178, Arch_amdgpu_cdna | VGPR | BITS_32 | 178,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_178, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 178,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_178, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 178,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_178, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 178,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_178, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 178,"amdgpu_cdna"); +DEF_REGISTER(vgpr179, Arch_amdgpu_cdna | VGPR | BITS_32 | 179,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_179, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 179,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_179, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 179,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_179, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 179,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_179, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 179,"amdgpu_cdna"); +DEF_REGISTER(vgpr180, Arch_amdgpu_cdna | VGPR | BITS_32 | 180,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_180, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 180,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_180, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 180,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_180, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 180,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_180, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 180,"amdgpu_cdna"); +DEF_REGISTER(vgpr181, Arch_amdgpu_cdna | VGPR | BITS_32 | 181,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_181, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 181,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_181, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 181,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_181, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 181,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_181, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 181,"amdgpu_cdna"); +DEF_REGISTER(vgpr182, Arch_amdgpu_cdna | VGPR | BITS_32 | 182,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_182, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 182,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_182, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 182,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_182, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 182,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_182, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 182,"amdgpu_cdna"); +DEF_REGISTER(vgpr183, Arch_amdgpu_cdna | VGPR | BITS_32 | 183,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_183, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 183,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_183, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 183,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_183, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 183,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_183, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 183,"amdgpu_cdna"); +DEF_REGISTER(vgpr184, Arch_amdgpu_cdna | VGPR | BITS_32 | 184,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_184, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 184,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_184, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 184,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_184, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 184,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_184, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 184,"amdgpu_cdna"); +DEF_REGISTER(vgpr185, Arch_amdgpu_cdna | VGPR | BITS_32 | 185,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_185, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 185,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_185, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 185,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_185, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 185,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_185, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 185,"amdgpu_cdna"); +DEF_REGISTER(vgpr186, Arch_amdgpu_cdna | VGPR | BITS_32 | 186,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_186, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 186,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_186, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 186,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_186, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 186,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_186, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 186,"amdgpu_cdna"); +DEF_REGISTER(vgpr187, Arch_amdgpu_cdna | VGPR | BITS_32 | 187,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_187, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 187,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_187, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 187,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_187, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 187,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_187, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 187,"amdgpu_cdna"); +DEF_REGISTER(vgpr188, Arch_amdgpu_cdna | VGPR | BITS_32 | 188,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_188, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 188,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_188, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 188,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_188, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 188,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_188, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 188,"amdgpu_cdna"); +DEF_REGISTER(vgpr189, Arch_amdgpu_cdna | VGPR | BITS_32 | 189,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_189, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 189,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_189, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 189,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_189, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 189,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_189, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 189,"amdgpu_cdna"); +DEF_REGISTER(vgpr190, Arch_amdgpu_cdna | VGPR | BITS_32 | 190,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_190, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 190,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_190, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 190,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_190, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 190,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_190, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 190,"amdgpu_cdna"); +DEF_REGISTER(vgpr191, Arch_amdgpu_cdna | VGPR | BITS_32 | 191,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_191, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 191,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_191, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 191,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_191, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 191,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_191, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 191,"amdgpu_cdna"); +DEF_REGISTER(vgpr192, Arch_amdgpu_cdna | VGPR | BITS_32 | 192,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_192, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 192,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_192, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 192,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_192, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 192,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_192, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 192,"amdgpu_cdna"); +DEF_REGISTER(vgpr193, Arch_amdgpu_cdna | VGPR | BITS_32 | 193,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_193, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 193,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_193, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 193,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_193, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 193,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_193, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 193,"amdgpu_cdna"); +DEF_REGISTER(vgpr194, Arch_amdgpu_cdna | VGPR | BITS_32 | 194,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_194, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 194,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_194, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 194,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_194, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 194,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_194, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 194,"amdgpu_cdna"); +DEF_REGISTER(vgpr195, Arch_amdgpu_cdna | VGPR | BITS_32 | 195,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_195, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 195,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_195, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 195,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_195, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 195,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_195, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 195,"amdgpu_cdna"); +DEF_REGISTER(vgpr196, Arch_amdgpu_cdna | VGPR | BITS_32 | 196,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_196, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 196,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_196, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 196,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_196, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 196,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_196, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 196,"amdgpu_cdna"); +DEF_REGISTER(vgpr197, Arch_amdgpu_cdna | VGPR | BITS_32 | 197,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_197, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 197,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_197, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 197,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_197, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 197,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_197, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 197,"amdgpu_cdna"); +DEF_REGISTER(vgpr198, Arch_amdgpu_cdna | VGPR | BITS_32 | 198,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_198, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 198,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_198, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 198,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_198, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 198,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_198, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 198,"amdgpu_cdna"); +DEF_REGISTER(vgpr199, Arch_amdgpu_cdna | VGPR | BITS_32 | 199,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_199, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 199,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_199, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 199,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_199, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 199,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_199, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 199,"amdgpu_cdna"); +DEF_REGISTER(vgpr200, Arch_amdgpu_cdna | VGPR | BITS_32 | 200,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_200, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 200,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_200, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 200,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_200, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 200,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_200, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 200,"amdgpu_cdna"); +DEF_REGISTER(vgpr201, Arch_amdgpu_cdna | VGPR | BITS_32 | 201,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_201, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 201,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_201, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 201,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_201, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 201,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_201, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 201,"amdgpu_cdna"); +DEF_REGISTER(vgpr202, Arch_amdgpu_cdna | VGPR | BITS_32 | 202,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_202, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 202,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_202, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 202,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_202, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 202,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_202, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 202,"amdgpu_cdna"); +DEF_REGISTER(vgpr203, Arch_amdgpu_cdna | VGPR | BITS_32 | 203,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_203, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 203,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_203, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 203,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_203, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 203,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_203, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 203,"amdgpu_cdna"); +DEF_REGISTER(vgpr204, Arch_amdgpu_cdna | VGPR | BITS_32 | 204,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_204, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 204,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_204, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 204,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_204, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 204,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_204, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 204,"amdgpu_cdna"); +DEF_REGISTER(vgpr205, Arch_amdgpu_cdna | VGPR | BITS_32 | 205,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_205, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 205,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_205, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 205,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_205, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 205,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_205, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 205,"amdgpu_cdna"); +DEF_REGISTER(vgpr206, Arch_amdgpu_cdna | VGPR | BITS_32 | 206,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_206, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 206,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_206, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 206,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_206, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 206,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_206, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 206,"amdgpu_cdna"); +DEF_REGISTER(vgpr207, Arch_amdgpu_cdna | VGPR | BITS_32 | 207,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_207, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 207,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_207, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 207,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_207, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 207,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_207, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 207,"amdgpu_cdna"); +DEF_REGISTER(vgpr208, Arch_amdgpu_cdna | VGPR | BITS_32 | 208,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_208, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 208,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_208, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 208,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_208, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 208,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_208, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 208,"amdgpu_cdna"); +DEF_REGISTER(vgpr209, Arch_amdgpu_cdna | VGPR | BITS_32 | 209,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_209, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 209,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_209, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 209,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_209, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 209,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_209, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 209,"amdgpu_cdna"); +DEF_REGISTER(vgpr210, Arch_amdgpu_cdna | VGPR | BITS_32 | 210,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_210, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 210,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_210, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 210,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_210, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 210,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_210, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 210,"amdgpu_cdna"); +DEF_REGISTER(vgpr211, Arch_amdgpu_cdna | VGPR | BITS_32 | 211,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_211, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 211,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_211, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 211,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_211, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 211,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_211, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 211,"amdgpu_cdna"); +DEF_REGISTER(vgpr212, Arch_amdgpu_cdna | VGPR | BITS_32 | 212,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_212, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 212,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_212, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 212,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_212, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 212,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_212, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 212,"amdgpu_cdna"); +DEF_REGISTER(vgpr213, Arch_amdgpu_cdna | VGPR | BITS_32 | 213,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_213, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 213,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_213, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 213,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_213, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 213,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_213, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 213,"amdgpu_cdna"); +DEF_REGISTER(vgpr214, Arch_amdgpu_cdna | VGPR | BITS_32 | 214,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_214, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 214,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_214, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 214,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_214, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 214,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_214, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 214,"amdgpu_cdna"); +DEF_REGISTER(vgpr215, Arch_amdgpu_cdna | VGPR | BITS_32 | 215,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_215, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 215,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_215, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 215,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_215, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 215,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_215, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 215,"amdgpu_cdna"); +DEF_REGISTER(vgpr216, Arch_amdgpu_cdna | VGPR | BITS_32 | 216,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_216, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 216,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_216, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 216,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_216, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 216,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_216, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 216,"amdgpu_cdna"); +DEF_REGISTER(vgpr217, Arch_amdgpu_cdna | VGPR | BITS_32 | 217,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_217, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 217,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_217, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 217,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_217, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 217,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_217, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 217,"amdgpu_cdna"); +DEF_REGISTER(vgpr218, Arch_amdgpu_cdna | VGPR | BITS_32 | 218,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_218, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 218,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_218, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 218,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_218, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 218,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_218, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 218,"amdgpu_cdna"); +DEF_REGISTER(vgpr219, Arch_amdgpu_cdna | VGPR | BITS_32 | 219,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_219, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 219,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_219, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 219,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_219, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 219,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_219, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 219,"amdgpu_cdna"); +DEF_REGISTER(vgpr220, Arch_amdgpu_cdna | VGPR | BITS_32 | 220,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_220, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 220,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_220, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 220,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_220, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 220,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_220, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 220,"amdgpu_cdna"); +DEF_REGISTER(vgpr221, Arch_amdgpu_cdna | VGPR | BITS_32 | 221,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_221, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 221,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_221, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 221,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_221, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 221,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_221, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 221,"amdgpu_cdna"); +DEF_REGISTER(vgpr222, Arch_amdgpu_cdna | VGPR | BITS_32 | 222,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_222, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 222,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_222, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 222,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_222, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 222,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_222, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 222,"amdgpu_cdna"); +DEF_REGISTER(vgpr223, Arch_amdgpu_cdna | VGPR | BITS_32 | 223,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_223, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 223,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_223, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 223,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_223, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 223,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_223, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 223,"amdgpu_cdna"); +DEF_REGISTER(vgpr224, Arch_amdgpu_cdna | VGPR | BITS_32 | 224,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_224, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 224,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_224, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 224,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_224, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 224,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_224, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 224,"amdgpu_cdna"); +DEF_REGISTER(vgpr225, Arch_amdgpu_cdna | VGPR | BITS_32 | 225,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_225, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 225,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_225, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 225,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_225, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 225,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_225, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 225,"amdgpu_cdna"); +DEF_REGISTER(vgpr226, Arch_amdgpu_cdna | VGPR | BITS_32 | 226,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_226, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 226,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_226, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 226,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_226, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 226,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_226, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 226,"amdgpu_cdna"); +DEF_REGISTER(vgpr227, Arch_amdgpu_cdna | VGPR | BITS_32 | 227,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_227, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 227,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_227, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 227,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_227, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 227,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_227, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 227,"amdgpu_cdna"); +DEF_REGISTER(vgpr228, Arch_amdgpu_cdna | VGPR | BITS_32 | 228,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_228, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 228,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_228, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 228,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_228, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 228,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_228, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 228,"amdgpu_cdna"); +DEF_REGISTER(vgpr229, Arch_amdgpu_cdna | VGPR | BITS_32 | 229,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_229, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 229,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_229, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 229,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_229, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 229,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_229, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 229,"amdgpu_cdna"); +DEF_REGISTER(vgpr230, Arch_amdgpu_cdna | VGPR | BITS_32 | 230,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_230, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 230,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_230, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 230,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_230, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 230,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_230, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 230,"amdgpu_cdna"); +DEF_REGISTER(vgpr231, Arch_amdgpu_cdna | VGPR | BITS_32 | 231,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_231, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 231,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_231, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 231,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_231, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 231,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_231, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 231,"amdgpu_cdna"); +DEF_REGISTER(vgpr232, Arch_amdgpu_cdna | VGPR | BITS_32 | 232,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_232, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 232,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_232, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 232,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_232, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 232,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_232, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 232,"amdgpu_cdna"); +DEF_REGISTER(vgpr233, Arch_amdgpu_cdna | VGPR | BITS_32 | 233,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_233, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 233,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_233, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 233,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_233, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 233,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_233, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 233,"amdgpu_cdna"); +DEF_REGISTER(vgpr234, Arch_amdgpu_cdna | VGPR | BITS_32 | 234,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_234, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 234,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_234, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 234,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_234, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 234,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_234, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 234,"amdgpu_cdna"); +DEF_REGISTER(vgpr235, Arch_amdgpu_cdna | VGPR | BITS_32 | 235,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_235, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 235,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_235, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 235,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_235, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 235,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_235, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 235,"amdgpu_cdna"); +DEF_REGISTER(vgpr236, Arch_amdgpu_cdna | VGPR | BITS_32 | 236,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_236, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 236,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_236, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 236,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_236, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 236,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_236, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 236,"amdgpu_cdna"); +DEF_REGISTER(vgpr237, Arch_amdgpu_cdna | VGPR | BITS_32 | 237,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_237, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 237,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_237, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 237,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_237, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 237,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_237, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 237,"amdgpu_cdna"); +DEF_REGISTER(vgpr238, Arch_amdgpu_cdna | VGPR | BITS_32 | 238,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_238, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 238,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_238, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 238,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_238, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 238,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_238, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 238,"amdgpu_cdna"); +DEF_REGISTER(vgpr239, Arch_amdgpu_cdna | VGPR | BITS_32 | 239,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_239, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 239,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_239, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 239,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_239, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 239,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_239, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 239,"amdgpu_cdna"); +DEF_REGISTER(vgpr240, Arch_amdgpu_cdna | VGPR | BITS_32 | 240,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_240, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 240,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_240, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 240,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_240, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 240,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec16_240, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 240,"amdgpu_cdna"); +DEF_REGISTER(vgpr241, Arch_amdgpu_cdna | VGPR | BITS_32 | 241,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_241, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 241,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_241, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 241,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_241, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 241,"amdgpu_cdna"); +DEF_REGISTER(vgpr242, Arch_amdgpu_cdna | VGPR | BITS_32 | 242,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_242, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 242,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_242, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 242,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_242, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 242,"amdgpu_cdna"); +DEF_REGISTER(vgpr243, Arch_amdgpu_cdna | VGPR | BITS_32 | 243,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_243, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 243,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_243, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 243,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_243, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 243,"amdgpu_cdna"); +DEF_REGISTER(vgpr244, Arch_amdgpu_cdna | VGPR | BITS_32 | 244,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_244, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 244,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_244, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 244,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_244, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 244,"amdgpu_cdna"); +DEF_REGISTER(vgpr245, Arch_amdgpu_cdna | VGPR | BITS_32 | 245,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_245, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 245,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_245, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 245,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_245, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 245,"amdgpu_cdna"); +DEF_REGISTER(vgpr246, Arch_amdgpu_cdna | VGPR | BITS_32 | 246,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_246, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 246,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_246, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 246,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_246, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 246,"amdgpu_cdna"); +DEF_REGISTER(vgpr247, Arch_amdgpu_cdna | VGPR | BITS_32 | 247,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_247, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 247,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_247, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 247,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_247, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 247,"amdgpu_cdna"); +DEF_REGISTER(vgpr248, Arch_amdgpu_cdna | VGPR | BITS_32 | 248,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_248, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 248,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_248, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 248,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec8_248, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 248,"amdgpu_cdna"); +DEF_REGISTER(vgpr249, Arch_amdgpu_cdna | VGPR | BITS_32 | 249,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_249, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 249,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_249, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 249,"amdgpu_cdna"); +DEF_REGISTER(vgpr250, Arch_amdgpu_cdna | VGPR | BITS_32 | 250,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_250, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 250,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_250, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 250,"amdgpu_cdna"); +DEF_REGISTER(vgpr251, Arch_amdgpu_cdna | VGPR | BITS_32 | 251,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_251, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 251,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_251, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 251,"amdgpu_cdna"); +DEF_REGISTER(vgpr252, Arch_amdgpu_cdna | VGPR | BITS_32 | 252,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_252, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 252,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec4_252, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 252,"amdgpu_cdna"); +DEF_REGISTER(vgpr253, Arch_amdgpu_cdna | VGPR | BITS_32 | 253,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_253, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 253,"amdgpu_cdna"); +DEF_REGISTER(vgpr254, Arch_amdgpu_cdna | VGPR | BITS_32 | 254,"amdgpu_cdna"); +DEF_REGISTER(vgpr_vec2_254, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 254,"amdgpu_cdna"); +DEF_REGISTER(vgpr255, Arch_amdgpu_cdna | VGPR | BITS_32 | 255,"amdgpu_cdna"); +#endif //DYNINST_AMDGPU_CDNA_SYS_REGS_H diff --git a/common/h/amdgpu_op_table.h b/common/h/amdgpu_op_table.h index 8162eaa5a7..e23acad4a7 100644 --- a/common/h/amdgpu_op_table.h +++ b/common/h/amdgpu_op_table.h @@ -1,416 +1,431 @@ -amdgpu_op_v_max_i16_e64, -amdgpu_op_v_mul_lo_u16_e64, -amdgpu_op_v_max_i16, -amdgpu_op_s_lshsl2_add_u32, -amdgpu_op_s_flbit_i32_b32, -amdgpu_op_tbuffer_store_format_d16_xyzw, -amdgpu_op_s_cmpk_eq_i32, -amdgpu_op_buffer_load_format_xyzw, -amdgpu_op_v_subrev_u32_e64, -amdgpu_op_v_subrev_f16, -amdgpu_op_v_ldexp_f16, -amdgpu_op_s_load_dwordx8, -amdgpu_op_s_cmpk_lt_u32, -amdgpu_op_s_bfe_i64, +amdgpu_op_s_brev_b32, +amdgpu_op_v_cvt_f32_u32, +amdgpu_op_v_max_u32_e64, +amdgpu_op_v_nop_e64, +amdgpu_op_v_mul_hi_u32_u24, +amdgpu_op_v_max_f32, +amdgpu_op_v_sub_f32, amdgpu_op_v_cmp_eq_u64_e64, -amdgpu_op_s_lshl3_add_u32, -amdgpu_op_s_sub_u32, -amdgpu_op_v_mul_u32_u24, -amdgpu_op_s_add_u32, -amdgpu_op_v_madmk_f32, -amdgpu_op_tbuffer_store_format_xyz, -amdgpu_op_v_sub_u16_e64, +amdgpu_op_s_rfe_b64, +amdgpu_op_v_add_co_u32_e64, +amdgpu_op_v_subrev_u16, +amdgpu_op_v_ashrrev_i16_e64, +amdgpu_op_ds_read_b128, +amdgpu_op_s_andn2_b64, +amdgpu_op_v_addc_co_u32, +amdgpu_op_v_cmp_le_u32_e64, +amdgpu_op_s_max_i32, amdgpu_op_s_invalid_1, -amdgpu_op_v_cvt_i32_f64_e64, -amdgpu_op_s_addc_u32, -amdgpu_op_s_pack_lh_b32_b16, -amdgpu_op_s_nor_savexec_b64, -amdgpu_op_s_sethalt, +amdgpu_op_v_addc_co_u32_e64, +amdgpu_op_s_dcache_wb, +amdgpu_op_s_cmov_b32, +amdgpu_op_s_andn2_wrexec_b64, +amdgpu_op_buffer_load_dword, +amdgpu_op_s_trap, +amdgpu_op_s_bitreplicate_b64_b32, +amdgpu_op_v_madak_f16, +amdgpu_op_v_mac_f16, +amdgpu_op_v_add_co_u32, +amdgpu_op_s_bcnt0_i32_b32, +amdgpu_op_v_cndmask_b32, +amdgpu_op_s_sub_u32, +amdgpu_op_s_sendmsghalt, +amdgpu_op_s_bitcmp0_b64, +amdgpu_op_v_cvt_off_f32_i4_e64, +amdgpu_op_v_cmpx_t_u64_e64, +amdgpu_op_s_brev_b64, +amdgpu_op_s_sleep, +amdgpu_op_v_or_b32, +amdgpu_op_v_mov_b32_e64, +amdgpu_op_v_add_f32_e64, +amdgpu_op_s_set_gpr_idx_off, +amdgpu_op_v_sub_co_u32_e64, +amdgpu_op_s_bitcmp1_b32, +amdgpu_op_v_cvt_off_f32_i4, +amdgpu_op_s_cmpk_lg_u32, +amdgpu_op_s_bitset1_b64, +amdgpu_op_v_cvt_rpi_i32_f32_e64, +amdgpu_op_v_max_u16, +amdgpu_op_buffer_store_format_x, +amdgpu_op_s_not_b32, +amdgpu_op_v_madak_f32, +amdgpu_op_v_min_i16, +amdgpu_op_s_pack_hh_b32_B16, +amdgpu_op_v_mul_hi_i32_i24, +amdgpu_op_v_cvt_i32_f32, +amdgpu_op_s_orn2_savexec_b64, +amdgpu_op_v_madmk_f32_e64, +amdgpu_op_s_xor_b64, +amdgpu_op_v_cmp_lt_u32, +amdgpu_op_s_buffer_store_dwordx2, +amdgpu_op_s_xor_b32, +amdgpu_op_s_movk_i32, +amdgpu_op_buffer_load_format_xyz, amdgpu_op_v_cvt_flr_i32_f32_e64, -amdgpu_op_v_cvt_u32_f32, +amdgpu_op_v_subbrev_co_u32, +amdgpu_op_s_cbranch_g_fork, +amdgpu_op_v_lshlrev_b64, +amdgpu_op_v_cvt_f64_i32_e64, +amdgpu_op_s_bfe_u64, +amdgpu_op_s_andn2_savexec_b64, +amdgpu_op_v_cvt_f32_f16, +amdgpu_op_s_wqm_b64, +amdgpu_op_s_nand_b32, +amdgpu_op_v_mov_b32, +amdgpu_op_s_lshsl2_add_u32, +amdgpu_op_v_add_u32_e64, +amdgpu_op_v_pack_b32_f16, +amdgpu_op_v_sub_f16_e64, +amdgpu_op_v_cvt_f32_i32, +amdgpu_op_buffer_store_format_xyz, +amdgpu_op_s_ttracedata, +amdgpu_op_s_scratch_load_dwordx2, +amdgpu_op_v_subrev_u32, +amdgpu_op_s_cmp_lg_u64, +amdgpu_op_s_cmpk_le_u32, +amdgpu_op_v_cmp_eq_u64, +amdgpu_op_s_branch, +amdgpu_op_s_and_saveexec_b64, +amdgpu_op_buffer_load_format_xy, +amdgpu_op_v_subrev_co_u32_e64, +amdgpu_op_v_ashrrev_i16, +amdgpu_op_v_cmp_neq_f16, +amdgpu_op_s_atomic_dec_x2, +amdgpu_op_s_incperflevel, +amdgpu_op_v_mad_u64_u32, +amdgpu_op_s_setreg_b32, +amdgpu_op_v_max_i32_e64, +amdgpu_op_s_cmovk_i32, +amdgpu_op_s_sendmsg, +amdgpu_op_s_endpgm, +amdgpu_op_s_decperflevel, +amdgpu_op_s_bcnt0_i32_b64, +amdgpu_op_s_dcache_inv_vol, +amdgpu_op_v_min_f32_e64, +amdgpu_op_v_madak_f32_e64, +amdgpu_op_s_cmpk_gt_u32, amdgpu_op_s_quadmask_b64, -amdgpu_op_tbuffer_load_format_xyz, -amdgpu_op_s_min_i32, -amdgpu_op_s_cbranch_scc1, -amdgpu_op_s_not_b32, -amdgpu_op_s_lshl_b64, -amdgpu_op_s_invalid_2, +amdgpu_op_buffer_store_format_xy, +amdgpu_op_v_cmp_le_u32, +amdgpu_op_tbuffer_load_format_xy, +amdgpu_op_v_min_f16_e64, +amdgpu_op_v_readfirstlane_b32, +amdgpu_op_s_bfe_u32, +amdgpu_op_v_subrev_f32, +amdgpu_op_s_buffer_load_dwordx4, +amdgpu_op_v_cvt_f32_u32_e64, +amdgpu_op_v_subrev_f16, +amdgpu_op_s_mov_b32, +amdgpu_op_v_min_f32, +amdgpu_op_buffer_load_dwordx4, +amdgpu_op_s_cmp_ge_i32, amdgpu_op_s_cbranch_cdbgsys, -amdgpu_op_s_cmp_ge_u32, -amdgpu_op_s_movrels_b64, -amdgpu_op_s_movrels_b32, -amdgpu_op_s_bitcmp1_b32, -amdgpu_op_s_nor_b64, -amdgpu_op_v_mul_f16, -amdgpu_op_v_interp_p2_f32, -amdgpu_op_s_cmp_lt_i32, -amdgpu_op_s_max_i32, -amdgpu_op_s_bcnt1_i32_b64, -amdgpu_op_v_xor_b32, -amdgpu_op_v_max_f16, -amdgpu_op_v_min_u16, -amdgpu_op_v_cmp_ge_u32, -amdgpu_op_v_subrev_f16_e64, -amdgpu_op_v_cmp_class_f32, -amdgpu_op_v_max_i32, -amdgpu_op_s_cbranch_execnz, +amdgpu_op_s_cmp_lg_u32, +amdgpu_op_v_min_u32, +amdgpu_op_v_min_u32_e64, +amdgpu_op_s_load_dwordx16, +amdgpu_op_s_nop, +amdgpu_op_s_endpgm_saved, +amdgpu_op_v_min_i32, +amdgpu_op_v_mul_i32_i24, +amdgpu_op_s_setprio, +amdgpu_op_s_lshl_b64, +amdgpu_op_s_flbit_i32_b32, +amdgpu_op_v_xno2_b32_e64, +amdgpu_op_v_pk_mad_i16, amdgpu_op_v_cmp_lt_u32_e64, -amdgpu_op_buffer_store_format_xy, +amdgpu_op_s_cbranch_cdbgsys_and_user, +amdgpu_op_v_cvt_flr_i32_f32, amdgpu_op_v_mul_hi_i32_i24_e64, -amdgpu_op_v_cvt_f32_f16_e64, -amdgpu_op_v_lshlrev_b32, -amdgpu_op_s_xnor_b64, -amdgpu_op_v_max_u32, -amdgpu_op_v_subrev_co_u32, -amdgpu_op_v_add_u32_e64, -amdgpu_op_v_interp_p1_f32, -amdgpu_op_v_cmp_eq_u64, -amdgpu_op_s_bitcmp0_b64, +amdgpu_op_s_xor_savexec_b64, +amdgpu_op_s_setvkip, +amdgpu_op_s_load_dword, +amdgpu_op_v_cmp_ge_u64_e64, +amdgpu_op_s_pack_ll_b32_b16, amdgpu_op_s_bitset1_b32, -amdgpu_op_v_cmp_ge_u32_e64, -amdgpu_op_s_addk_i32, -amdgpu_op_v_add_co_u32_e64, -amdgpu_op_s_ff0_i32_b64, -amdgpu_op_s_sext_i32_i8, +amdgpu_op_s_icache_inv, +amdgpu_op_s_load_dwordx2, +amdgpu_op_v_mul_hi_u32, +amdgpu_op_s_cbranch_i_fork, +amdgpu_op_s_cslect_b64, +amdgpu_op_s_orn2_b32, +amdgpu_op_s_sub_i32, +amdgpu_op_v_subrev_f16_e64, +amdgpu_op_v_max_f16, +amdgpu_op_v_swap_b32_e64, +amdgpu_op_s_bitcmp1_b64, amdgpu_op_v_min_f16, -amdgpu_op_s_cbranch_vccnz, -amdgpu_op_v_min_u32_e64, -amdgpu_op_v_sub_f16_e64, -amdgpu_op_v_subrev_f32_e64, -amdgpu_op_v_sub_u32_e64, -amdgpu_op_v_cmp_gt_u32_e64, -amdgpu_op_s_mov_b64, -amdgpu_op_s_load_dwordx4, -amdgpu_op_s_wakeup, -amdgpu_op_v_cndmask_b32, +amdgpu_op_s_scratch_store_dword, amdgpu_op_v_lshrrev_b16_e64, -amdgpu_op_s_abs_i32, -amdgpu_op_s_dcache_memrealtime, -amdgpu_op_v_cmp_neq_f16, -amdgpu_op_s_cbranch_i_fork, -amdgpu_op_v_xno2_b32_e64, -amdgpu_op_s_cmpk_lg_u32, -amdgpu_op_s_cmpk_lt_i32, -amdgpu_op_v_mul_f16_e64, -amdgpu_op_s_pack_hh_b32_B16, -amdgpu_op_v_cvt_off_f32_i4, -amdgpu_op_v_ashrrev_i16_e64, -amdgpu_op_s_orn1_saveexec_b64, -amdgpu_op_v_subrev_f32, -amdgpu_op_s_cbranch_execz, -amdgpu_op_s_not_b64, -amdgpu_op_s_buffer_load_dwordx2, -amdgpu_op_tbuffer_store_format_xy, -amdgpu_op_v_addc_co_u32, -amdgpu_op_v_pack_b32_f16, -amdgpu_op_v_lshlrev_b32_e64, -amdgpu_op_s_cslect_b32, -amdgpu_op_v_min_f32_e64, -amdgpu_op_v_swap_b32, -amdgpu_op_s_subb_u32, -amdgpu_op_s_dcache_wb_vol, -amdgpu_op_s_store_dwordx2, -amdgpu_op_s_load_dword, -amdgpu_op_v_addc_co_u32_e64, +amdgpu_op_v_madmk_f32, +amdgpu_op_v_xor_b32_e64, +amdgpu_op_v_ashrrev_i32_e64, +amdgpu_op_v_cmp_class_f32, amdgpu_op_s_bfm_b64, -amdgpu_op_v_mul_legacy_f32, -amdgpu_op_s_branch, -amdgpu_op_s_absdiff_i32, -amdgpu_op_s_getpc_b64, -amdgpu_op_v_readfirstlane_b32_e64, -amdgpu_op_buffer_load_format_xy, -amdgpu_op_s_bfm_b32, -amdgpu_op_v_add_f16, -amdgpu_op_s_movk_i32, -amdgpu_op_load_dword, -amdgpu_op_v_mac_f16_e64, -amdgpu_op_buffer_atomic_dec_x2, -amdgpu_op_s_nand_savexec_b64, -amdgpu_op_s_min_u32, -amdgpu_op_s_andn1_wrexec_b64, +amdgpu_op_s_ff0_i32_b32, +amdgpu_op_s_fltbit_i32_i64, +amdgpu_op_buffer_load_format_x, +amdgpu_op_v_sub_f32_e64, +amdgpu_op_s_store_dwordx4, +amdgpu_op_v_min_i32_e64, +amdgpu_op_s_cmp_eq_u32, +amdgpu_op_v_add_f32, +amdgpu_op_s_cmp_lt_u32, +amdgpu_op_s_swappc_b64, +amdgpu_op_s_bfe_i64, +amdgpu_op_v_min_u16, +amdgpu_op_v_xor_b32, +amdgpu_op_ds_read2_b32, +amdgpu_op_s_dcache_inv, +amdgpu_op_v_lshrrev_b32_e64, +amdgpu_op_v_add_b32, +amdgpu_op_v_lshlrev_b32_e64, +amdgpu_op_s_cmp_ge_u32, +amdgpu_op_flat_load_dword, +amdgpu_op_s_cbranch_vccnz, +amdgpu_op_v_mul_f32_e64, +amdgpu_op_v_cvt_i32_f64, +amdgpu_op_v_mac_b32, amdgpu_op_s_or_savexec_b64, -amdgpu_op_s_setreg_imm32_b32, -amdgpu_op_load_ubyte, -amdgpu_op_v_mul_f32, -amdgpu_op_s_waitcnt, -amdgpu_op_v_max_u32_e64, +amdgpu_op_v_nop, +amdgpu_op_v_sub_co_u32, +amdgpu_op_v_max_u32, +amdgpu_op_v_add_f16_e64, +amdgpu_op_v_cmp_gt_u64, +amdgpu_op_v_max_u16_e64, +amdgpu_op_s_ashr_i32, +amdgpu_op_s_bfm_b32, +amdgpu_op_s_orn1_saveexec_b64, +amdgpu_op_v_cmp_gt_u32, +amdgpu_op_tbuffer_store_format_xy, +amdgpu_op_v_ldexp_f16, +amdgpu_op_s_mov_b64, amdgpu_op_v_max_f32_e64, -amdgpu_op_s_lshl_b32, -amdgpu_op_buffer_store_format_xyz, -amdgpu_op_s_flbit_i32_b64, -amdgpu_op_s_sext_i32_i16, -amdgpu_op_v_subb_co_u32_e64, -amdgpu_op_s_setreg_b32, -amdgpu_op_v_cvt_f64_i32_e64, -amdgpu_op_v_cvt_f32_u32, -amdgpu_op_buffer_load_format_x, -amdgpu_op_v_min_i16_e64, +amdgpu_op_s_setpc_b64, amdgpu_op_v_cmp_ne_u64_e64, -amdgpu_op_s_and_saveexec_b64, +amdgpu_op_v_cmp_le_u64_e64, +amdgpu_op_s_or_b64, +amdgpu_op_s_buffer_load_dwordx2, +amdgpu_op_s_invalid_2, +amdgpu_op_v_cmp_lt_u64, +amdgpu_op_s_nand_savexec_b64, +amdgpu_op_s_xnor_savexec_b64, +amdgpu_op_s_nor_savexec_b64, +amdgpu_op_v_max_i16_e64, +amdgpu_op_buffer_load_dwordx3, +amdgpu_op_v_cmp_gt_u32_e64, amdgpu_op_v_dot8_u32_u4, -amdgpu_op_v_madak_f32_e64, +amdgpu_op_s_abs_i32, +amdgpu_op_s_cbranch_cdbgsys_or_user, +amdgpu_op_v_cndmask_b32_e64, amdgpu_op_s_mulk_i32, -amdgpu_op_s_scratch_load_dword, -amdgpu_op_s_bitreplicate_b64_b32, -amdgpu_op_s_set_gpr_idx_mode, -amdgpu_op_v_subbrev_co_u32_e64, -amdgpu_op_v_ashrrev_i32_e64, -amdgpu_op_s_cmovk_i32, +amdgpu_op_s_endpgm_ordered_ps_done, +amdgpu_op_tbuffer_store_format_xyz, +amdgpu_op_s_min_i32, +amdgpu_op_tbuffer_store_format_x, +amdgpu_op_v_mul_lo_u16_e64, +amdgpu_op_v_or_b32_e64, +amdgpu_op_s_and_b32, +amdgpu_op_s_bitset0_b32, +amdgpu_op_v_lshlrev_b32, +amdgpu_op_v_cmp_gt_u64_e64, +amdgpu_op_s_ashr_i64, +amdgpu_op_s_lshr_b32, +amdgpu_op_s_scratch_store_dwordx4, +amdgpu_op_s_cbranch_execz, +amdgpu_op_v_mul_u32_u24_e64, +amdgpu_op_v_madmk_f16, +amdgpu_op_s_nor_b64, +amdgpu_op_s_sethalt, +amdgpu_op_v_add_u16, +amdgpu_op_s_nand_b64, +amdgpu_op_s_flbit_i32_b64, +amdgpu_op_buffer_atomic_dec_x2, amdgpu_op_s_rfe_restore_b64, -amdgpu_op_s_sendmsghalt, -amdgpu_op_s_nop, -amdgpu_op_tbuffer_load_format_xy, -amdgpu_op_s_dcache_wb, -amdgpu_op_s_bitcmp1_b64, -amdgpu_op_buffer_store_format_xyzw, -amdgpu_op_s_load_dwordx16, -amdgpu_op_s_cmpk_eq_u32, -amdgpu_op_v_min_i32_e64, -amdgpu_op_v_cmp_class_f32_e64, +amdgpu_op_ds_write_b32, +amdgpu_op_s_mul_i32, +amdgpu_op_s_andn1_wrexec_b64, +amdgpu_op_buffer_load_format_xyzw, +amdgpu_op_v_rcp_iflag_f32_e64, +amdgpu_op_v_cvt_f32_i32_e64, +amdgpu_op_s_nor_b32, +amdgpu_op_s_store_dwordx2, +amdgpu_op_v_cvt_rpi_i32_f32, +amdgpu_op_v_rcp_iflag_f32, +amdgpu_op_s_buffer_load_dwordx8, +amdgpu_op_s_setkill, +amdgpu_op_s_cmp_gt_i32, +amdgpu_op_v_add_f16, +amdgpu_op_s_wakeup, +amdgpu_op_v_add_u16_e64, +amdgpu_op_s_cmp_gt_u32, +amdgpu_op_v_max_f16_e64, +amdgpu_op_s_cmov_b64, +amdgpu_op_v_ldexp_f16_e64, +amdgpu_op_v_sub_f16, +amdgpu_op_v_lshlrev_b16_e64, +amdgpu_op_v_cvt_i32_f32_e64, +amdgpu_op_v_lshlrev_b16, +amdgpu_op_s_cmpk_le_i32, +amdgpu_op_s_cmp_eq_u64, +amdgpu_op_tbuffer_store_format_d16_xyzw, +amdgpu_op_s_mul_hi_i32, +amdgpu_op_s_load_dwordx4, +amdgpu_op_s_cmp_le_i32, +amdgpu_op_v_max_i16, +amdgpu_op_tbuffer_load_format_xyzw, +amdgpu_op_v_cmp_le_u64, +amdgpu_op_s_movreld_b32, +amdgpu_op_s_load_dwordx8, +amdgpu_op_v_mul_hi_i32, +amdgpu_op_s_bcnt1_i32_b64, +amdgpu_op_flat_load_ubyte, +amdgpu_op_s_cmpk_ge_i32, +amdgpu_op_v_mul_f32, +amdgpu_op_tbuffer_store_format_xyzw, +amdgpu_op_s_call_b64, +amdgpu_op_s_buffer_store_dword, +amdgpu_op_s_lshr_b64, +amdgpu_op_s_or_b32, +amdgpu_op_v_cvt_f64_i32, +amdgpu_op_s_lshl_b32, +amdgpu_op_s_scratch_store_dwordx2, +amdgpu_op_s_set_gpr_idx_idx, +amdgpu_op_s_setreg_imm32_b32, +amdgpu_op_s_getpc_b64, amdgpu_op_v_cmp_ge_u64, -amdgpu_op_v_cndmask_b32_e64, -amdgpu_op_v_ashrrev_i16, -amdgpu_op_v_sub_co_u32_e64, -amdgpu_op_v_sub_f32, -amdgpu_op_s_cmov_b32, +amdgpu_op_v_cvt_u32_f32_e64, +amdgpu_op_s_movrels_b64, +amdgpu_op_v_mul_f16_e64, amdgpu_op_v_subrev_u16_e64, -amdgpu_op_s_cmpk_le_i32, -amdgpu_op_v_mul_hi_u32_u24, -amdgpu_op_ds_read_b128, -amdgpu_op_s_buffer_load_dword, -amdgpu_op_v_mac_b32_e64, -amdgpu_op_s_barrier, -amdgpu_op_v_cvt_i32_f64, -amdgpu_op_s_mul_hi_u32, -amdgpu_op_s_endpgm_ordered_ps_done, -amdgpu_op_v_sub_u32, -amdgpu_op_s_scratch_load_dwordx2, -amdgpu_op_s_xor_savexec_b64, -amdgpu_op_s_sendmsg, -amdgpu_op_s_cbranch_g_fork, -amdgpu_op_s_set_gpr_idx_on, -amdgpu_op_v_min_f16_e64, -amdgpu_op_s_ff0_i32_b32, -amdgpu_op_s_getreg_b32, -amdgpu_op_v_cvt_f16_f32, +amdgpu_op_s_not_b64, +amdgpu_op_s_wqm_b32, +amdgpu_op_v_cvt_f32_f16_e64, +amdgpu_op_v_interp_p2_f32, +amdgpu_op_v_min_i16_e64, +amdgpu_op_v_mad_f32, +amdgpu_op_v_sub_u32_e64, amdgpu_op_s_cbranch_cdbguser, -amdgpu_op_v_add_u16_e64, -amdgpu_op_v_cvt_flr_i32_f32, -amdgpu_op_s_lshr_b64, -amdgpu_op_v_max_f32, -amdgpu_op_v_swap_b32_e64, -amdgpu_op_s_cmpk_gt_u32, -amdgpu_op_v_cvt_f32_i32_e64, -amdgpu_op_s_ff1_i32_b32, -amdgpu_op_s_endpgm_saved, -amdgpu_op_s_cbranch_scc0, -amdgpu_op_v_cmp_le_u32_e64, -amdgpu_op_v_xno2_b32, -amdgpu_op_v_cmp_eq_u32_e64, -amdgpu_op_buffer_load_format_xyz, -amdgpu_op_v_readfirstlane_b32, +amdgpu_op_v_subrev_f32_e64, +amdgpu_op_s_ff1_i32_b64, +amdgpu_op_s_andn1_saveexec_b64, +amdgpu_op_s_fltbit_i32, +amdgpu_op_v_cvt_i32_f64_e64, +amdgpu_op_v_cmp_ge_u32_e64, +amdgpu_op_v_cmp_ge_u32, +amdgpu_op_s_cmpk_eq_u32, +amdgpu_op_s_cslect_b32, +amdgpu_op_s_add_u32, +amdgpu_op_s_cmpk_lg_i32, +amdgpu_op_s_addk_i32, +amdgpu_op_s_scratch_load_dwordx4, +amdgpu_op_s_lshl1_add_u32, +amdgpu_op_s_bcnt1_i32_b32, +amdgpu_op_tbuffer_load_format_x, +amdgpu_op_flat_store_dword, +amdgpu_op_s_cbranch_scc1, +amdgpu_op_s_mul_hi_u32, +amdgpu_op_v_swap_b32, +amdgpu_op_s_bitset0_b64, +amdgpu_op_v_mad_legacy_f32, +amdgpu_op_buffer_store_format_xyzw, +amdgpu_op_v_sub_u16_e64, +amdgpu_op_s_cbranch_vccz, +amdgpu_op_tbuffer_load_format_xyz, +amdgpu_op_s_cmpk_lt_u32, +amdgpu_op_v_sub_u16, +amdgpu_op_s_lshl3_add_u32, +amdgpu_op_s_cbranch_execnz, +amdgpu_op_s_dcache_memtime, +amdgpu_op_v_mul_i32_i24_e64, +amdgpu_op_v_cmp_class_f32_e64, +amdgpu_op_v_lshrrev_b32, +amdgpu_op_v_cmp_lt_u64_e64, +amdgpu_op_s_dcache_wb_vol, +amdgpu_op_s_set_gpr_idx_mode, +amdgpu_op_v_subb_co_u32_e64, +amdgpu_op_v_readfirstlane_b32_e64, +amdgpu_op_s_bfe_i32, +amdgpu_op_s_sext_i32_i8, +amdgpu_op_v_lshrrev_b16, +amdgpu_op_s_cmpk_gt_i32, +amdgpu_op_v_ashrrev_i32, +amdgpu_op_v_interp_p1_f32, +amdgpu_op_s_barrier, +amdgpu_op_s_buffer_load_dwordx16, +amdgpu_op_s_add_i32, +amdgpu_op_s_addc_u32, amdgpu_op_s_orn2_b64, amdgpu_op_v_cmp_ne_u64, -amdgpu_op_v_mul_lo_u16, -amdgpu_op_v_lshrrev_b32, +amdgpu_op_v_cmpx_t_u64, amdgpu_op_s_movreld_b64, -amdgpu_op_s_mul_i32, +amdgpu_op_v_mad_i64_i32, amdgpu_op_atomic_dec_x2, -amdgpu_op_v_mul_hi_u32_u24_e64, -amdgpu_op_s_bitset0_b32, -amdgpu_op_s_endpgm, -amdgpu_op_v_mac_b32, -amdgpu_op_v_mov_b32, -amdgpu_op_v_cmp_lt_u64, -amdgpu_op_s_sleep, -amdgpu_op_s_rfe_b64, -amdgpu_op_v_lshrrev_b32_e64, -amdgpu_op_s_xor_b64, -amdgpu_op_s_sub_i32, -amdgpu_op_s_cmp_ge_eq_i32, -amdgpu_op_s_cmpk_lg_i32, -amdgpu_op_s_set_gpr_idx_idx, -amdgpu_op_v_add_f16_e64, -amdgpu_op_s_andn2_savexec_b64, -amdgpu_op_v_mad_legacy_f32, -amdgpu_op_s_cmpk_ge_u32, +amdgpu_op_s_andn2_b32, +amdgpu_op_s_waitcnt, +amdgpu_op_buffer_load_dwordx2, +amdgpu_op_s_ff0_i32_b64, +amdgpu_op_v_mul_lo_u16, +amdgpu_op_s_set_gpr_idx_on, +amdgpu_op_s_cmp_eq_i32, +amdgpu_op_v_cmp_eq_u32_e64, +amdgpu_op_v_interp_mov_f32, +amdgpu_op_s_movrels_b32, amdgpu_op_ds_add_u32, -amdgpu_op_v_cvt_i32_f32_e64, -amdgpu_op_s_pack_ll_b32_b16, -amdgpu_op_s_quadmask_b32, -amdgpu_op_s_max_u32, -amdgpu_op_v_subbrev_co_u32, -amdgpu_op_s_buffer_load_dwordx4, -amdgpu_op_s_cmpk_le_u32, -amdgpu_op_v_cvt_rpi_i32_f32, -amdgpu_op_s_load_dwordx2, -amdgpu_op_s_wqm_b64, -amdgpu_op_v_min_i32, -amdgpu_op_s_swappc_b64, -amdgpu_op_s_cmpk_gt_i32, -amdgpu_op_s_brev_b64, -amdgpu_op_s_andn2_b64, -amdgpu_op_v_mul_u32_u24_e64, -amdgpu_op_s_bcnt0_i32_b32, -amdgpu_op_s_nand_b32, -amdgpu_op_v_cmp_gt_u64_e64, -amdgpu_op_s_cmp_le_i32, -amdgpu_op_v_cmp_neq_f16_e64, -amdgpu_op_v_max_i32_e64, -amdgpu_op_s_bitcmp0_b32, -amdgpu_op_v_sub_co_u32, -amdgpu_op_s_and_b32, -amdgpu_op_v_cmp_ne_u32_e64, -amdgpu_op_s_dcache_inv_vol, -amdgpu_op_v_mul_f32_e64, -amdgpu_op_s_mov_b32, -amdgpu_op_s_setpc_b64, -amdgpu_op_s_set_gpr_idx_off, -amdgpu_op_v_min_f32, -amdgpu_op_s_incperflevel, -amdgpu_op_v_min_u32, -amdgpu_op_v_cvt_i32_f32, -amdgpu_op_v_min_u16_e64, -amdgpu_op_v_add_f32, -amdgpu_op_s_bitset0_b64, -amdgpu_op_s_cmp_ge_i32, -amdgpu_op_v_mul_hi_i32_i24, -amdgpu_op_s_setkill, -amdgpu_op_s_scratch_store_dword, -amdgpu_op_v_subrev_u32, -amdgpu_op_s_brev_b32, -amdgpu_op_v_xor_b32_e64, -amdgpu_op_s_buffer_store_dwordx2, -amdgpu_op_v_cmp_le_u64, +amdgpu_op_s_xnor_b64, +amdgpu_op_s_and_b64, +amdgpu_op_v_cvt_f16_f32, +amdgpu_op_s_cbranch_scc0, +amdgpu_op_v_div_scale_f64, amdgpu_op_v_cvt_f16_f32_e64, -amdgpu_op_s_icache_inv, -amdgpu_op_s_cmov_b64, -amdgpu_op_s_fltbit_i32, -amdgpu_op_v_cvt_f32_i32, -amdgpu_op_v_sub_f32_e64, -amdgpu_op_v_cmp_ge_u64_e64, -amdgpu_op_v_mov_b32_e64, -amdgpu_op_v_sub_f16, -amdgpu_op_v_min_i16, -amdgpu_op_s_xor_b32, -amdgpu_op_s_bfe_u64, -amdgpu_op_s_ashr_i32, -amdgpu_op_s_atomic_dec_x2, -amdgpu_op_s_cmp_lt_u32, -amdgpu_op_v_ashrrev_i32, -amdgpu_op_v_add_u16, -amdgpu_op_v_max_u16_e64, -amdgpu_op_s_buffer_load_dwordx8, +amdgpu_op_s_pack_lh_b32_b16, +amdgpu_op_s_cbranch_join, +amdgpu_op_v_div_scale_f32, +amdgpu_op_v_subbrev_co_u32_e64, +amdgpu_op_s_cmp_lg_i32, +amdgpu_op_v_cvt_u32_f32, +amdgpu_op_v_mul_legacy_f32_e64, +amdgpu_op_v_madak_f16_e64, +amdgpu_op_s_ff1_i32_b32, +amdgpu_op_v_subrev_co_u32, +amdgpu_op_s_getreg_b32, +amdgpu_op_v_min_u16_e64, +amdgpu_op_v_max_i32, amdgpu_op_v_add_u32, -amdgpu_op_s_cmp_lg_u64, -amdgpu_op_v_or_b32, -amdgpu_op_v_subb_co_u32, -amdgpu_op_v_madmk_f32_e64, -amdgpu_op_s_xnor_savexec_b64, -amdgpu_op_v_lshlrev_b16, -amdgpu_op_v_cmp_gt_u32, -amdgpu_op_s_cmp_ge_eq_u32, -amdgpu_op_v_subrev_co_u32_e64, -amdgpu_op_v_cmpx_t_u64_e64, -amdgpu_op_s_ff1_i32_b64, -amdgpu_op_v_max_u16, -amdgpu_op_v_madak_f32, -amdgpu_op_store_dword, -amdgpu_op_v_cmp_lt_u32, -amdgpu_op_s_scratch_store_dwordx2, -amdgpu_op_v_cmp_le_u32, -amdgpu_op_v_cvt_f32_f16, -amdgpu_op_s_cbranch_cdbgsys_or_user, -amdgpu_op_v_add_f32_e64, -amdgpu_op_v_pk_mad_i16, -amdgpu_op_s_nor_b32, +amdgpu_op_v_mul_hi_u32_u24_e64, +amdgpu_op_s_cmpk_lt_i32, +amdgpu_op_s_cmpk_eq_i32, +amdgpu_op_v_mac_b32_e64, amdgpu_op_v_madmk_f16_e64, -amdgpu_op_v_subrev_u16, -amdgpu_op_s_or_b32, -amdgpu_op_v_nop, -amdgpu_op_s_movreld_b32, -amdgpu_op_v_or_b32_e64, -amdgpu_op_v_cvt_f64_i32, -amdgpu_op_v_cmp_le_u64_e64, -amdgpu_op_s_andn2_b32, -amdgpu_op_s_dcache_inv, -amdgpu_op_s_wqm_b32, -amdgpu_op_s_cmp_lg_i32, -amdgpu_op_s_scratch_store_dwordx4, -amdgpu_op_s_buffer_store_dword, -amdgpu_op_s_nand_b64, -amdgpu_op_v_cmpx_t_u64, -amdgpu_op_buffer_store_format_x, -amdgpu_op_s_mul_hi_i32, -amdgpu_op_s_ashr_i64, -amdgpu_op_s_cbranch_join, -amdgpu_op_tbuffer_load_format_x, +amdgpu_op_s_min_u32, +amdgpu_op_v_sub_u32, +amdgpu_op_s_absdiff_i32, +amdgpu_op_v_mul_f16, +amdgpu_op_s_store_dword, +amdgpu_op_v_mul_legacy_f32, amdgpu_op_v_add_b32_e64, -amdgpu_op_s_buffer_load_dwordx16, -amdgpu_op_v_mad_f32, -amdgpu_op_v_mul_i32_i24, -amdgpu_op_v_ldexp_f16_e64, -amdgpu_op_tbuffer_store_format_x, -amdgpu_op_s_bcnt0_i32_b64, -amdgpu_op_s_cmp_le_u32, amdgpu_op_s_lshl4_add_u32, -amdgpu_op_v_mul_legacy_f32_e64, -amdgpu_op_s_add_i32, -amdgpu_op_v_lshlrev_b16_e64, -amdgpu_op_v_nop_e64, -amdgpu_op_tbuffer_load_format_xyzw, -amdgpu_op_s_ttracedata, -amdgpu_op_v_cmp_lt_u64_e64, -amdgpu_op_s_store_dword, -amdgpu_op_s_setprio, -amdgpu_op_s_fltbit_i32_i64, -amdgpu_op_s_orn2_savexec_b64, -amdgpu_op_v_add_co_u32, -amdgpu_op_s_bfe_u32, -amdgpu_op_v_mul_i32_i24_e64, -amdgpu_op_s_or_b64, -amdgpu_op_buffer_load_dwordx4, -amdgpu_op_v_cvt_off_f32_i4_e64, -amdgpu_op_s_bitset1_b64, -amdgpu_op_s_cmp_gt_u32, -amdgpu_op_s_cbranch_vccz, -amdgpu_op_s_store_dwordx4, -amdgpu_op_s_orn2_b32, -amdgpu_op_s_bcnt1_i32_b32, -amdgpu_op_v_madak_f16_e64, -amdgpu_op_s_and_b64, +amdgpu_op_v_mul_u32_u24, +amdgpu_op_v_mac_f16_e64, +amdgpu_op_s_xnor_b32, +amdgpu_op_s_bitcmp0_b32, +amdgpu_op_s_subb_u32, +amdgpu_op_s_buffer_load_dword, +amdgpu_op_s_cmpk_ge_u32, +amdgpu_op_v_cmp_eq_u32, +amdgpu_op_s_dcache_memrealtime, +amdgpu_op_s_cmp_lt_i32, +amdgpu_op_s_scratch_load_dword, +amdgpu_op_v_xno2_b32, +amdgpu_op_ds_read_b32, amdgpu_op_s_buffer_store_dwordx4, -amdgpu_op_v_cmp_gt_u64, -amdgpu_op_v_madmk_f16, +amdgpu_op_s_quadmask_b32, +amdgpu_op_v_subb_co_u32, +amdgpu_op_v_subrev_u32_e64, +amdgpu_op_v_cmp_neq_f16_e64, +amdgpu_op_v_mul_lo_u32, +amdgpu_op_v_cmp_ne_u32_e64, amdgpu_op_v_cmp_ne_u32, -amdgpu_op_v_cvt_f32_u32_e64, -amdgpu_op_v_cvt_u32_f32_e64, -amdgpu_op_v_cmp_eq_u32, -amdgpu_op_s_cmp_lg_u32, -amdgpu_op_s_setvkip, -amdgpu_op_s_cslect_b64, -amdgpu_op_s_scratch_load_dwordx4, -amdgpu_op_v_lshrrev_b16, -amdgpu_op_s_cmp_gt_i32, -amdgpu_op_s_call_b64, -amdgpu_op_v_add_b32, -amdgpu_op_s_xnor_b32, -amdgpu_op_s_lshl1_add_u32, -amdgpu_op_v_cvt_rpi_i32_f32_e64, -amdgpu_op_s_trap, -amdgpu_op_s_lshr_b32, -amdgpu_op_v_madak_f16, -amdgpu_op_tbuffer_store_format_xyzw, -amdgpu_op_s_decperflevel, -amdgpu_op_s_andn1_saveexec_b64, -amdgpu_op_s_bfe_i32, -amdgpu_op_s_cmp_eq_u64, -amdgpu_op_v_sub_u16, -amdgpu_op_v_lshlrev_b64, -amdgpu_op_v_interp_mov_f32, -amdgpu_op_s_andn2_wrexec_b64, -amdgpu_op_s_dcache_memtime, -amdgpu_op_s_cbranch_cdbgsys_and_user, -amdgpu_op_s_cmpk_ge_i32, -amdgpu_op_v_max_f16_e64, -amdgpu_op_v_mac_f16, +amdgpu_op_s_sext_i32_i16, +amdgpu_op_s_cmp_le_u32, +amdgpu_op_s_max_u32, diff --git a/common/h/dyn_regs.h b/common/h/dyn_regs.h index a34584ca48..f4e1cfe06f 100644 --- a/common/h/dyn_regs.h +++ b/common/h/dyn_regs.h @@ -50,16 +50,16 @@ namespace Dyninst //0xff000000 is used to encode architecture typedef enum { - Arch_none = 0x00000000, - Arch_x86 = 0x14000000, - Arch_x86_64 = 0x18000000, - Arch_ppc32 = 0x24000000, - Arch_ppc64 = 0x28000000, - Arch_aarch32 = 0x44000000, //for later use - Arch_aarch64 = 0x48000000, - Arch_amdgpu_vega = 0x84000000, - Arch_cuda = 0x88000000, - Arch_amdgpu_rdna = 0x8c000000, //future support for rdna + Arch_none = 0x00000000, + Arch_x86 = 0x14000000, + Arch_x86_64 = 0x18000000, + Arch_ppc32 = 0x24000000, + Arch_ppc64 = 0x28000000, + Arch_aarch32 = 0x44000000, //for later use + Arch_aarch64 = 0x48000000, + Arch_amdgpu_vega = 0x84000000, + Arch_cuda = 0x88000000, + Arch_amdgpu_cdna2 = 0x94000000, //future support for cdna2 Arch_intelGen9 = 0xb6000000 //same as machine no. retrevied from eu-readelf } Architecture; @@ -70,7 +70,7 @@ namespace Dyninst friend struct ::Dyninst::x86OperandParser; friend struct ::Dyninst::ppcOperandParser; friend struct ::Dyninst::aarch64OperandParser; - private: + private: signed int reg; typedef std::map NameMap; @@ -80,7 +80,7 @@ namespace Dyninst // reg_idx is set to the index/id of the register for future lookup // offset is set to the byte offset from where the register value starts, that is, sub register access ( or register access in a register vector) void getAMDGPUROSERegister(int ®_class, int ®_idx, int &offset); - public: + public: MachRegister(); explicit MachRegister(signed int r); @@ -98,6 +98,8 @@ namespace Dyninst bool operator==(const MachRegister &a) const; operator signed int() const; signed int val() const; + + // Return the category of the MachRegister unsigned int regClass() const; static MachRegister getPC(Dyninst::Architecture arch); @@ -107,15 +109,15 @@ namespace Dyninst static MachRegister getSyscallNumberReg(Dyninst::Architecture arch); static MachRegister getSyscallNumberOReg(Dyninst::Architecture arch); static MachRegister getSyscallReturnValueReg(Dyninst::Architecture arch); - static MachRegister getZeroFlag(Dyninst::Architecture arch); + static MachRegister getZeroFlag(Dyninst::Architecture arch); bool isPC() const; bool isFramePointer() const; bool isStackPointer() const; bool isSyscallNumberReg() const; bool isSyscallReturnValueReg() const; - bool isFlag() const; - bool isZeroFlag() const; + bool isFlag() const; + bool isZeroFlag() const; void getROSERegister(int &c, int &n, int &p); @@ -124,1891 +126,2069 @@ namespace Dyninst int getDwarfEnc() const; static MachRegister getArchReg(unsigned int regNum, Dyninst::Architecture arch); - }; - - /** - * DEF_REGISTER will define its first parameter as the name of the object - * it's declaring, and 'i' as the integer value representing that object. - * As an example, the name of a register may be - * x86::EAX - * with that register having a value of - * x86::iEAX - * - * The value is mostly useful in the 'case' part switch statements. - **/ + }; + + /** + * DEF_REGISTER will define its first parameter as the name of the object + * it's declaring, and 'i' as the integer value representing that object. + * As an example, the name of a register may be + * x86::EAX + * with that register having a value of + * x86::iEAX + * + * The value is mostly useful in the 'case' part switch statements. + **/ #if defined(DYN_DEFINE_REGS) - //DYN_DEFINE_REGS Should only be defined in libcommon. - //We want one definition, which will be in libcommon, and declarations - //for everyone else. - // - //I wanted these to be const MachRegister objects, but that changes the - //linker scope. Instead they're non-const. Every accessor function is - //const anyways, so we'll just close our eyes and pretend they're declared - //const. + //DYN_DEFINE_REGS Should only be defined in libcommon. + //We want one definition, which will be in libcommon, and declarations + //for everyone else. + // + //I wanted these to be const MachRegister objects, but that changes the + //linker scope. Instead they're non-const. Every accessor function is + //const anyways, so we'll just close our eyes and pretend they're declared + //const. #define DEF_REGISTER(name, value, Arch) \ - const signed int i##name = (value); \ - COMMON_EXPORT MachRegister name(i##name, Arch "::" #name) + const signed int i##name = (value); \ + COMMON_EXPORT MachRegister name(i##name, Arch "::" #name) #else #define DEF_REGISTER(name, value, Arch) \ - const signed int i##name = (value); \ - COMMON_EXPORT extern MachRegister name + const signed int i##name = (value); \ + COMMON_EXPORT extern MachRegister name #endif - /** - * For interpreting constants: - * Lowest 16 bits (0x000000ff) is base register ID - * Next 16 bits (0x0000ff00) is the aliasing and subrange ID- - * used on x86/x86_64 to distinguish between things like EAX and AH - * Next 16 bits (0x00ff0000) are the register category, GPR/FPR/MMX/... - * Top 16 bits (0xff000000) are the architecture. - * - * These values/layout are not guaranteed to remain the same as part of the - * public interface, and may change. - **/ - - //Abstract registers used for stackwalking - DEF_REGISTER(InvalidReg, 0 | Arch_none, "abstract"); - DEF_REGISTER(FrameBase, 1 | Arch_none, "abstract"); - DEF_REGISTER(ReturnAddr, 2 | Arch_none, "abstract"); - DEF_REGISTER(StackTop, 3 | Arch_none, "abstract"); - // DWARF-ism; the CFA is the value of the stack pointer in the previous frame - DEF_REGISTER(CFA, 4 | Arch_none, "abstract"); - - namespace x86 - { - const signed int L_REG = 0x00000100; //8-bit, first byte - const signed int H_REG = 0x00000200; //8-bit, second byte - const signed int W_REG = 0x00000300; //16-bit, first word - // MachRegister::getBaseRegister clears the bit field for size, - // so the full register size has to be 0 - const signed int FULL = 0x00000000; //32 bits - const signed int OCT = 0x00000600; //128 bits - const signed int FPDBL = 0x00000700; // 80 bits - const signed int BIT = 0x00000800; // 1 bit - const signed int YMMS = 0x00000900; // YMM are 256 bits - const signed int ZMMS = 0x00000A00; // ZMM are 512 bits - const signed int GPR = 0x00010000; - const signed int SEG = 0x00020000; - const signed int FLAG = 0x00030000; - const signed int MISC = 0x00040000; - const signed int KMASK = 0x00050000; - const signed int XMM = 0x00060000; - const signed int YMM = 0x00070000; - const signed int ZMM = 0x00080000; - const signed int MMX = 0x00090000; - const signed int CTL = 0x000A0000; - const signed int DBG = 0x000B0000; - const signed int TST = 0x000C0000; - const signed int BASEA = 0x0; - const signed int BASEC = 0x1; - const signed int BASED = 0x2; - const signed int BASEB = 0x3; - const signed int BASESP = 0x4; - const signed int BASEBP = 0x5; - const signed int BASESI = 0x6; - const signed int BASEDI = 0x7; - const signed int FLAGS = 0x0; - - const signed int CF = 0x0; - const signed int FLAG1 = 0x1; - const signed int PF = 0x2; - const signed int FLAG3 = 0x3; - const signed int AF = 0x4; - const signed int FLAG5 = 0x5; - const signed int ZF = 0x6; - const signed int SF = 0x7; - const signed int TF = 0x8; - const signed int IF = 0x9; - const signed int DF = 0xa; - const signed int OF = 0xb; - const signed int FLAGC = 0xc; - const signed int FLAGD = 0xd; - const signed int NT = 0xe; - const signed int FLAGF = 0xf; - const signed int RF = 0x10; - - DEF_REGISTER(eax, BASEA | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(ecx, BASEC | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(edx, BASED | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(ebx, BASEB | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(esp, BASESP | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(ebp, BASEBP | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(esi, BASESI | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(edi, BASEDI | FULL | GPR | Arch_x86, "x86"); - DEF_REGISTER(ah, BASEA | H_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(al, BASEA | L_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(ax, BASEA | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(ch, BASEC | H_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(cl, BASEC | L_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(cx, BASEC | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(dh, BASED | H_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(dl, BASED | L_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(dx, BASED | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(bh, BASEB | H_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(bl, BASEB | L_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(bx, BASEB | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(sp, BASESP | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(bp, BASEBP | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(si, BASESI | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(di, BASEDI | W_REG | GPR | Arch_x86, "x86"); - DEF_REGISTER(eip, 0x10 | FULL | Arch_x86, "x86"); - DEF_REGISTER(flags, FLAGS | FULL | FLAG | Arch_x86, "x86"); - DEF_REGISTER(cf, CF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(flag1, FLAG1 | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(pf, PF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(flag3, FLAG3 | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(af, AF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(flag5, FLAG5 | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(zf, ZF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(sf, SF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(tf, TF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(if_, IF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(df, DF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(of, OF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(flagc, FLAGC | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(flagd, FLAGD | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(nt_, NT | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(flagf, FLAGF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(rf, RF | BIT | FLAG | Arch_x86, "x86"); - DEF_REGISTER(ds, 0x0 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER(es, 0x1 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER(fs, 0x2 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER(gs, 0x3 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER(cs, 0x4 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER(ss, 0x5 | W_REG | SEG | Arch_x86, "x86"); - DEF_REGISTER(oeax, 0x0 | FULL | MISC | Arch_x86, "x86"); - DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86, "x86"); - DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86, "x86"); - - DEF_REGISTER(k0, 0x00 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k1, 0x01 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k2, 0x02 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k3, 0x03 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k4, 0x04 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k5, 0x05 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k6, 0x06 | OCT | KMASK| Arch_x86, "x86"); - DEF_REGISTER(k7, 0x07 | OCT | KMASK| Arch_x86, "x86"); - - DEF_REGISTER(xmm0, 0x00 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm1, 0x01 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm2, 0x02 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm3, 0x03 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm4, 0x04 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm5, 0x05 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm6, 0x06 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm7, 0x07 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm8, 0x08 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm9, 0x09 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm10, 0x0A | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm11, 0x0B | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm12, 0x0C | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm13, 0x0D | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm14, 0x0E | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm15, 0x0F | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm16, 0x10 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm17, 0x11 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm18, 0x12 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm19, 0x13 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm20, 0x14 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm21, 0x15 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm22, 0x16 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm23, 0x17 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm24, 0x18 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm25, 0x19 | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm26, 0x1A | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm27, 0x1B | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm28, 0x1C | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm29, 0x1D | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm30, 0x1E | OCT | XMM | Arch_x86, "x86"); - DEF_REGISTER(xmm31, 0x1F | OCT | XMM | Arch_x86, "x86"); - - - DEF_REGISTER(ymm0, 0x00 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm1, 0x01 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm2, 0x02 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm3, 0x03 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm4, 0x04 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm5, 0x05 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm6, 0x06 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm7, 0x07 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm8, 0x08 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm9, 0x09 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm10, 0x0A | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm11, 0x0B | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm12, 0x0C | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm13, 0x0D | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm14, 0x0E | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm15, 0x0F | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm16, 0x10 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm17, 0x11 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm18, 0x12 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm19, 0x13 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm20, 0x14 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm21, 0x15 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm22, 0x16 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm23, 0x17 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm24, 0x18 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm25, 0x19 | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm26, 0x1A | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm27, 0x1B | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm28, 0x1C | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm29, 0x1D | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm30, 0x1E | YMMS | YMM | Arch_x86, "x86"); - DEF_REGISTER(ymm31, 0x1F | YMMS | YMM | Arch_x86, "x86"); - - DEF_REGISTER(zmm0, 0x00 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm1, 0x01 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm2, 0x02 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm3, 0x03 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm4, 0x04 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm5, 0x05 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm6, 0x06 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm7, 0x07 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm8, 0x08 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm9, 0x09 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm10, 0x0A | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm11, 0x0B | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm12, 0x0C | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm13, 0x0D | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm14, 0x0E | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm15, 0x0F | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm16, 0x10 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm17, 0x11 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm18, 0x12 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm19, 0x13 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm20, 0x14 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm21, 0x15 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm22, 0x16 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm23, 0x17 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm24, 0x18 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm25, 0x19 | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm26, 0x1A | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm27, 0x1B | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm28, 0x1C | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm29, 0x1D | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm30, 0x1E | ZMMS | ZMM | Arch_x86, "x86"); - DEF_REGISTER(zmm31, 0x1F | ZMMS | ZMM | Arch_x86, "x86"); - - DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm3, 0x3 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm4, 0x4 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm5, 0x5 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm6, 0x6 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(mm7, 0x7 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(cr0, 0x0 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr1, 0x1 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr2, 0x2 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr3, 0x3 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr4, 0x4 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr5, 0x5 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr6, 0x6 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(cr7, 0x7 | FULL | CTL | Arch_x86, "x86"); - DEF_REGISTER(dr0, 0x0 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr1, 0x1 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr2, 0x2 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr3, 0x3 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr4, 0x4 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr5, 0x5 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr6, 0x6 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(dr7, 0x7 | FULL | DBG | Arch_x86, "x86"); - DEF_REGISTER(tr0, 0x0 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr1, 0x1 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr2, 0x2 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr3, 0x3 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr4, 0x4 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr5, 0x5 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr6, 0x6 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(tr7, 0x7 | FULL | TST | Arch_x86, "x86"); - DEF_REGISTER(st0, 0x0 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st1, 0x1 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st2, 0x2 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st3, 0x3 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st4, 0x4 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st5, 0x5 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st6, 0x6 | FPDBL | MMX | Arch_x86, "x86"); - DEF_REGISTER(st7, 0x7 | FPDBL | MMX | Arch_x86, "x86"); - } - namespace x86_64 - { - const signed int L_REG = 0x00000100; //8-bit, first byte - const signed int H_REG = 0x00000200; //8-bit, second byte - const signed int W_REG = 0x00000300; //16 bit, first work - const signed int D_REG = 0x00000F00; //32 bit, first double word - // MachRegister::getBaseRegister clears the bit field for size, - // so the full register size has to be 0 - const signed int FULL = 0x00000000; //64 bits - const signed int OCT = 0x00000600; //128 bits - const signed int FPDBL = 0x00000700; // 80 bits - const signed int BIT = 0x00000800; // 1 bit - const signed int YMMS = 0x00000900; // YMM are 256 bits - const signed int ZMMS = 0x00000A00; // ZMM are 512 bits - const signed int GPR = 0x00010000; - const signed int SEG = 0x00020000; - const signed int FLAG = 0x00030000; - const signed int MISC = 0x00040000; - const signed int KMASK = 0x00050000; - const signed int XMM = 0x00060000; - const signed int YMM = 0x00070000; - const signed int ZMM = 0x00080000; - const signed int MMX = 0x00090000; - const signed int CTL = 0x000A0000; - const signed int DBG = 0x000B0000; - const signed int TST = 0x000C0000; - const signed int FLAGS = 0x00000000; - const signed int BASEA = 0x0; - const signed int BASEC = 0x1; - const signed int BASED = 0x2; - const signed int BASEB = 0x3; - const signed int BASESP = 0x4; - const signed int BASEBP = 0x5; - const signed int BASESI = 0x6; - const signed int BASEDI = 0x7; - const signed int BASE8 = 0x8; - const signed int BASE9 = 0x9; - const signed int BASE10 = 0xa; - const signed int BASE11 = 0xb; - const signed int BASE12 = 0xc; - const signed int BASE13 = 0xd; - const signed int BASE14 = 0xe; - const signed int BASE15 = 0xf; - - const signed int CF = x86::CF; - const signed int PF = x86::PF; - const signed int AF = x86::AF; - const signed int ZF = x86::ZF; - const signed int SF = x86::SF; - const signed int TF = x86::TF; - const signed int IF = x86::IF; - const signed int DF = x86::DF; - const signed int OF = x86::OF; - const signed int NT = x86::NT; - const signed int RF = x86::RF; - - DEF_REGISTER(rax, BASEA | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rcx, BASEC | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rdx, BASED | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rbx, BASEB | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rsp, BASESP | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rbp, BASEBP | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rsi, BASESI | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rdi, BASEDI | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r8, BASE8 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r9, BASE9 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r10, BASE10 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r11, BASE11 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r12, BASE12 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r13, BASE13 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r14, BASE14 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r15, BASE15 | FULL | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(ah, BASEA | H_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(al, BASEA | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(ax, BASEA | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(eax, BASEA | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(ch, BASEC | H_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(cl, BASEC | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(cx, BASEC | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(ecx, BASEC | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(dh, BASED | H_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(dl, BASED | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(dx, BASED | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(edx, BASED | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(bh, BASEB | H_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(bl, BASEB | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(bx, BASEB | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(ebx, BASEB | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(spl, BASESP | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(sp, BASESP | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(esp, BASESP | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(bpl, BASEBP | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(bp, BASEBP | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(ebp, BASEBP | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(dil, BASEDI | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(di, BASEDI | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(edi, BASEDI | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(sil, BASESI | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(si, BASESI | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(esi, BASESI | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r8b, BASE8 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r8w, BASE8 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r8d, BASE8 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r9b, BASE9 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r9w, BASE9 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r9d, BASE9 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r10b, BASE10 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r10w, BASE10 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r10d, BASE10 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r11b, BASE11 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r11w, BASE11 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r11d, BASE11 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r12b, BASE12 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r12w, BASE12 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r12d, BASE12 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r13b, BASE13 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r13w, BASE13 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r13d, BASE13 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r14b, BASE14 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r14w, BASE14 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r14d, BASE14 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r15b, BASE15 | L_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r15w, BASE15 | W_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(r15d, BASE15 | D_REG | GPR | Arch_x86_64, "x86_64"); - DEF_REGISTER(rip, 0x10 | FULL | Arch_x86_64, "x86_64"); - DEF_REGISTER(eip, 0x10 | D_REG | Arch_x86_64, "x86_64"); - DEF_REGISTER(flags, FLAGS | FULL | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(cf, CF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(pf, PF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(af, AF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(zf, ZF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(sf, SF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(tf, TF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(if_, IF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(df, DF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(of, OF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(nt_, NT | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(rf, RF | BIT | FLAG | Arch_x86_64, "x86_64"); - DEF_REGISTER(ds, 0x0 | FULL | SEG | Arch_x86_64, "x86_64"); - DEF_REGISTER(es, 0x1 | FULL | SEG | Arch_x86_64, "x86_64"); - DEF_REGISTER(fs, 0x2 | FULL | SEG | Arch_x86_64, "x86_64"); - DEF_REGISTER(gs, 0x3 | FULL | SEG | Arch_x86_64, "x86_64"); - DEF_REGISTER(cs, 0x4 | FULL | SEG | Arch_x86_64, "x86_64"); - DEF_REGISTER(ss, 0x5 | FULL | SEG | Arch_x86_64, "x86_64"); - DEF_REGISTER(orax, 0x0 | FULL | MISC | Arch_x86_64, "x86_64"); - DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86_64, "x86_64"); - DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86_64, "x86_64"); - DEF_REGISTER(k0, 0x00 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k1, 0x01 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k2, 0x02 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k3, 0x03 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k4, 0x04 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k5, 0x05 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k6, 0x06 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(k7, 0x07 | OCT | KMASK| Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm0, 0x00 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm1, 0x01 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm2, 0x02 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm3, 0x03 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm4, 0x04 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm5, 0x05 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm6, 0x06 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm7, 0x07 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm8, 0x08 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm9, 0x09 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm10, 0x0A | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm11, 0x0B | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm12, 0x0C | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm13, 0x0D | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm14, 0x0E | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm15, 0x0F | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm16, 0x10 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm17, 0x11 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm18, 0x12 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm19, 0x13 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm20, 0x14 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm21, 0x15 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm22, 0x16 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm23, 0x17 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm24, 0x18 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm25, 0x19 | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm26, 0x1A | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm27, 0x1B | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm28, 0x1C | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm29, 0x1D | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm30, 0x1E | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(xmm31, 0x1F | OCT | XMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm0, 0x00 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm1, 0x01 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm2, 0x02 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm3, 0x03 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm4, 0x04 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm5, 0x05 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm6, 0x06 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm7, 0x07 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm8, 0x08 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm9, 0x09 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm10, 0x0A | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm11, 0x0B | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm12, 0x0C | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm13, 0x0D | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm14, 0x0E | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm15, 0x0F | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm16, 0x10 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm17, 0x11 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm18, 0x12 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm19, 0x13 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm20, 0x14 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm21, 0x15 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm22, 0x16 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm23, 0x17 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm24, 0x18 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm25, 0x19 | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm26, 0x1A | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm27, 0x1B | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm28, 0x1C | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm29, 0x1D | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm30, 0x1E | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(ymm31, 0x1F | YMMS | YMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm0, 0x00 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm1, 0x01 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm2, 0x02 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm3, 0x03 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm4, 0x04 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm5, 0x05 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm6, 0x06 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm7, 0x07 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm8, 0x08 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm9, 0x09 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm10, 0x0A | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm11, 0x0B | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm12, 0x0C | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm13, 0x0D | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm14, 0x0E | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm15, 0x0F | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm16, 0x10 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm17, 0x11 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm18, 0x12 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm19, 0x13 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm20, 0x14 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm21, 0x15 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm22, 0x16 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm23, 0x17 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm24, 0x18 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm25, 0x19 | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm26, 0x1A | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm27, 0x1B | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm28, 0x1C | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm29, 0x1D | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm30, 0x1E | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(zmm31, 0x1F | ZMMS | ZMM | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm3, 0x3 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm4, 0x4 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm5, 0x5 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm6, 0x6 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(mm7, 0x7 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr0, 0x0 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr1, 0x1 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr2, 0x2 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr3, 0x3 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr4, 0x4 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr5, 0x5 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr6, 0x6 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(cr7, 0x7 | FULL | CTL | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr0, 0x0 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr1, 0x1 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr2, 0x2 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr3, 0x3 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr4, 0x4 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr5, 0x5 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr6, 0x6 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(dr7, 0x7 | FULL | DBG | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr0, 0x0 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr1, 0x1 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr2, 0x2 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr3, 0x3 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr4, 0x4 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr5, 0x5 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr6, 0x6 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(tr7, 0x7 | FULL | TST | Arch_x86_64, "x86_64"); - DEF_REGISTER(st0, 0x0 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st1, 0x1 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st2, 0x2 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st3, 0x3 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st4, 0x4 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st5, 0x5 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st6, 0x6 | FPDBL | MMX | Arch_x86_64, "x86_64"); - DEF_REGISTER(st7, 0x7 | FPDBL | MMX | Arch_x86_64, "x86_64"); - } - namespace ppc32 { - const signed int GPR = 0x00010000; - const signed int FPR = 0x00020000; - const signed int FSR = 0x00040000; - const signed int SPR = 0x00080000; - - DEF_REGISTER(r0, 0 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r1, 1 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r2, 2 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r3, 3 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r4, 4 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r5, 5 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r6, 6 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r7, 7 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r8, 8 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r9, 9 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r10, 10 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r11, 11 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r12, 12 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r13, 13 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r14, 14 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r15, 15 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r16, 16 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r17, 17 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r18, 18 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r19, 19 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r20, 20 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r21, 21 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r22, 22 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r23, 23 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r24, 24 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r25, 25 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r26, 26 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r27, 27 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r28, 28 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r29, 29 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r30, 30 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(r31, 31 | GPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr0, 0 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr1, 1 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr2, 2 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr3, 3 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr4, 4 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr5, 5 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr6, 6 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr7, 7 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr8, 8 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr9, 9 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr10, 10 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr11, 11 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr12, 12 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr13, 13 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr14, 14 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr15, 15 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr16, 16 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr17, 17 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr18, 18 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr19, 19 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr20, 20 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr21, 21 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr22, 22 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr23, 23 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr24, 24 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr25, 25 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr26, 26 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr27, 27 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr28, 28 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr29, 29 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr30, 30 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpr31, 31 | FPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr0, 0 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr1, 1 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr2, 2 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr3, 3 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr4, 4 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr5, 5 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr6, 6 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr7, 7 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr8, 8 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr9, 9 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr10, 10 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr11, 11 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr12, 12 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr13, 13 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr14, 14 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr15, 15 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr16, 16 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr17, 17 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr18, 18 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr19, 19 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr20, 20 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr21, 21 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr22, 22 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr23, 23 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr24, 24 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr25, 25 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr26, 26 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr27, 27 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr28, 28 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr29, 29 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr30, 30 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fsr31, 31 | FSR | Arch_ppc32, "ppc32"); - DEF_REGISTER(mq, 0 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(xer, 1 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(lr, 8 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ctr, 9 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(amr, 13 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dscr, 17 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dsisr, 18 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dar, 19 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dec, 22 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sdr1, 25 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(srr0, 26 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(srr1, 27 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cfar, 28 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(amr_pri, 29 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(pid, 48 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(gdecar, 53 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(decar, 54 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(mcivpr, 55 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(lper, 56 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(lperu, 57 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(csrr0, 58 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(csrr1, 59 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(gtsrwr, 60 | SPR | Arch_ppc32, "ppc32"); -// DEF_REGISTER(iamr, 61 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(esr, 62 | SPR | Arch_ppc32, "ppc32"); -// DEF_REGISTER(ivpr, 66 | SPR | Arch_ppc32, "ppc32"); - - DEF_REGISTER(vrsave, 256 | SPR | Arch_ppc32, "ppc32"); - - - DEF_REGISTER(sprg0, 272 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg1, 273 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg2, 274 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg3, 275 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg4, 276 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg5, 277 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg6, 278 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg7, 279 | SPR | Arch_ppc32, "ppc32"); - - DEF_REGISTER(sprg3_ro, 259 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg4_ro, 260 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg5_ro, 261 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg6_ro, 262 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(sprg7_ro, 263 | SPR | Arch_ppc32, "ppc32"); - - - DEF_REGISTER(ear, 282 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(tbl_wo, 284 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(tbl_ro, 268 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(tbu_wo, 285 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(tbu_ro, 269 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(pvr, 287 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(pc, 600 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw, 601 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(msr, 610 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ivpr, 611 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ivor8, 612 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg0, 613 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg1, 614 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg2, 615 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg3, 616 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg4, 617 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg5, 618 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg6, 619 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(seg7, 620 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr0, 621 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr1, 622 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr2, 623 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr3, 624 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr4, 625 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr5, 626 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr6, 627 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr7, 628 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr, 629 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(or3, 630 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(trap, 631 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr0l, 700 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr0g, 701 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr0e, 702 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr0s, 703 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr1l, 704 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr1g, 705 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr1e, 706 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr1s, 707 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr2l, 708 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr2g, 709 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr2e, 710 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr2s, 711 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr3l, 712 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr3g, 713 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr3e, 714 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr3s, 715 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr4l, 716 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr4g, 717 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr4e, 718 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr4s, 719 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr5l, 720 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr5g, 721 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr5e, 722 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr5s, 723 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr6l, 724 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr6g, 725 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr6e, 726 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr6s, 727 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr7l, 728 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr7g, 729 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr7e, 730 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(cr7s, 731 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ppr, 896 | SPR | Arch_ppc32, "ppc32"); - DEF_REGISTER(ppr32, 898 | SPR | Arch_ppc32, "ppc32"); - - - } - namespace ppc64 { - const signed int GPR = 0x00010000; - const signed int FPR = 0x00020000; - const signed int FSR = 0x00040000; - const signed int SPR = 0x00080000; - const signed int VSR = 0x00000000; - - DEF_REGISTER(r0, 0 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r1, 1 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r2, 2 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r3, 3 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r4, 4 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r5, 5 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r6, 6 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r7, 7 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r8, 8 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r9, 9 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r10, 10 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r11, 11 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r12, 12 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r13, 13 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r14, 14 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r15, 15 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r16, 16 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r17, 17 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r18, 18 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r19, 19 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r20, 20 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r21, 21 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r22, 22 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r23, 23 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r24, 24 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r25, 25 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r26, 26 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r27, 27 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r28, 28 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r29, 29 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r30, 30 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(r31, 31 | GPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr0, 0 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr1, 1 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr2, 2 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr3, 3 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr4, 4 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr5, 5 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr6, 6 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr7, 7 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr8, 8 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr9, 9 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr10, 10 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr11, 11 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr12, 12 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr13, 13 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr14, 14 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr15, 15 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr16, 16 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr17, 17 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr18, 18 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr19, 19 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr20, 20 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr21, 21 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr22, 22 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr23, 23 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr24, 24 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr25, 25 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr26, 26 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr27, 27 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr28, 28 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr29, 29 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr30, 30 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpr31, 31 | FPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr0, 0 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr1, 1 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr2, 2 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr3, 3 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr4, 4 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr5, 5 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr6, 6 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr7, 7 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr8, 8 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr9, 9 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr10, 10 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr11, 11 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr12, 12 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr13, 13 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr14, 14 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr15, 15 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr16, 16 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr17, 17 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr18, 18 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr19, 19 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr20, 20 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr21, 21 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr22, 22 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr23, 23 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr24, 24 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr25, 25 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr26, 26 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr27, 27 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr28, 28 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr29, 29 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr30, 30 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fsr31, 31 | FSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(mq, 0 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(xer, 1 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(lr, 8 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ctr, 9 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dsisr, 18 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dar, 19 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dec, 22 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sdr1, 25 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(srr0, 26 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(srr1, 27 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vrsave, 256 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg0, 272 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg1, 273 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg2, 274 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg3, 275 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg4, 276 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg5, 277 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg6, 278 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg7, 279 | SPR | Arch_ppc64, "ppc64"); - - DEF_REGISTER(sprg3_ro, 259 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg4_ro, 260 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg5_ro, 261 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg6_ro, 262 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(sprg7_ro, 263 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ear, 282 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(tbl_wo, 284 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(tbl_ro, 268 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(tbu_wo, 285 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(tbu_ro, 269 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(pvr, 287 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(pc, 600 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw, 601 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(msr, 610 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ivpr, 611 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ivor8, 612 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg0, 613 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg1, 614 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg2, 615 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg3, 616 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg4, 617 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg5, 618 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg6, 619 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(seg7, 620 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr0, 621 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr1, 622 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr2, 623 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr3, 624 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr4, 625 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr5, 626 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr6, 627 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr7, 628 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr, 629 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(or3, 630 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(trap, 631 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr0l, 700 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr0g, 701 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr0e, 702 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr0s, 703 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr1l, 704 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr1g, 705 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr1e, 706 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr1s, 707 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr2l, 708 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr2g, 709 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr2e, 710 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr2s, 711 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr3l, 712 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr3g, 713 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr3e, 714 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr3s, 715 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr4l, 716 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr4g, 717 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr4e, 718 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr4s, 719 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr5l, 720 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr5g, 721 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr5e, 722 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr5s, 723 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr6l, 724 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr6g, 725 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr6e, 726 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr6s, 727 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr7l, 728 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr7g, 729 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr7e, 730 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(cr7s, 731 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ppr, 896 | SPR | Arch_ppc64, "ppc64"); - DEF_REGISTER(ppr32, 898 | SPR | Arch_ppc64, "ppc64"); - - DEF_REGISTER(vsr0, 0 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr1, 1 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr2, 2 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr3, 3 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr4, 4 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr5, 5 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr6, 6 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr7, 7 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr8, 8 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr9, 9 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr10, 10 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr11, 11 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr12, 12 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr13, 13 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr14, 14 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr15, 15 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr16, 16 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr17, 17 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr18, 18 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr19, 19 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr20, 20 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr21, 21 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr22, 22 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr23, 23 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr24, 24 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr25, 25 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr26, 26 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr27, 27 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr28, 28 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr29, 29 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr30, 30 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr31, 31 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr32, 32 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr33, 33 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr34, 34 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr35, 35 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr36, 36 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr37, 37 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr38, 38 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr39, 39 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr40, 40 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr41, 41 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr42, 42 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr43, 43 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr44, 44 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr45, 45 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr46, 46 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr47, 47 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr48, 48 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr49, 49 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr50, 50 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr51, 51 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr52, 52 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr53, 53 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr54, 54 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr55, 55 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr56, 56 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr57, 57 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr58, 58 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr59, 59 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr60, 60 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr61, 61 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr62, 62 | VSR | Arch_ppc64, "ppc64"); - DEF_REGISTER(vsr63, 63 | VSR | Arch_ppc64, "ppc64"); - - - - - } - - namespace aarch64{ - //0xff000000 0x00ff0000 0x0000ff00 0x000000ff - //arch reg cat:GPR alias&subrange reg ID - const signed int GPR = 0x00010000; - const signed int FPR = 0x00020000; - const signed int FLAG = 0x00030000; - const signed int FSR = 0x00040000; - const signed int SPR = 0x00080000; - const signed int SYSREG = 0x00100000; - - const signed int BIT = 0x00008000; - const signed int B_REG = 0x00000100; //8bit byte reg - const signed int W_REG = 0x00000300; //16bit half-wor reg - const signed int D_REG = 0x00000f00; //32bit single-word reg - const signed int FULL = 0x00000000; //64bit double-word reg - const signed int Q_REG = 0x00000400; //128bit reg - const signed int HQ_REG = 0x00000500; //second 64bit in 128bit reg - - //31 GPRs, double word long registers - // (name regID| alias | cat | arch arch ) - DEF_REGISTER(x0, 0 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w0, 0 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x1, 1 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w1, 1 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x2, 2 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w2, 2 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x3, 3 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w3, 3 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x4, 4 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w4, 4 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x5, 5 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w5, 5 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x6, 6 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w6, 6 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x7, 7 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w7, 7 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x8, 8 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w8, 8 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x9, 9 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w9, 9 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x10, 10 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w10, 10 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x11, 11 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w11, 11 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x12, 12 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w12, 12 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x13, 13 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w13, 13 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x14, 14 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w14, 14 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x15, 15 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w15, 15 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x16, 16 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w16, 16 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x17, 17 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w17, 17 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x18, 18 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w18, 18 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x19, 19 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w19, 19 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x20, 20 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w20, 20 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x21, 21 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w21, 21 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x22, 22 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w22, 22 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x23, 23 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w23, 23 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x24, 24 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w24, 24 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x25, 25 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w25, 25 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x26, 26 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w26, 26 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x27, 27 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w27, 27 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x28, 28 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w28, 28 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x29, 29 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w29, 29 | D_REG |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(x30, 30 | FULL |GPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(w30, 30 | D_REG |GPR | Arch_aarch64, "aarch64"); - - //32 FPRs-----------q-d-s-h-b - //128 bit - DEF_REGISTER(q0, 0 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q1, 1 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q2, 2 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q3, 3 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q4, 4 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q5, 5 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q6, 6 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q7, 7 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q8, 8 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q9, 9 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q10, 10 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q11, 11 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q12, 12 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q13, 13 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q14, 14 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q15, 15 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q16, 16 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q17, 17 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q18, 18 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q19, 19 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q20, 20 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q21, 21 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q22, 22 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q23, 23 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q24, 24 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q25, 25 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q26, 26 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q27, 27 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q28, 28 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q29, 29 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q30, 30 | Q_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(q31, 31 | Q_REG |FPR | Arch_aarch64, "aarch64"); - - // second 64bit - DEF_REGISTER(hq0, 0 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq1, 1 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq2, 2 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq3, 3 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq4, 4 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq5, 5 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq6, 6 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq7, 7 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq8, 8 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq9, 9 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq10, 10 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq11, 11 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq12, 12 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq13, 13 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq14, 14 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq15, 15 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq16, 16 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq17, 17 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq18, 18 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq19, 19 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq20, 20 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq21, 21 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq22, 22 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq23, 23 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq24, 24 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq25, 25 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq26, 26 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq27, 27 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq28, 28 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq29, 29 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq30, 30 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(hq31, 31 | HQ_REG |FPR | Arch_aarch64, "aarch64"); - - //64bit FP regs - DEF_REGISTER(d0, 0 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d1, 1 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d2, 2 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d3, 3 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d4, 4 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d5, 5 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d6, 6 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d7, 7 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d8, 8 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d9, 9 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d10, 10 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d11, 11 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d12, 12 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d13, 13 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d14, 14 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d15, 15 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d16, 16 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d17, 17 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d18, 18 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d19, 19 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d20, 20 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d21, 21 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d22, 22 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d23, 23 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d24, 24 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d25, 25 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d26, 26 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d27, 27 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d28, 28 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d29, 29 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d30, 30 | FULL |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(d31, 31 | FULL |FPR | Arch_aarch64, "aarch64"); - - //32 bit FP regs - DEF_REGISTER(s0, 0 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s1, 1 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s2, 2 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s3, 3 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s4, 4 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s5, 5 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s6, 6 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s7, 7 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s8, 8 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s9, 9 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s10, 10 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s11, 11 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s12, 12 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s13, 13 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s14, 14 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s15, 15 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s16, 16 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s17, 17 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s18, 18 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s19, 19 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s20, 20 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s21, 21 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s22, 22 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s23, 23 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s24, 24 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s25, 25 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s26, 26 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s27, 27 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s28, 28 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s29, 29 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s30, 30 | D_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(s31, 31 | D_REG |FPR | Arch_aarch64, "aarch64"); - - - //16 bit FP regs - DEF_REGISTER(h0, 0 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h1, 1 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h2, 2 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h3, 3 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h4, 4 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h5, 5 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h6, 6 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h7, 7 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h8, 8 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h9, 9 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h10, 10 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h11, 11 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h12, 12 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h13, 13 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h14, 14 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h15, 15 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h16, 16 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h17, 17 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h18, 18 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h19, 19 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h20, 20 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h21, 21 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h22, 22 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h23, 23 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h24, 24 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h25, 25 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h26, 26 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h27, 27 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h28, 28 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h29, 29 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h30, 30 | W_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(h31, 31 | W_REG |FPR | Arch_aarch64, "aarch64"); - - //8 bit FP regs - DEF_REGISTER(b0, 0 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b1, 1 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b2, 2 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b3, 3 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b4, 4 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b5, 5 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b6, 6 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b7, 7 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b8, 8 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b9, 9 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b10, 10 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b11, 11 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b12, 12 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b13, 13 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b14, 14 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b15, 15 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b16, 16 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b17, 17 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b18, 18 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b19, 19 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b20, 20 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b21, 21 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b22, 22 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b23, 23 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b24, 24 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b25, 25 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b26, 26 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b27, 27 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b28, 28 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b29, 29 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b30, 30 | B_REG |FPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(b31, 31 | B_REG |FPR | Arch_aarch64, "aarch64"); + /** + * For interpreting constants: + * Lowest 16 bits (0x000000ff) is base register ID + * Next 16 bits (0x0000ff00) is the aliasing and subrange ID- + * used on x86/x86_64 to distinguish between things like EAX and AH + * Next 16 bits (0x00ff0000) are the register category, GPR/FPR/MMX/... + * Top 16 bits (0xff000000) are the architecture. + * + * These values/layout are not guaranteed to remain the same as part of the + * public interface, and may change. + **/ + + //Abstract registers used for stackwalking + DEF_REGISTER(InvalidReg, 0 | Arch_none, "abstract"); + DEF_REGISTER(FrameBase, 1 | Arch_none, "abstract"); + DEF_REGISTER(ReturnAddr, 2 | Arch_none, "abstract"); + DEF_REGISTER(StackTop, 3 | Arch_none, "abstract"); + // DWARF-ism; the CFA is the value of the stack pointer in the previous frame + DEF_REGISTER(CFA, 4 | Arch_none, "abstract"); + + namespace x86 + { + const signed int L_REG = 0x00000100; //8-bit, first byte + const signed int H_REG = 0x00000200; //8-bit, second byte + const signed int W_REG = 0x00000300; //16-bit, first word + // MachRegister::getBaseRegister clears the bit field for size, + // so the full register size has to be 0 + const signed int FULL = 0x00000000; //32 bits + const signed int OCT = 0x00000600; //128 bits + const signed int FPDBL = 0x00000700; // 80 bits + const signed int BIT = 0x00000800; // 1 bit + const signed int YMMS = 0x00000900; // YMM are 256 bits + const signed int ZMMS = 0x00000A00; // ZMM are 512 bits + const signed int GPR = 0x00010000; + const signed int SEG = 0x00020000; + const signed int FLAG = 0x00030000; + const signed int MISC = 0x00040000; + const signed int KMASK = 0x00050000; + const signed int XMM = 0x00060000; + const signed int YMM = 0x00070000; + const signed int ZMM = 0x00080000; + const signed int MMX = 0x00090000; + const signed int CTL = 0x000A0000; + const signed int DBG = 0x000B0000; + const signed int TST = 0x000C0000; + const signed int BASEA = 0x0; + const signed int BASEC = 0x1; + const signed int BASED = 0x2; + const signed int BASEB = 0x3; + const signed int BASESP = 0x4; + const signed int BASEBP = 0x5; + const signed int BASESI = 0x6; + const signed int BASEDI = 0x7; + const signed int FLAGS = 0x0; + + const signed int CF = 0x0; + const signed int FLAG1 = 0x1; + const signed int PF = 0x2; + const signed int FLAG3 = 0x3; + const signed int AF = 0x4; + const signed int FLAG5 = 0x5; + const signed int ZF = 0x6; + const signed int SF = 0x7; + const signed int TF = 0x8; + const signed int IF = 0x9; + const signed int DF = 0xa; + const signed int OF = 0xb; + const signed int FLAGC = 0xc; + const signed int FLAGD = 0xd; + const signed int NT = 0xe; + const signed int FLAGF = 0xf; + const signed int RF = 0x10; + + DEF_REGISTER(eax, BASEA | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(ecx, BASEC | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(edx, BASED | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(ebx, BASEB | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(esp, BASESP | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(ebp, BASEBP | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(esi, BASESI | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(edi, BASEDI | FULL | GPR | Arch_x86, "x86"); + DEF_REGISTER(ah, BASEA | H_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(al, BASEA | L_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(ax, BASEA | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(ch, BASEC | H_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(cl, BASEC | L_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(cx, BASEC | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(dh, BASED | H_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(dl, BASED | L_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(dx, BASED | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(bh, BASEB | H_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(bl, BASEB | L_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(bx, BASEB | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(sp, BASESP | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(bp, BASEBP | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(si, BASESI | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(di, BASEDI | W_REG | GPR | Arch_x86, "x86"); + DEF_REGISTER(eip, 0x10 | FULL | Arch_x86, "x86"); + DEF_REGISTER(flags, FLAGS | FULL | FLAG | Arch_x86, "x86"); + DEF_REGISTER(cf, CF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(flag1, FLAG1 | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(pf, PF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(flag3, FLAG3 | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(af, AF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(flag5, FLAG5 | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(zf, ZF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(sf, SF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(tf, TF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(if_, IF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(df, DF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(of, OF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(flagc, FLAGC | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(flagd, FLAGD | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(nt_, NT | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(flagf, FLAGF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(rf, RF | BIT | FLAG | Arch_x86, "x86"); + DEF_REGISTER(ds, 0x0 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER(es, 0x1 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER(fs, 0x2 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER(gs, 0x3 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER(cs, 0x4 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER(ss, 0x5 | W_REG | SEG | Arch_x86, "x86"); + DEF_REGISTER(oeax, 0x0 | FULL | MISC | Arch_x86, "x86"); + DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86, "x86"); + DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86, "x86"); + + DEF_REGISTER(k0, 0x00 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k1, 0x01 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k2, 0x02 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k3, 0x03 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k4, 0x04 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k5, 0x05 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k6, 0x06 | OCT | KMASK| Arch_x86, "x86"); + DEF_REGISTER(k7, 0x07 | OCT | KMASK| Arch_x86, "x86"); + + DEF_REGISTER(xmm0, 0x00 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm1, 0x01 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm2, 0x02 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm3, 0x03 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm4, 0x04 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm5, 0x05 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm6, 0x06 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm7, 0x07 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm8, 0x08 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm9, 0x09 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm10, 0x0A | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm11, 0x0B | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm12, 0x0C | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm13, 0x0D | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm14, 0x0E | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm15, 0x0F | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm16, 0x10 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm17, 0x11 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm18, 0x12 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm19, 0x13 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm20, 0x14 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm21, 0x15 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm22, 0x16 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm23, 0x17 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm24, 0x18 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm25, 0x19 | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm26, 0x1A | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm27, 0x1B | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm28, 0x1C | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm29, 0x1D | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm30, 0x1E | OCT | XMM | Arch_x86, "x86"); + DEF_REGISTER(xmm31, 0x1F | OCT | XMM | Arch_x86, "x86"); + + + DEF_REGISTER(ymm0, 0x00 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm1, 0x01 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm2, 0x02 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm3, 0x03 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm4, 0x04 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm5, 0x05 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm6, 0x06 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm7, 0x07 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm8, 0x08 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm9, 0x09 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm10, 0x0A | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm11, 0x0B | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm12, 0x0C | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm13, 0x0D | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm14, 0x0E | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm15, 0x0F | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm16, 0x10 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm17, 0x11 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm18, 0x12 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm19, 0x13 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm20, 0x14 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm21, 0x15 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm22, 0x16 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm23, 0x17 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm24, 0x18 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm25, 0x19 | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm26, 0x1A | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm27, 0x1B | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm28, 0x1C | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm29, 0x1D | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm30, 0x1E | YMMS | YMM | Arch_x86, "x86"); + DEF_REGISTER(ymm31, 0x1F | YMMS | YMM | Arch_x86, "x86"); + + DEF_REGISTER(zmm0, 0x00 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm1, 0x01 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm2, 0x02 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm3, 0x03 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm4, 0x04 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm5, 0x05 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm6, 0x06 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm7, 0x07 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm8, 0x08 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm9, 0x09 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm10, 0x0A | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm11, 0x0B | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm12, 0x0C | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm13, 0x0D | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm14, 0x0E | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm15, 0x0F | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm16, 0x10 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm17, 0x11 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm18, 0x12 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm19, 0x13 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm20, 0x14 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm21, 0x15 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm22, 0x16 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm23, 0x17 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm24, 0x18 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm25, 0x19 | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm26, 0x1A | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm27, 0x1B | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm28, 0x1C | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm29, 0x1D | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm30, 0x1E | ZMMS | ZMM | Arch_x86, "x86"); + DEF_REGISTER(zmm31, 0x1F | ZMMS | ZMM | Arch_x86, "x86"); + + DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm3, 0x3 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm4, 0x4 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm5, 0x5 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm6, 0x6 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(mm7, 0x7 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(cr0, 0x0 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr1, 0x1 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr2, 0x2 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr3, 0x3 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr4, 0x4 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr5, 0x5 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr6, 0x6 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(cr7, 0x7 | FULL | CTL | Arch_x86, "x86"); + DEF_REGISTER(dr0, 0x0 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr1, 0x1 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr2, 0x2 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr3, 0x3 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr4, 0x4 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr5, 0x5 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr6, 0x6 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(dr7, 0x7 | FULL | DBG | Arch_x86, "x86"); + DEF_REGISTER(tr0, 0x0 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr1, 0x1 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr2, 0x2 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr3, 0x3 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr4, 0x4 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr5, 0x5 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr6, 0x6 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(tr7, 0x7 | FULL | TST | Arch_x86, "x86"); + DEF_REGISTER(st0, 0x0 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st1, 0x1 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st2, 0x2 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st3, 0x3 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st4, 0x4 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st5, 0x5 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st6, 0x6 | FPDBL | MMX | Arch_x86, "x86"); + DEF_REGISTER(st7, 0x7 | FPDBL | MMX | Arch_x86, "x86"); + } + namespace x86_64 + { + const signed int L_REG = 0x00000100; //8-bit, first byte + const signed int H_REG = 0x00000200; //8-bit, second byte + const signed int W_REG = 0x00000300; //16 bit, first work + const signed int D_REG = 0x00000F00; //32 bit, first double word + // MachRegister::getBaseRegister clears the bit field for size, + // so the full register size has to be 0 + const signed int FULL = 0x00000000; //64 bits + const signed int OCT = 0x00000600; //128 bits + const signed int FPDBL = 0x00000700; // 80 bits + const signed int BIT = 0x00000800; // 1 bit + const signed int YMMS = 0x00000900; // YMM are 256 bits + const signed int ZMMS = 0x00000A00; // ZMM are 512 bits + const signed int GPR = 0x00010000; + const signed int SEG = 0x00020000; + const signed int FLAG = 0x00030000; + const signed int MISC = 0x00040000; + const signed int KMASK = 0x00050000; + const signed int XMM = 0x00060000; + const signed int YMM = 0x00070000; + const signed int ZMM = 0x00080000; + const signed int MMX = 0x00090000; + const signed int CTL = 0x000A0000; + const signed int DBG = 0x000B0000; + const signed int TST = 0x000C0000; + const signed int FLAGS = 0x00000000; + const signed int BASEA = 0x0; + const signed int BASEC = 0x1; + const signed int BASED = 0x2; + const signed int BASEB = 0x3; + const signed int BASESP = 0x4; + const signed int BASEBP = 0x5; + const signed int BASESI = 0x6; + const signed int BASEDI = 0x7; + const signed int BASE8 = 0x8; + const signed int BASE9 = 0x9; + const signed int BASE10 = 0xa; + const signed int BASE11 = 0xb; + const signed int BASE12 = 0xc; + const signed int BASE13 = 0xd; + const signed int BASE14 = 0xe; + const signed int BASE15 = 0xf; + + const signed int CF = x86::CF; + const signed int PF = x86::PF; + const signed int AF = x86::AF; + const signed int ZF = x86::ZF; + const signed int SF = x86::SF; + const signed int TF = x86::TF; + const signed int IF = x86::IF; + const signed int DF = x86::DF; + const signed int OF = x86::OF; + const signed int NT = x86::NT; + const signed int RF = x86::RF; + + DEF_REGISTER(rax, BASEA | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rcx, BASEC | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rdx, BASED | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rbx, BASEB | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rsp, BASESP | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rbp, BASEBP | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rsi, BASESI | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rdi, BASEDI | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r8, BASE8 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r9, BASE9 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r10, BASE10 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r11, BASE11 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r12, BASE12 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r13, BASE13 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r14, BASE14 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r15, BASE15 | FULL | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(ah, BASEA | H_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(al, BASEA | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(ax, BASEA | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(eax, BASEA | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(ch, BASEC | H_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(cl, BASEC | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(cx, BASEC | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(ecx, BASEC | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(dh, BASED | H_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(dl, BASED | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(dx, BASED | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(edx, BASED | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(bh, BASEB | H_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(bl, BASEB | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(bx, BASEB | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(ebx, BASEB | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(spl, BASESP | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(sp, BASESP | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(esp, BASESP | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(bpl, BASEBP | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(bp, BASEBP | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(ebp, BASEBP | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(dil, BASEDI | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(di, BASEDI | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(edi, BASEDI | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(sil, BASESI | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(si, BASESI | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(esi, BASESI | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r8b, BASE8 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r8w, BASE8 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r8d, BASE8 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r9b, BASE9 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r9w, BASE9 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r9d, BASE9 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r10b, BASE10 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r10w, BASE10 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r10d, BASE10 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r11b, BASE11 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r11w, BASE11 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r11d, BASE11 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r12b, BASE12 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r12w, BASE12 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r12d, BASE12 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r13b, BASE13 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r13w, BASE13 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r13d, BASE13 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r14b, BASE14 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r14w, BASE14 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r14d, BASE14 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r15b, BASE15 | L_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r15w, BASE15 | W_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(r15d, BASE15 | D_REG | GPR | Arch_x86_64, "x86_64"); + DEF_REGISTER(rip, 0x10 | FULL | Arch_x86_64, "x86_64"); + DEF_REGISTER(eip, 0x10 | D_REG | Arch_x86_64, "x86_64"); + DEF_REGISTER(flags, FLAGS | FULL | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(cf, CF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(pf, PF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(af, AF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(zf, ZF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(sf, SF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(tf, TF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(if_, IF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(df, DF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(of, OF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(nt_, NT | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(rf, RF | BIT | FLAG | Arch_x86_64, "x86_64"); + DEF_REGISTER(ds, 0x0 | FULL | SEG | Arch_x86_64, "x86_64"); + DEF_REGISTER(es, 0x1 | FULL | SEG | Arch_x86_64, "x86_64"); + DEF_REGISTER(fs, 0x2 | FULL | SEG | Arch_x86_64, "x86_64"); + DEF_REGISTER(gs, 0x3 | FULL | SEG | Arch_x86_64, "x86_64"); + DEF_REGISTER(cs, 0x4 | FULL | SEG | Arch_x86_64, "x86_64"); + DEF_REGISTER(ss, 0x5 | FULL | SEG | Arch_x86_64, "x86_64"); + DEF_REGISTER(orax, 0x0 | FULL | MISC | Arch_x86_64, "x86_64"); + DEF_REGISTER(fsbase, 0x1 | FULL | MISC | Arch_x86_64, "x86_64"); + DEF_REGISTER(gsbase, 0x2 | FULL | MISC | Arch_x86_64, "x86_64"); + DEF_REGISTER(k0, 0x00 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k1, 0x01 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k2, 0x02 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k3, 0x03 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k4, 0x04 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k5, 0x05 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k6, 0x06 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(k7, 0x07 | OCT | KMASK| Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm0, 0x00 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm1, 0x01 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm2, 0x02 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm3, 0x03 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm4, 0x04 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm5, 0x05 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm6, 0x06 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm7, 0x07 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm8, 0x08 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm9, 0x09 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm10, 0x0A | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm11, 0x0B | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm12, 0x0C | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm13, 0x0D | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm14, 0x0E | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm15, 0x0F | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm16, 0x10 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm17, 0x11 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm18, 0x12 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm19, 0x13 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm20, 0x14 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm21, 0x15 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm22, 0x16 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm23, 0x17 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm24, 0x18 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm25, 0x19 | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm26, 0x1A | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm27, 0x1B | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm28, 0x1C | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm29, 0x1D | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm30, 0x1E | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(xmm31, 0x1F | OCT | XMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm0, 0x00 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm1, 0x01 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm2, 0x02 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm3, 0x03 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm4, 0x04 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm5, 0x05 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm6, 0x06 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm7, 0x07 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm8, 0x08 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm9, 0x09 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm10, 0x0A | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm11, 0x0B | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm12, 0x0C | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm13, 0x0D | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm14, 0x0E | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm15, 0x0F | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm16, 0x10 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm17, 0x11 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm18, 0x12 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm19, 0x13 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm20, 0x14 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm21, 0x15 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm22, 0x16 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm23, 0x17 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm24, 0x18 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm25, 0x19 | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm26, 0x1A | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm27, 0x1B | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm28, 0x1C | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm29, 0x1D | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm30, 0x1E | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(ymm31, 0x1F | YMMS | YMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm0, 0x00 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm1, 0x01 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm2, 0x02 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm3, 0x03 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm4, 0x04 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm5, 0x05 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm6, 0x06 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm7, 0x07 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm8, 0x08 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm9, 0x09 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm10, 0x0A | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm11, 0x0B | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm12, 0x0C | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm13, 0x0D | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm14, 0x0E | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm15, 0x0F | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm16, 0x10 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm17, 0x11 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm18, 0x12 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm19, 0x13 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm20, 0x14 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm21, 0x15 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm22, 0x16 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm23, 0x17 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm24, 0x18 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm25, 0x19 | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm26, 0x1A | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm27, 0x1B | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm28, 0x1C | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm29, 0x1D | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm30, 0x1E | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(zmm31, 0x1F | ZMMS | ZMM | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm0, 0x0 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm1, 0x1 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm2, 0x2 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm3, 0x3 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm4, 0x4 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm5, 0x5 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm6, 0x6 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(mm7, 0x7 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr0, 0x0 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr1, 0x1 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr2, 0x2 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr3, 0x3 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr4, 0x4 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr5, 0x5 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr6, 0x6 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(cr7, 0x7 | FULL | CTL | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr0, 0x0 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr1, 0x1 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr2, 0x2 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr3, 0x3 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr4, 0x4 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr5, 0x5 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr6, 0x6 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(dr7, 0x7 | FULL | DBG | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr0, 0x0 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr1, 0x1 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr2, 0x2 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr3, 0x3 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr4, 0x4 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr5, 0x5 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr6, 0x6 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(tr7, 0x7 | FULL | TST | Arch_x86_64, "x86_64"); + DEF_REGISTER(st0, 0x0 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st1, 0x1 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st2, 0x2 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st3, 0x3 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st4, 0x4 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st5, 0x5 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st6, 0x6 | FPDBL | MMX | Arch_x86_64, "x86_64"); + DEF_REGISTER(st7, 0x7 | FPDBL | MMX | Arch_x86_64, "x86_64"); + } + namespace ppc32 { + const signed int GPR = 0x00010000; + const signed int FPR = 0x00020000; + const signed int FSR = 0x00040000; + const signed int SPR = 0x00080000; + + DEF_REGISTER(r0, 0 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r1, 1 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r2, 2 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r3, 3 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r4, 4 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r5, 5 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r6, 6 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r7, 7 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r8, 8 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r9, 9 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r10, 10 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r11, 11 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r12, 12 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r13, 13 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r14, 14 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r15, 15 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r16, 16 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r17, 17 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r18, 18 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r19, 19 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r20, 20 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r21, 21 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r22, 22 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r23, 23 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r24, 24 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r25, 25 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r26, 26 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r27, 27 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r28, 28 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r29, 29 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r30, 30 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(r31, 31 | GPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr0, 0 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr1, 1 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr2, 2 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr3, 3 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr4, 4 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr5, 5 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr6, 6 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr7, 7 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr8, 8 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr9, 9 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr10, 10 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr11, 11 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr12, 12 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr13, 13 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr14, 14 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr15, 15 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr16, 16 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr17, 17 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr18, 18 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr19, 19 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr20, 20 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr21, 21 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr22, 22 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr23, 23 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr24, 24 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr25, 25 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr26, 26 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr27, 27 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr28, 28 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr29, 29 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr30, 30 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpr31, 31 | FPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr0, 0 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr1, 1 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr2, 2 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr3, 3 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr4, 4 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr5, 5 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr6, 6 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr7, 7 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr8, 8 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr9, 9 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr10, 10 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr11, 11 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr12, 12 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr13, 13 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr14, 14 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr15, 15 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr16, 16 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr17, 17 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr18, 18 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr19, 19 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr20, 20 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr21, 21 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr22, 22 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr23, 23 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr24, 24 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr25, 25 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr26, 26 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr27, 27 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr28, 28 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr29, 29 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr30, 30 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fsr31, 31 | FSR | Arch_ppc32, "ppc32"); + DEF_REGISTER(mq, 0 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(xer, 1 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(lr, 8 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ctr, 9 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(amr, 13 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dscr, 17 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dsisr, 18 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dar, 19 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dec, 22 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sdr1, 25 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(srr0, 26 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(srr1, 27 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cfar, 28 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(amr_pri, 29 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(pid, 48 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(gdecar, 53 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(decar, 54 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(mcivpr, 55 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(lper, 56 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(lperu, 57 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(csrr0, 58 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(csrr1, 59 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(gtsrwr, 60 | SPR | Arch_ppc32, "ppc32"); + // DEF_REGISTER(iamr, 61 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(esr, 62 | SPR | Arch_ppc32, "ppc32"); + // DEF_REGISTER(ivpr, 66 | SPR | Arch_ppc32, "ppc32"); + + DEF_REGISTER(vrsave, 256 | SPR | Arch_ppc32, "ppc32"); + + + DEF_REGISTER(sprg0, 272 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg1, 273 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg2, 274 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg3, 275 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg4, 276 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg5, 277 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg6, 278 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg7, 279 | SPR | Arch_ppc32, "ppc32"); + + DEF_REGISTER(sprg3_ro, 259 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg4_ro, 260 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg5_ro, 261 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg6_ro, 262 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(sprg7_ro, 263 | SPR | Arch_ppc32, "ppc32"); + + + DEF_REGISTER(ear, 282 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(tbl_wo, 284 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(tbl_ro, 268 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(tbu_wo, 285 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(tbu_ro, 269 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(pvr, 287 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(pc, 600 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw, 601 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(msr, 610 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ivpr, 611 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ivor8, 612 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg0, 613 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg1, 614 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg2, 615 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg3, 616 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg4, 617 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg5, 618 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg6, 619 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(seg7, 620 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr0, 621 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr1, 622 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr2, 623 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr3, 624 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr4, 625 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr5, 626 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr6, 627 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr7, 628 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr, 629 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(or3, 630 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(trap, 631 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr0l, 700 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr0g, 701 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr0e, 702 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr0s, 703 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr1l, 704 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr1g, 705 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr1e, 706 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr1s, 707 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr2l, 708 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr2g, 709 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr2e, 710 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr2s, 711 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr3l, 712 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr3g, 713 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr3e, 714 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr3s, 715 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr4l, 716 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr4g, 717 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr4e, 718 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr4s, 719 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr5l, 720 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr5g, 721 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr5e, 722 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr5s, 723 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr6l, 724 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr6g, 725 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr6e, 726 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr6s, 727 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr7l, 728 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr7g, 729 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr7e, 730 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(cr7s, 731 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ppr, 896 | SPR | Arch_ppc32, "ppc32"); + DEF_REGISTER(ppr32, 898 | SPR | Arch_ppc32, "ppc32"); + + + } + namespace ppc64 { + const signed int GPR = 0x00010000; + const signed int FPR = 0x00020000; + const signed int FSR = 0x00040000; + const signed int SPR = 0x00080000; + const signed int VSR = 0x00000000; + + DEF_REGISTER(r0, 0 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r1, 1 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r2, 2 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r3, 3 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r4, 4 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r5, 5 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r6, 6 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r7, 7 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r8, 8 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r9, 9 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r10, 10 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r11, 11 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r12, 12 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r13, 13 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r14, 14 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r15, 15 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r16, 16 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r17, 17 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r18, 18 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r19, 19 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r20, 20 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r21, 21 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r22, 22 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r23, 23 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r24, 24 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r25, 25 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r26, 26 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r27, 27 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r28, 28 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r29, 29 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r30, 30 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(r31, 31 | GPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr0, 0 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr1, 1 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr2, 2 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr3, 3 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr4, 4 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr5, 5 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr6, 6 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr7, 7 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr8, 8 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr9, 9 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr10, 10 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr11, 11 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr12, 12 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr13, 13 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr14, 14 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr15, 15 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr16, 16 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr17, 17 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr18, 18 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr19, 19 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr20, 20 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr21, 21 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr22, 22 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr23, 23 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr24, 24 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr25, 25 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr26, 26 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr27, 27 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr28, 28 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr29, 29 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr30, 30 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpr31, 31 | FPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr0, 0 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr1, 1 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr2, 2 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr3, 3 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr4, 4 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr5, 5 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr6, 6 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr7, 7 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr8, 8 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr9, 9 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr10, 10 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr11, 11 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr12, 12 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr13, 13 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr14, 14 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr15, 15 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr16, 16 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr17, 17 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr18, 18 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr19, 19 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr20, 20 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr21, 21 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr22, 22 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr23, 23 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr24, 24 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr25, 25 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr26, 26 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr27, 27 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr28, 28 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr29, 29 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr30, 30 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fsr31, 31 | FSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(mq, 0 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(xer, 1 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(lr, 8 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ctr, 9 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dsisr, 18 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dar, 19 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dec, 22 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sdr1, 25 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(srr0, 26 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(srr1, 27 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vrsave, 256 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg0, 272 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg1, 273 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg2, 274 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg3, 275 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg4, 276 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg5, 277 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg6, 278 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg7, 279 | SPR | Arch_ppc64, "ppc64"); + + DEF_REGISTER(sprg3_ro, 259 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg4_ro, 260 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg5_ro, 261 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg6_ro, 262 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(sprg7_ro, 263 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ear, 282 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(tbl_wo, 284 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(tbl_ro, 268 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(tbu_wo, 285 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(tbu_ro, 269 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(pvr, 287 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat0u, 528 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat0l, 529 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat1u, 530 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat1l, 531 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat2u, 532 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat2l, 533 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat3u, 534 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ibat3l, 535 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat0u, 536 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat0l, 537 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat1u, 538 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat1l, 539 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat2u, 540 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat2l, 541 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat3u, 542 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(dbat3l, 543 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(pc, 600 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw, 601 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw0, 602 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw1, 603 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw2, 604 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw3, 605 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw4, 606 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw5, 607 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw6, 608 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(fpscw7, 609 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(msr, 610 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ivpr, 611 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ivor8, 612 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg0, 613 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg1, 614 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg2, 615 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg3, 616 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg4, 617 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg5, 618 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg6, 619 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(seg7, 620 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr0, 621 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr1, 622 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr2, 623 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr3, 624 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr4, 625 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr5, 626 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr6, 627 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr7, 628 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr, 629 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(or3, 630 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(trap, 631 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr0l, 700 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr0g, 701 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr0e, 702 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr0s, 703 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr1l, 704 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr1g, 705 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr1e, 706 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr1s, 707 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr2l, 708 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr2g, 709 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr2e, 710 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr2s, 711 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr3l, 712 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr3g, 713 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr3e, 714 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr3s, 715 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr4l, 716 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr4g, 717 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr4e, 718 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr4s, 719 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr5l, 720 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr5g, 721 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr5e, 722 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr5s, 723 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr6l, 724 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr6g, 725 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr6e, 726 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr6s, 727 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr7l, 728 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr7g, 729 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr7e, 730 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(cr7s, 731 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ppr, 896 | SPR | Arch_ppc64, "ppc64"); + DEF_REGISTER(ppr32, 898 | SPR | Arch_ppc64, "ppc64"); + + DEF_REGISTER(vsr0, 0 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr1, 1 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr2, 2 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr3, 3 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr4, 4 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr5, 5 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr6, 6 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr7, 7 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr8, 8 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr9, 9 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr10, 10 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr11, 11 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr12, 12 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr13, 13 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr14, 14 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr15, 15 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr16, 16 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr17, 17 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr18, 18 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr19, 19 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr20, 20 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr21, 21 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr22, 22 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr23, 23 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr24, 24 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr25, 25 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr26, 26 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr27, 27 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr28, 28 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr29, 29 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr30, 30 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr31, 31 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr32, 32 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr33, 33 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr34, 34 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr35, 35 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr36, 36 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr37, 37 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr38, 38 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr39, 39 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr40, 40 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr41, 41 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr42, 42 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr43, 43 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr44, 44 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr45, 45 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr46, 46 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr47, 47 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr48, 48 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr49, 49 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr50, 50 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr51, 51 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr52, 52 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr53, 53 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr54, 54 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr55, 55 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr56, 56 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr57, 57 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr58, 58 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr59, 59 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr60, 60 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr61, 61 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr62, 62 | VSR | Arch_ppc64, "ppc64"); + DEF_REGISTER(vsr63, 63 | VSR | Arch_ppc64, "ppc64"); + + + + + } + + namespace aarch64{ + //0xff000000 0x00ff0000 0x0000ff00 0x000000ff + //arch reg cat:GPR alias&subrange reg ID + const signed int GPR = 0x00010000; + const signed int FPR = 0x00020000; + const signed int FLAG = 0x00030000; + const signed int FSR = 0x00040000; + const signed int SPR = 0x00080000; + const signed int SYSREG = 0x00100000; + + const signed int BIT = 0x00008000; + const signed int B_REG = 0x00000100; //8bit byte reg + const signed int W_REG = 0x00000300; //16bit half-wor reg + const signed int D_REG = 0x00000f00; //32bit single-word reg + const signed int FULL = 0x00000000; //64bit double-word reg + const signed int Q_REG = 0x00000400; //128bit reg + const signed int HQ_REG = 0x00000500; //second 64bit in 128bit reg + + //31 GPRs, double word long registers + // (name regID| alias | cat | arch arch ) + DEF_REGISTER(x0, 0 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w0, 0 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x1, 1 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w1, 1 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x2, 2 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w2, 2 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x3, 3 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w3, 3 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x4, 4 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w4, 4 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x5, 5 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w5, 5 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x6, 6 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w6, 6 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x7, 7 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w7, 7 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x8, 8 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w8, 8 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x9, 9 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w9, 9 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x10, 10 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w10, 10 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x11, 11 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w11, 11 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x12, 12 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w12, 12 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x13, 13 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w13, 13 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x14, 14 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w14, 14 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x15, 15 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w15, 15 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x16, 16 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w16, 16 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x17, 17 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w17, 17 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x18, 18 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w18, 18 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x19, 19 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w19, 19 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x20, 20 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w20, 20 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x21, 21 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w21, 21 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x22, 22 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w22, 22 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x23, 23 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w23, 23 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x24, 24 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w24, 24 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x25, 25 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w25, 25 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x26, 26 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w26, 26 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x27, 27 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w27, 27 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x28, 28 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w28, 28 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x29, 29 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w29, 29 | D_REG |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(x30, 30 | FULL |GPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(w30, 30 | D_REG |GPR | Arch_aarch64, "aarch64"); + + //32 FPRs-----------q-d-s-h-b + //128 bit + DEF_REGISTER(q0, 0 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q1, 1 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q2, 2 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q3, 3 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q4, 4 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q5, 5 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q6, 6 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q7, 7 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q8, 8 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q9, 9 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q10, 10 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q11, 11 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q12, 12 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q13, 13 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q14, 14 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q15, 15 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q16, 16 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q17, 17 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q18, 18 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q19, 19 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q20, 20 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q21, 21 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q22, 22 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q23, 23 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q24, 24 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q25, 25 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q26, 26 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q27, 27 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q28, 28 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q29, 29 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q30, 30 | Q_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(q31, 31 | Q_REG |FPR | Arch_aarch64, "aarch64"); + + // second 64bit + DEF_REGISTER(hq0, 0 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq1, 1 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq2, 2 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq3, 3 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq4, 4 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq5, 5 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq6, 6 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq7, 7 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq8, 8 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq9, 9 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq10, 10 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq11, 11 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq12, 12 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq13, 13 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq14, 14 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq15, 15 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq16, 16 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq17, 17 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq18, 18 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq19, 19 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq20, 20 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq21, 21 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq22, 22 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq23, 23 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq24, 24 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq25, 25 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq26, 26 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq27, 27 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq28, 28 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq29, 29 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq30, 30 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(hq31, 31 | HQ_REG |FPR | Arch_aarch64, "aarch64"); + + //64bit FP regs + DEF_REGISTER(d0, 0 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d1, 1 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d2, 2 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d3, 3 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d4, 4 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d5, 5 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d6, 6 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d7, 7 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d8, 8 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d9, 9 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d10, 10 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d11, 11 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d12, 12 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d13, 13 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d14, 14 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d15, 15 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d16, 16 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d17, 17 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d18, 18 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d19, 19 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d20, 20 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d21, 21 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d22, 22 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d23, 23 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d24, 24 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d25, 25 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d26, 26 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d27, 27 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d28, 28 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d29, 29 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d30, 30 | FULL |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(d31, 31 | FULL |FPR | Arch_aarch64, "aarch64"); + + //32 bit FP regs + DEF_REGISTER(s0, 0 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s1, 1 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s2, 2 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s3, 3 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s4, 4 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s5, 5 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s6, 6 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s7, 7 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s8, 8 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s9, 9 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s10, 10 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s11, 11 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s12, 12 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s13, 13 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s14, 14 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s15, 15 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s16, 16 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s17, 17 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s18, 18 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s19, 19 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s20, 20 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s21, 21 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s22, 22 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s23, 23 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s24, 24 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s25, 25 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s26, 26 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s27, 27 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s28, 28 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s29, 29 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s30, 30 | D_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(s31, 31 | D_REG |FPR | Arch_aarch64, "aarch64"); + + + //16 bit FP regs + DEF_REGISTER(h0, 0 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h1, 1 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h2, 2 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h3, 3 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h4, 4 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h5, 5 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h6, 6 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h7, 7 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h8, 8 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h9, 9 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h10, 10 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h11, 11 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h12, 12 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h13, 13 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h14, 14 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h15, 15 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h16, 16 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h17, 17 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h18, 18 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h19, 19 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h20, 20 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h21, 21 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h22, 22 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h23, 23 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h24, 24 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h25, 25 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h26, 26 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h27, 27 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h28, 28 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h29, 29 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h30, 30 | W_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(h31, 31 | W_REG |FPR | Arch_aarch64, "aarch64"); + + //8 bit FP regs + DEF_REGISTER(b0, 0 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b1, 1 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b2, 2 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b3, 3 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b4, 4 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b5, 5 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b6, 6 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b7, 7 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b8, 8 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b9, 9 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b10, 10 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b11, 11 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b12, 12 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b13, 13 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b14, 14 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b15, 15 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b16, 16 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b17, 17 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b18, 18 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b19, 19 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b20, 20 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b21, 21 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b22, 22 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b23, 23 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b24, 24 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b25, 25 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b26, 26 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b27, 27 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b28, 28 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b29, 29 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b30, 30 | B_REG |FPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(b31, 31 | B_REG |FPR | Arch_aarch64, "aarch64"); #include "aarch64_sys_regs.h" - //GPRs aliases: - //by convention - //x29 is used as frame pointer - //x30 is the linking register - //x31 can be sp or zero register depending on the context - - //special registers - //PC is not writable in aarch64 - const signed int N_FLAG = 31; - const signed int Z_FLAG = 30; - const signed int C_FLAG = 29; - const signed int V_FLAG = 28; - - DEF_REGISTER(sp, 31| FULL |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(wsp, 0 | D_REG |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(pc, 32| FULL |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(pstate, 2 | D_REG |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(xzr, 3 | FULL |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(n, N_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); - DEF_REGISTER(z, Z_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); - DEF_REGISTER(c, C_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); - DEF_REGISTER(v, V_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); - DEF_REGISTER(wzr, 3 | D_REG |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(fpcr, 4 | D_REG |SPR | Arch_aarch64, "aarch64"); - DEF_REGISTER(fpsr, 5 | D_REG |SPR | Arch_aarch64, "aarch64"); - - } //end of aarch64 namespace - namespace amdgpu_vega{ - //0xff000000 0x00ff0000 0x0000ff00 0x000000ff - //arch reg cat:GPR alias&subrange reg ID - const signed int SGPR = 0x00010000; - const signed int SGPR_VEC2 = 0x00020000; - const signed int SGPR_VEC4 = 0x00030000; - const signed int SGPR_VEC8 = 0x00040000; - const signed int SGPR_VEC16 = 0x00050000; - - const signed int VGPR = 0x00060000; - const signed int VGPR_VEC2 = 0x00070000; - const signed int VGPR_VEC4 = 0x00080000; - const signed int VGPR_VEC8 = 0x00090000; - const signed int VGPR_VEC16 = 0x000A0000; - - const signed int HWR = 0x000B0000; - const signed int TTMP_SGPR = 0x000C0000; - const signed int FLAGS = 0x000D0000; - const signed int PC = 0x000E0000; - const signed int SYSREG = 0x00100000; - - // aliasing for flags - // if we found out that it is a flag, we no longer need to use the cat 0x00ff0000 - // so we use thhat part to encode the low offset in the base register - // - - - - const signed int BITS_1 = 0x00000100; - const signed int BITS_2 = 0x00000200; - const signed int BITS_3 = 0x00000300; - const signed int BITS_4 = 0x00000400; - const signed int BITS_6 = 0x00000500; - const signed int BITS_7 = 0x00000600; - const signed int BITS_8 = 0x00000700; - const signed int BITS_9 = 0x00000800; - const signed int BITS_15 = 0x00000900; - const signed int BITS_16 = 0x00000A00; - const signed int BITS_32 = 0x00000B00; - const signed int BITS_48 = 0x00000C00; - const signed int BITS_64 = 0x00000D00; - const signed int BITS_128 = 0x00000E00; - const signed int BITS_256 = 0x00000F00; - const signed int BITS_512 = 0x00001000; - - - - - /*const signed int BIT = 0x00001000; - const signed int D_BIT = 0x00002000; - const signed int T_BIT = 0x00003000; - const signed int Q_BIT = 0x00004000; - const signed int H_BIT = 0x00006000; - const signed int S_BIT = 0x00007000; - const signed int O_BIT = 0x00008000; - const signed int N_BIT = 0x00009000; - const signed int D_REG_BIT = 0x0000A000; - - const signed int B_REG = 0x00000100; //8bit byte reg - const signed int W_REG = 0x00000200; //16bit half-wor reg - const signed int D_REG = 0x00000300; //32bit single-word reg - const signed int FE_REG = 0x00000400; //48bit reg - const signed int FULL = 0x00000500; //64bit double-word reg - const signed int Q_REG = 0x00000600; //128bit reg - const signed int YMMS = 0x00000700; //256bit reg - const signed int ZMMS = 0x00000800; //512bit reg - const signed int HQ_REG = 0x00000900; //second 64bit in 128bit reg*/ - - #include "amdgpu_vega_sys_regs.h" + //GPRs aliases: + //by convention + //x29 is used as frame pointer + //x30 is the linking register + //x31 can be sp or zero register depending on the context + + //special registers + //PC is not writable in aarch64 + const signed int N_FLAG = 31; + const signed int Z_FLAG = 30; + const signed int C_FLAG = 29; + const signed int V_FLAG = 28; + + DEF_REGISTER(sp, 31| FULL |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(wsp, 0 | D_REG |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(pc, 32| FULL |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(pstate, 2 | D_REG |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(xzr, 3 | FULL |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(n, N_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); + DEF_REGISTER(z, Z_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); + DEF_REGISTER(c, C_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); + DEF_REGISTER(v, V_FLAG | BIT |FLAG| Arch_aarch64, "aarch64"); + DEF_REGISTER(wzr, 3 | D_REG |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(fpcr, 4 | D_REG |SPR | Arch_aarch64, "aarch64"); + DEF_REGISTER(fpsr, 5 | D_REG |SPR | Arch_aarch64, "aarch64"); + + } //end of aarch64 namespace + namespace amdgpu_vega{ + //0xff000000 0x00ff0000 0x0000ff00 0x000000ff + //arch reg cat:GPR alias&subrange reg ID + const signed int SGPR = 0x00010000; + const signed int SGPR_VEC2 = 0x00020000; + const signed int SGPR_VEC4 = 0x00030000; + const signed int SGPR_VEC8 = 0x00040000; + const signed int SGPR_VEC16 = 0x00050000; + + const signed int VGPR = 0x00060000; + const signed int VGPR_VEC2 = 0x00070000; + const signed int VGPR_VEC4 = 0x00080000; + const signed int VGPR_VEC8 = 0x00090000; + const signed int VGPR_VEC16 = 0x000A0000; + + const signed int HWR = 0x000B0000; + const signed int TTMP_SGPR = 0x000C0000; + const signed int FLAGS = 0x000D0000; + const signed int PC = 0x000E0000; + const signed int SYSREG = 0x00100000; + + // aliasing for flags + // if we found out that it is a flag, we no longer need to use the cat 0x00ff0000 + // so we use thhat part to encode the low offset in the base register + // + + + + const signed int BITS_1 = 0x00000100; + const signed int BITS_2 = 0x00000200; + const signed int BITS_3 = 0x00000300; + const signed int BITS_4 = 0x00000400; + const signed int BITS_6 = 0x00000500; + const signed int BITS_7 = 0x00000600; + const signed int BITS_8 = 0x00000700; + const signed int BITS_9 = 0x00000800; + const signed int BITS_15 = 0x00000900; + const signed int BITS_16 = 0x00000A00; + const signed int BITS_32 = 0x00000B00; + const signed int BITS_48 = 0x00000C00; + const signed int BITS_64 = 0x00000D00; + const signed int BITS_128 = 0x00000E00; + const signed int BITS_256 = 0x00000F00; + const signed int BITS_512 = 0x00001000; + +#include "amdgpu_vega_sys_regs.h" + } + + namespace amdgpu_cdna2{ + //0xff000000 0x00ff0000 0x0000ff00 0x000000ff + //arch reg cat:GPR alias&subrange reg ID + const signed int SGPR = 0x00010000; + const signed int SGPR_VEC2 = 0x00020000; + const signed int SGPR_VEC4 = 0x00030000; + const signed int SGPR_VEC8 = 0x00040000; + const signed int SGPR_VEC16 = 0x00050000; + + const signed int VGPR = 0x00060000; + const signed int VGPR_VEC2 = 0x00070000; + const signed int VGPR_VEC4 = 0x00080000; + const signed int VGPR_VEC8 = 0x00090000; + const signed int VGPR_VEC16 = 0x000A0000; + + const signed int ACC_VGPR = 0x000B0000; + + const signed int HWR = 0x000C0000; + const signed int TTMP_SGPR = 0x000D0000; + const signed int FLAGS = 0x000E0000; + const signed int PC = 0x000F0000; + const signed int SYSREG = 0x00100000; + const signed int TGT = 0x00110000; // I have no idea what TGT is yet + const signed int ATTR = 0x00120000; + const signed int PARAM = 0x00130000; // LDS Parameter + + // aliasing for flags + // if we found out that it is a flag, we no longer need to use the cat 0x00ff0000 + // so we use that part to encode the low offset in the base register + // + + + const signed int BITS_1 = 0x00000100; + const signed int BITS_2 = 0x00000200; + const signed int BITS_3 = 0x00000300; + const signed int BITS_4 = 0x00000400; + const signed int BITS_6 = 0x00000500; + const signed int BITS_7 = 0x00000600; + const signed int BITS_8 = 0x00000700; + const signed int BITS_9 = 0x00000800; + const signed int BITS_15 = 0x00000900; + const signed int BITS_16 = 0x00000A00; + const signed int BITS_32 = 0x00000B00; + const signed int BITS_48 = 0x00000C00; + const signed int BITS_64 = 0x00000D00; + const signed int BITS_128 = 0x00000E00; + const signed int BITS_256 = 0x00000F00; + const signed int BITS_512 = 0x00001000; + + + + DEF_REGISTER(tid, Arch_amdgpu_cdna2| SYSREG | BITS_32 | 0 , "amdgpu_cdna2"); + + DEF_REGISTER(invalid, Arch_amdgpu_cdna2| SYSREG | BITS_32 | 1 , "amdgpu_cdna2"); + DEF_REGISTER(pc_all, Arch_amdgpu_cdna2| PC | BITS_48 | 0 , "amdgpu_cdna2"); + + + DEF_REGISTER(src_scc, Arch_amdgpu_cdna2| HWR | BITS_32 | 0 , "amdgpu_cdna2"); + + + DEF_REGISTER(src_vccz, Arch_amdgpu_cdna2| HWR | BITS_1 | 1 , "amdgpu_cdna2"); + DEF_REGISTER(vcc_lo, Arch_amdgpu_cdna2| HWR | BITS_32 | 2 , "amdgpu_cdna2"); + DEF_REGISTER(vcc_hi, Arch_amdgpu_cdna2| HWR | BITS_32 | 3 , "amdgpu_cdna2"); + DEF_REGISTER(vcc, Arch_amdgpu_cdna2| HWR | BITS_64 | 2 , "amdgpu_cdna2"); + + + + DEF_REGISTER(src_execz, Arch_amdgpu_cdna2| HWR | BITS_1 | 4 , "amdgpu_cdna2"); + DEF_REGISTER(exec_lo, Arch_amdgpu_cdna2| HWR | BITS_32 | 5 , "amdgpu_cdna2"); + DEF_REGISTER(exec_hi, Arch_amdgpu_cdna2| HWR | BITS_32 | 6 , "amdgpu_cdna2"); + DEF_REGISTER(exec, Arch_amdgpu_cdna2| HWR | BITS_64 | 5 , "amdgpu_cdna2"); + + + DEF_REGISTER(flat_scratch_lo, Arch_amdgpu_cdna2| HWR | BITS_64 | 7 , "amdgpu_cdna2"); + DEF_REGISTER(flat_scratch_hi, Arch_amdgpu_cdna2| HWR | BITS_32 | 8 , "amdgpu_cdna2"); + DEF_REGISTER(flat_scratch_all, Arch_amdgpu_cdna2| HWR | BITS_32 | 7 , "amdgpu_cdna2"); + + DEF_REGISTER(m0, Arch_amdgpu_cdna2| HWR | BITS_32 | 10 , "amdgpu_cdna2"); + + DEF_REGISTER(src_literal, Arch_amdgpu_cdna2| HWR | BITS_32 | 11 , "amdgpu_cdna2");// TODO + DEF_REGISTER(src_pops_exiting_wave_id, Arch_amdgpu_cdna2| HWR | BITS_32 | 12 , "amdgpu_cdna2");// TODO + + DEF_REGISTER(src_private_base, Arch_amdgpu_cdna2| HWR | BITS_32 | 13 , "amdgpu_cdna2"); + DEF_REGISTER(src_private_limit, Arch_amdgpu_cdna2| HWR | BITS_32 | 14 , "amdgpu_cdna2"); + DEF_REGISTER(src_shared_base, Arch_amdgpu_cdna2| HWR | BITS_32 | 15 , "amdgpu_cdna2"); + DEF_REGISTER(src_shared_limit, Arch_amdgpu_cdna2| HWR | BITS_32 | 16, "amdgpu_cdna2"); + + DEF_REGISTER(xnack_mask_lo, Arch_amdgpu_cdna2| HWR | BITS_32 | 17, "amdgpu_cdna2"); + DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_cdna2| HWR | BITS_32 | 18, "amdgpu_cdna2"); + + + DEF_REGISTER(ttmp0, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 0 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp1, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 1 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp2, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 2 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp3, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 3 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp4, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 4 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp5, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 5 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp6, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 6 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp7, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 7 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp8, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 8 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp9, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 9 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp10, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 10 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp11, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 11 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp12, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 12 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp13, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 13 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp14, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 14 , "amdgpu_cdna2"); + DEF_REGISTER(ttmp15, Arch_amdgpu_cdna2| TTMP_SGPR | BITS_32 | 15 , "amdgpu_cdna2"); + + + + DEF_REGISTER(mrt0, Arch_amdgpu_cdna2| TGT | BITS_32 | 0 , "amdgpu_cdna2"); + DEF_REGISTER(mrt1, Arch_amdgpu_cdna2| TGT | BITS_32 | 1 , "amdgpu_cdna2"); + DEF_REGISTER(mrt2, Arch_amdgpu_cdna2| TGT | BITS_32 | 2 , "amdgpu_cdna2"); + DEF_REGISTER(mrt3, Arch_amdgpu_cdna2| TGT | BITS_32 | 3 , "amdgpu_cdna2"); + DEF_REGISTER(mrt4, Arch_amdgpu_cdna2| TGT | BITS_32 | 4 , "amdgpu_cdna2"); + DEF_REGISTER(mrt5, Arch_amdgpu_cdna2| TGT | BITS_32 | 5 , "amdgpu_cdna2"); + DEF_REGISTER(mrt6, Arch_amdgpu_cdna2| TGT | BITS_32 | 6 , "amdgpu_cdna2"); + DEF_REGISTER(mrt7, Arch_amdgpu_cdna2| TGT | BITS_32 | 7 , "amdgpu_cdna2"); + DEF_REGISTER(mrtz, Arch_amdgpu_cdna2| TGT | BITS_32 | 8 , "amdgpu_cdna2"); + DEF_REGISTER(null, Arch_amdgpu_cdna2| TGT | BITS_32 | 9 , "amdgpu_cdna2"); + DEF_REGISTER(pos0, Arch_amdgpu_cdna2| TGT | BITS_32 | 12 , "amdgpu_cdna2"); + DEF_REGISTER(pos1, Arch_amdgpu_cdna2| TGT | BITS_32 | 13 , "amdgpu_cdna2"); + DEF_REGISTER(pos2, Arch_amdgpu_cdna2| TGT | BITS_32 | 14 , "amdgpu_cdna2"); + DEF_REGISTER(pos3, Arch_amdgpu_cdna2| TGT | BITS_32 | 15 , "amdgpu_cdna2"); + DEF_REGISTER(param0, Arch_amdgpu_cdna2| TGT | BITS_32 | 32 , "amdgpu_cdna2"); + DEF_REGISTER(param1, Arch_amdgpu_cdna2| TGT | BITS_32 | 33 , "amdgpu_cdna2"); + DEF_REGISTER(param2, Arch_amdgpu_cdna2| TGT | BITS_32 | 34 , "amdgpu_cdna2"); + DEF_REGISTER(param3, Arch_amdgpu_cdna2| TGT | BITS_32 | 35 , "amdgpu_cdna2"); + DEF_REGISTER(param4, Arch_amdgpu_cdna2| TGT | BITS_32 | 36 , "amdgpu_cdna2"); + DEF_REGISTER(param5, Arch_amdgpu_cdna2| TGT | BITS_32 | 37 , "amdgpu_cdna2"); + DEF_REGISTER(param6, Arch_amdgpu_cdna2| TGT | BITS_32 | 38 , "amdgpu_cdna2"); + DEF_REGISTER(param7, Arch_amdgpu_cdna2| TGT | BITS_32 | 39 , "amdgpu_cdna2"); + DEF_REGISTER(param8, Arch_amdgpu_cdna2| TGT | BITS_32 | 40 , "amdgpu_cdna2"); + DEF_REGISTER(param9, Arch_amdgpu_cdna2| TGT | BITS_32 | 41 , "amdgpu_cdna2"); + DEF_REGISTER(param10, Arch_amdgpu_cdna2| TGT | BITS_32 | 42 , "amdgpu_cdna2"); + DEF_REGISTER(param11, Arch_amdgpu_cdna2| TGT | BITS_32 | 43 , "amdgpu_cdna2"); + DEF_REGISTER(param12, Arch_amdgpu_cdna2| TGT | BITS_32 | 44 , "amdgpu_cdna2"); + DEF_REGISTER(param13, Arch_amdgpu_cdna2| TGT | BITS_32 | 45 , "amdgpu_cdna2"); + DEF_REGISTER(param14, Arch_amdgpu_cdna2| TGT | BITS_32 | 46 , "amdgpu_cdna2"); + DEF_REGISTER(param15, Arch_amdgpu_cdna2| TGT | BITS_32 | 47 , "amdgpu_cdna2"); + DEF_REGISTER(param16, Arch_amdgpu_cdna2| TGT | BITS_32 | 48 , "amdgpu_cdna2"); + DEF_REGISTER(param17, Arch_amdgpu_cdna2| TGT | BITS_32 | 49 , "amdgpu_cdna2"); + DEF_REGISTER(param18, Arch_amdgpu_cdna2| TGT | BITS_32 | 50 , "amdgpu_cdna2"); + DEF_REGISTER(param19, Arch_amdgpu_cdna2| TGT | BITS_32 | 51 , "amdgpu_cdna2"); + DEF_REGISTER(param20, Arch_amdgpu_cdna2| TGT | BITS_32 | 52 , "amdgpu_cdna2"); + DEF_REGISTER(param21, Arch_amdgpu_cdna2| TGT | BITS_32 | 53 , "amdgpu_cdna2"); + DEF_REGISTER(param22, Arch_amdgpu_cdna2| TGT | BITS_32 | 54 , "amdgpu_cdna2"); + DEF_REGISTER(param23, Arch_amdgpu_cdna2| TGT | BITS_32 | 55 , "amdgpu_cdna2"); + DEF_REGISTER(param24, Arch_amdgpu_cdna2| TGT | BITS_32 | 56 , "amdgpu_cdna2"); + DEF_REGISTER(param25, Arch_amdgpu_cdna2| TGT | BITS_32 | 57 , "amdgpu_cdna2"); + DEF_REGISTER(param26, Arch_amdgpu_cdna2| TGT | BITS_32 | 58 , "amdgpu_cdna2"); + DEF_REGISTER(param27, Arch_amdgpu_cdna2| TGT | BITS_32 | 59 , "amdgpu_cdna2"); + DEF_REGISTER(param28, Arch_amdgpu_cdna2| TGT | BITS_32 | 60 , "amdgpu_cdna2"); + DEF_REGISTER(param29, Arch_amdgpu_cdna2| TGT | BITS_32 | 61 , "amdgpu_cdna2"); + DEF_REGISTER(param30, Arch_amdgpu_cdna2| TGT | BITS_32 | 62 , "amdgpu_cdna2"); + DEF_REGISTER(param31, Arch_amdgpu_cdna2| TGT | BITS_32 | 63 , "amdgpu_cdna2"); + + DEF_REGISTER(attr0, Arch_amdgpu_cdna2| ATTR | BITS_32 | 0 , "amdgpu_cdna2"); + DEF_REGISTER(attr1, Arch_amdgpu_cdna2| ATTR | BITS_32 | 1 , "amdgpu_cdna2"); + DEF_REGISTER(attr2, Arch_amdgpu_cdna2| ATTR | BITS_32 | 2 , "amdgpu_cdna2"); + DEF_REGISTER(attr3, Arch_amdgpu_cdna2| ATTR | BITS_32 | 3 , "amdgpu_cdna2"); + DEF_REGISTER(attr4, Arch_amdgpu_cdna2| ATTR | BITS_32 | 4 , "amdgpu_cdna2"); + DEF_REGISTER(attr5, Arch_amdgpu_cdna2| ATTR | BITS_32 | 5 , "amdgpu_cdna2"); + DEF_REGISTER(attr6, Arch_amdgpu_cdna2| ATTR | BITS_32 | 6 , "amdgpu_cdna2"); + DEF_REGISTER(attr7, Arch_amdgpu_cdna2| ATTR | BITS_32 | 7 , "amdgpu_cdna2"); + DEF_REGISTER(attr8, Arch_amdgpu_cdna2| ATTR | BITS_32 | 8 , "amdgpu_cdna2"); + DEF_REGISTER(attr9, Arch_amdgpu_cdna2| ATTR | BITS_32 | 9 , "amdgpu_cdna2"); + DEF_REGISTER(attr10, Arch_amdgpu_cdna2| ATTR | BITS_32 | 10 , "amdgpu_cdna2"); + DEF_REGISTER(attr11, Arch_amdgpu_cdna2| ATTR | BITS_32 | 11 , "amdgpu_cdna2"); + DEF_REGISTER(attr12, Arch_amdgpu_cdna2| ATTR | BITS_32 | 12 , "amdgpu_cdna2"); + DEF_REGISTER(attr13, Arch_amdgpu_cdna2| ATTR | BITS_32 | 13 , "amdgpu_cdna2"); + DEF_REGISTER(attr14, Arch_amdgpu_cdna2| ATTR | BITS_32 | 14 , "amdgpu_cdna2"); + DEF_REGISTER(attr15, Arch_amdgpu_cdna2| ATTR | BITS_32 | 15 , "amdgpu_cdna2"); + DEF_REGISTER(attr16, Arch_amdgpu_cdna2| ATTR | BITS_32 | 16 , "amdgpu_cdna2"); + DEF_REGISTER(attr17, Arch_amdgpu_cdna2| ATTR | BITS_32 | 17 , "amdgpu_cdna2"); + DEF_REGISTER(attr18, Arch_amdgpu_cdna2| ATTR | BITS_32 | 18 , "amdgpu_cdna2"); + DEF_REGISTER(attr19, Arch_amdgpu_cdna2| ATTR | BITS_32 | 19 , "amdgpu_cdna2"); + DEF_REGISTER(attr20, Arch_amdgpu_cdna2| ATTR | BITS_32 | 20 , "amdgpu_cdna2"); + DEF_REGISTER(attr21, Arch_amdgpu_cdna2| ATTR | BITS_32 | 21 , "amdgpu_cdna2"); + DEF_REGISTER(attr22, Arch_amdgpu_cdna2| ATTR | BITS_32 | 22 , "amdgpu_cdna2"); + DEF_REGISTER(attr23, Arch_amdgpu_cdna2| ATTR | BITS_32 | 23 , "amdgpu_cdna2"); + DEF_REGISTER(attr24, Arch_amdgpu_cdna2| ATTR | BITS_32 | 24 , "amdgpu_cdna2"); + DEF_REGISTER(attr25, Arch_amdgpu_cdna2| ATTR | BITS_32 | 25 , "amdgpu_cdna2"); + DEF_REGISTER(attr26, Arch_amdgpu_cdna2| ATTR | BITS_32 | 26 , "amdgpu_cdna2"); + DEF_REGISTER(attr27, Arch_amdgpu_cdna2| ATTR | BITS_32 | 27 , "amdgpu_cdna2"); + DEF_REGISTER(attr28, Arch_amdgpu_cdna2| ATTR | BITS_32 | 28 , "amdgpu_cdna2"); + DEF_REGISTER(attr29, Arch_amdgpu_cdna2| ATTR | BITS_32 | 29 , "amdgpu_cdna2"); + DEF_REGISTER(attr30, Arch_amdgpu_cdna2| ATTR | BITS_32 | 30 , "amdgpu_cdna2"); + DEF_REGISTER(attr31, Arch_amdgpu_cdna2| ATTR | BITS_32 | 31 , "amdgpu_cdna2"); + DEF_REGISTER(attr32, Arch_amdgpu_cdna2| ATTR | BITS_32 | 32 , "amdgpu_cdna2"); + + + + DEF_REGISTER(p10, Arch_amdgpu_cdna2| PARAM | BITS_32 | 32 , "amdgpu_cdna2"); + DEF_REGISTER(p20, Arch_amdgpu_cdna2| PARAM | BITS_32 | 32 , "amdgpu_cdna2"); + DEF_REGISTER(p0, Arch_amdgpu_cdna2| PARAM | BITS_32 | 32 , "amdgpu_cdna2"); + +#include "AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h" } - namespace cuda { - const signed int GPR = 0x00000000; - const signed int PR = 0x00010000; - const signed int BR = 0x00020000; - const signed int UR = 0x00040000; - const signed int UPR = 0x00080000; - - // General purpose registers - DEF_REGISTER(r0, 0 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r1, 1 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r2, 2 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r3, 3 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r4, 4 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r5, 5 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r6, 6 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r7, 7 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r8, 8 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r9, 9 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r10, 10 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r11, 11 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r12, 12 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r13, 13 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r14, 14 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r15, 15 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r16, 16 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r17, 17 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r18, 18 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r19, 19 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r20, 20 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r21, 21 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r22, 22 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r23, 23 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r24, 24 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r25, 25 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r26, 26 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r27, 27 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r28, 28 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r29, 29 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r30, 30 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r31, 31 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r32, 32 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r33, 33 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r34, 34 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r35, 35 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r36, 36 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r37, 37 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r38, 38 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r39, 39 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r40, 40 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r41, 41 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r42, 42 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r43, 43 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r44, 44 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r45, 45 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r46, 46 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r47, 47 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r48, 48 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r49, 49 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r50, 50 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r51, 51 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r52, 52 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r53, 53 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r54, 54 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r55, 55 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r56, 56 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r57, 57 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r58, 58 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r59, 59 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r60, 60 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r61, 61 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r62, 62 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r63, 63 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r64, 64 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r65, 65 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r66, 66 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r67, 67 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r68, 68 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r69, 69 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r70, 70 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r71, 71 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r72, 72 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r73, 73 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r74, 74 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r75, 75 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r76, 76 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r77, 77 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r78, 78 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r79, 79 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r80, 80 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r81, 81 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r82, 82 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r83, 83 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r84, 84 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r85, 85 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r86, 86 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r87, 87 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r88, 88 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r89, 89 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r90, 90 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r91, 91 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r92, 92 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r93, 93 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r94, 94 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r95, 95 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r96, 96 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r97, 97 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r98, 98 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r99, 99 | GPR | Arch_cuda, "cuda"); - DEF_REGISTER(r100, 100 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r101, 101 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r102, 102 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r103, 103 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r104, 104 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r105, 105 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r106, 106 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r107, 107 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r108, 108 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r109, 109 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r110, 110 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r111, 111 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r112, 112 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r113, 113 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r114, 114 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r115, 115 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r116, 116 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r117, 117 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r118, 118 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r119, 119 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r120, 120 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r121, 121 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r122, 122 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r123, 123 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r124, 124 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r125, 125 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r126, 126 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r127, 127 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r128, 128 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r129, 129 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r130, 130 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r131, 131 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r132, 132 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r133, 133 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r134, 134 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r135, 135 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r136, 136 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r137, 137 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r138, 138 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r139, 139 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r140, 140 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r141, 141 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r142, 142 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r143, 143 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r144, 144 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r145, 145 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r146, 146 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r147, 147 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r148, 148 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r149, 149 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r150, 150 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r151, 151 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r152, 152 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r153, 153 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r154, 154 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r155, 155 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r156, 156 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r157, 157 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r158, 158 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r159, 159 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r160, 160 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r161, 161 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r162, 162 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r163, 163 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r164, 164 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r165, 165 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r166, 166 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r167, 167 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r168, 168 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r169, 169 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r170, 170 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r171, 171 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r172, 172 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r173, 173 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r174, 174 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r175, 175 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r176, 176 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r177, 177 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r178, 178 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r179, 179 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r180, 180 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r181, 181 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r182, 182 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r183, 183 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r184, 184 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r185, 185 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r186, 186 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r187, 187 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r188, 188 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r189, 189 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r190, 190 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r191, 191 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r192, 192 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r193, 193 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r194, 194 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r195, 195 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r196, 196 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r197, 197 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r198, 198 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r199, 199 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r200, 200 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r201, 201 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r202, 202 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r203, 203 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r204, 204 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r205, 205 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r206, 206 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r207, 207 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r208, 208 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r209, 209 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r210, 210 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r211, 211 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r212, 212 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r213, 213 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r214, 214 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r215, 215 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r216, 216 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r217, 217 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r218, 218 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r219, 219 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r220, 220 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r221, 221 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r222, 222 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r223, 223 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r224, 224 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r225, 225 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r226, 226 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r227, 227 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r228, 228 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r229, 229 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r230, 230 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r231, 231 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r232, 232 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r233, 233 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r234, 234 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r235, 235 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r236, 236 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r237, 237 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r238, 238 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r239, 239 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r240, 240 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r241, 241 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r242, 242 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r243, 243 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r244, 244 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r245, 245 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r246, 246 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r247, 247 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r248, 248 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r249, 249 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r250, 250 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r251, 251 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r252, 252 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r253, 253 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r254, 254 | GPR| Arch_cuda, "cuda"); - DEF_REGISTER(r255, 255 | GPR| Arch_cuda, "cuda"); - - // uniform registers - DEF_REGISTER(ur0, 0 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur1, 1 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur2, 2 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur3, 3 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur4, 4 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur5, 5 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur6, 6 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur7, 7 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur8, 8 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur9, 9 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur10, 10 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur11, 11 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur12, 12 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur13, 13 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur14, 14 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur15, 15 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur16, 16 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur17, 17 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur18, 18 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur19, 19 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur20, 20 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur21, 21 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur22, 22 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur23, 23 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur24, 24 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur25, 25 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur26, 26 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur27, 27 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur28, 28 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur29, 29 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur30, 30 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur31, 31 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur32, 32 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur33, 33 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur34, 34 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur35, 35 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur36, 36 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur37, 37 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur38, 38 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur39, 39 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur40, 40 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur41, 41 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur42, 42 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur43, 43 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur44, 44 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur45, 45 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur46, 46 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur47, 47 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur48, 48 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur49, 49 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur50, 50 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur51, 51 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur52, 52 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur53, 53 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur54, 54 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur55, 55 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur56, 56 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur57, 57 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur58, 58 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur59, 59 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur60, 60 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur61, 61 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur62, 62 | UR | Arch_cuda, "cuda"); - DEF_REGISTER(ur63, 63 | UR | Arch_cuda, "cuda"); - - // Placeholder for a pc register, so that we don't assert - DEF_REGISTER(pc, 256 | GPR| Arch_cuda, "cuda"); - - // Predicate registers used as source or dest operands - // Different from a predicate register used as instruction predicate, - // which is handle by operand::isTruePredicate and operand::isFalsePredicate - DEF_REGISTER(p0, 0 | PR | Arch_cuda, "cuda"); - DEF_REGISTER(p1, 1 | PR | Arch_cuda, "cuda"); - DEF_REGISTER(p2, 2 | PR | Arch_cuda, "cuda"); - DEF_REGISTER(p3, 3 | PR | Arch_cuda, "cuda"); - DEF_REGISTER(p4, 4 | PR | Arch_cuda, "cuda"); - DEF_REGISTER(p5, 5 | PR | Arch_cuda, "cuda"); - DEF_REGISTER(p6, 6 | PR | Arch_cuda, "cuda"); - - DEF_REGISTER(b1, 1 | BR | Arch_cuda, "cuda"); - DEF_REGISTER(b2, 2 | BR | Arch_cuda, "cuda"); - DEF_REGISTER(b3, 3 | BR | Arch_cuda, "cuda"); - DEF_REGISTER(b4, 4 | BR | Arch_cuda, "cuda"); - DEF_REGISTER(b5, 5 | BR | Arch_cuda, "cuda"); - DEF_REGISTER(b6, 6 | BR | Arch_cuda, "cuda"); - - // XXX(Keren): not sure how many uprs, use 16 for safety - DEF_REGISTER(up0, 0 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up1, 1 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up2, 2 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up3, 3 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up4, 4 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up5, 5 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up6, 6 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up7, 7 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up8, 8 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up9, 9 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up10, 10 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up11, 11 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up12, 12 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up13, 13 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up14, 14 | UPR | Arch_cuda, "cuda"); - DEF_REGISTER(up15, 15 | UPR | Arch_cuda, "cuda"); - } //end of cuda namespace + + namespace cuda { + const signed int GPR = 0x00000000; + const signed int PR = 0x00010000; + const signed int BR = 0x00020000; + const signed int UR = 0x00040000; + const signed int UPR = 0x00080000; + + // General purpose registers + DEF_REGISTER(r0, 0 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r1, 1 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r2, 2 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r3, 3 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r4, 4 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r5, 5 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r6, 6 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r7, 7 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r8, 8 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r9, 9 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r10, 10 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r11, 11 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r12, 12 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r13, 13 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r14, 14 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r15, 15 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r16, 16 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r17, 17 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r18, 18 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r19, 19 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r20, 20 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r21, 21 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r22, 22 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r23, 23 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r24, 24 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r25, 25 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r26, 26 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r27, 27 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r28, 28 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r29, 29 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r30, 30 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r31, 31 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r32, 32 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r33, 33 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r34, 34 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r35, 35 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r36, 36 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r37, 37 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r38, 38 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r39, 39 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r40, 40 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r41, 41 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r42, 42 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r43, 43 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r44, 44 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r45, 45 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r46, 46 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r47, 47 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r48, 48 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r49, 49 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r50, 50 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r51, 51 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r52, 52 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r53, 53 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r54, 54 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r55, 55 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r56, 56 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r57, 57 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r58, 58 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r59, 59 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r60, 60 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r61, 61 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r62, 62 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r63, 63 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r64, 64 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r65, 65 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r66, 66 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r67, 67 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r68, 68 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r69, 69 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r70, 70 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r71, 71 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r72, 72 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r73, 73 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r74, 74 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r75, 75 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r76, 76 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r77, 77 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r78, 78 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r79, 79 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r80, 80 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r81, 81 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r82, 82 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r83, 83 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r84, 84 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r85, 85 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r86, 86 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r87, 87 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r88, 88 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r89, 89 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r90, 90 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r91, 91 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r92, 92 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r93, 93 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r94, 94 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r95, 95 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r96, 96 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r97, 97 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r98, 98 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r99, 99 | GPR | Arch_cuda, "cuda"); + DEF_REGISTER(r100, 100 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r101, 101 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r102, 102 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r103, 103 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r104, 104 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r105, 105 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r106, 106 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r107, 107 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r108, 108 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r109, 109 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r110, 110 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r111, 111 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r112, 112 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r113, 113 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r114, 114 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r115, 115 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r116, 116 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r117, 117 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r118, 118 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r119, 119 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r120, 120 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r121, 121 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r122, 122 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r123, 123 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r124, 124 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r125, 125 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r126, 126 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r127, 127 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r128, 128 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r129, 129 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r130, 130 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r131, 131 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r132, 132 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r133, 133 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r134, 134 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r135, 135 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r136, 136 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r137, 137 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r138, 138 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r139, 139 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r140, 140 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r141, 141 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r142, 142 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r143, 143 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r144, 144 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r145, 145 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r146, 146 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r147, 147 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r148, 148 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r149, 149 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r150, 150 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r151, 151 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r152, 152 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r153, 153 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r154, 154 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r155, 155 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r156, 156 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r157, 157 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r158, 158 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r159, 159 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r160, 160 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r161, 161 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r162, 162 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r163, 163 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r164, 164 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r165, 165 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r166, 166 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r167, 167 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r168, 168 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r169, 169 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r170, 170 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r171, 171 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r172, 172 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r173, 173 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r174, 174 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r175, 175 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r176, 176 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r177, 177 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r178, 178 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r179, 179 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r180, 180 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r181, 181 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r182, 182 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r183, 183 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r184, 184 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r185, 185 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r186, 186 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r187, 187 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r188, 188 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r189, 189 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r190, 190 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r191, 191 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r192, 192 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r193, 193 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r194, 194 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r195, 195 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r196, 196 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r197, 197 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r198, 198 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r199, 199 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r200, 200 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r201, 201 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r202, 202 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r203, 203 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r204, 204 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r205, 205 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r206, 206 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r207, 207 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r208, 208 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r209, 209 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r210, 210 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r211, 211 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r212, 212 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r213, 213 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r214, 214 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r215, 215 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r216, 216 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r217, 217 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r218, 218 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r219, 219 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r220, 220 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r221, 221 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r222, 222 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r223, 223 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r224, 224 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r225, 225 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r226, 226 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r227, 227 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r228, 228 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r229, 229 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r230, 230 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r231, 231 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r232, 232 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r233, 233 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r234, 234 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r235, 235 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r236, 236 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r237, 237 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r238, 238 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r239, 239 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r240, 240 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r241, 241 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r242, 242 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r243, 243 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r244, 244 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r245, 245 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r246, 246 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r247, 247 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r248, 248 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r249, 249 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r250, 250 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r251, 251 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r252, 252 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r253, 253 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r254, 254 | GPR| Arch_cuda, "cuda"); + DEF_REGISTER(r255, 255 | GPR| Arch_cuda, "cuda"); + + // uniform registers + DEF_REGISTER(ur0, 0 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur1, 1 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur2, 2 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur3, 3 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur4, 4 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur5, 5 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur6, 6 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur7, 7 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur8, 8 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur9, 9 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur10, 10 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur11, 11 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur12, 12 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur13, 13 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur14, 14 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur15, 15 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur16, 16 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur17, 17 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur18, 18 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur19, 19 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur20, 20 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur21, 21 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur22, 22 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur23, 23 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur24, 24 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur25, 25 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur26, 26 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur27, 27 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur28, 28 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur29, 29 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur30, 30 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur31, 31 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur32, 32 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur33, 33 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur34, 34 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur35, 35 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur36, 36 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur37, 37 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur38, 38 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur39, 39 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur40, 40 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur41, 41 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur42, 42 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur43, 43 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur44, 44 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur45, 45 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur46, 46 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur47, 47 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur48, 48 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur49, 49 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur50, 50 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur51, 51 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur52, 52 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur53, 53 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur54, 54 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur55, 55 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur56, 56 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur57, 57 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur58, 58 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur59, 59 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur60, 60 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur61, 61 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur62, 62 | UR | Arch_cuda, "cuda"); + DEF_REGISTER(ur63, 63 | UR | Arch_cuda, "cuda"); + + // Placeholder for a pc register, so that we don't assert + DEF_REGISTER(pc, 256 | GPR| Arch_cuda, "cuda"); + + // Predicate registers used as source or dest operands + // Different from a predicate register used as instruction predicate, + // which is handle by operand::isTruePredicate and operand::isFalsePredicate + DEF_REGISTER(p0, 0 | PR | Arch_cuda, "cuda"); + DEF_REGISTER(p1, 1 | PR | Arch_cuda, "cuda"); + DEF_REGISTER(p2, 2 | PR | Arch_cuda, "cuda"); + DEF_REGISTER(p3, 3 | PR | Arch_cuda, "cuda"); + DEF_REGISTER(p4, 4 | PR | Arch_cuda, "cuda"); + DEF_REGISTER(p5, 5 | PR | Arch_cuda, "cuda"); + DEF_REGISTER(p6, 6 | PR | Arch_cuda, "cuda"); + + DEF_REGISTER(b1, 1 | BR | Arch_cuda, "cuda"); + DEF_REGISTER(b2, 2 | BR | Arch_cuda, "cuda"); + DEF_REGISTER(b3, 3 | BR | Arch_cuda, "cuda"); + DEF_REGISTER(b4, 4 | BR | Arch_cuda, "cuda"); + DEF_REGISTER(b5, 5 | BR | Arch_cuda, "cuda"); + DEF_REGISTER(b6, 6 | BR | Arch_cuda, "cuda"); + + // XXX(Keren): not sure how many uprs, use 16 for safety + DEF_REGISTER(up0, 0 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up1, 1 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up2, 2 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up3, 3 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up4, 4 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up5, 5 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up6, 6 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up7, 7 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up8, 8 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up9, 9 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up10, 10 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up11, 11 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up12, 12 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up13, 13 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up14, 14 | UPR | Arch_cuda, "cuda"); + DEF_REGISTER(up15, 15 | UPR | Arch_cuda, "cuda"); + } //end of cuda namespace } #endif diff --git a/common/h/entryIDs.h b/common/h/entryIDs.h index 60a7843197..f812f84045 100644 --- a/common/h/entryIDs.h +++ b/common/h/entryIDs.h @@ -3008,6 +3008,8 @@ power_op_dxex, aarch64_op_zip2_advsimd, amdgpu_op_sop1_nop, #include "amdgpu_op_table.h" +#include "amdgpu_cdna_op_table.h" +#include "amdgpu_cdna2_op_table.h" cuda_op_general, cuda_op_call, intel_gpu_op_general, diff --git a/common/src/dyn_regs.C b/common/src/dyn_regs.C index ab433db538..9ecddaa534 100644 --- a/common/src/dyn_regs.C +++ b/common/src/dyn_regs.C @@ -109,6 +109,27 @@ MachRegister MachRegister::getBaseRegister() const { default: return *this; } + case Arch_amdgpu_cdna2: + switch (category){ + case amdgpu_cdna2::SGPR: + case amdgpu_cdna2::SGPR_VEC2: + case amdgpu_cdna2::SGPR_VEC4: + case amdgpu_cdna2::SGPR_VEC8: + case amdgpu_cdna2::SGPR_VEC16: + return MachRegister( (reg & 0x000000ff) | amdgpu_cdna2::s0); + case amdgpu_cdna2::VGPR: + case amdgpu_cdna2::VGPR_VEC2: + case amdgpu_cdna2::VGPR_VEC4: + case amdgpu_cdna2::VGPR_VEC8: + case amdgpu_cdna2::VGPR_VEC16: + return MachRegister( (reg & 0x000000ff) | amdgpu_cdna2::v0); + case amdgpu_cdna2::HWR: + return MachRegister(reg); + + default: + return *this; + } + case Arch_aarch32: case Arch_aarch64: case Arch_intelGen9: @@ -116,11 +137,12 @@ MachRegister MachRegister::getBaseRegister() const { //not verified return *this; default: - return InvalidReg; + return InvalidReg; } return InvalidReg; } + Architecture MachRegister::getArchitecture() const { return (Architecture) (reg & 0xff000000); } @@ -160,41 +182,51 @@ std::string MachRegister::name() const { switch(category){ case amdgpu_vega::SGPR_VEC2: base_val -= (amdgpu_vega::sgpr_vec2_0&0xff); - ret = std::string("SGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+1)+"]"); + ret = "SGPR["+std::to_string(base_val)+":"+std::to_string(base_val+1)+"]"; break; case amdgpu_vega::VGPR_VEC2: base_val -= (amdgpu_vega::vgpr_vec2_0&0xff); - ret = std::string("VGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+1)+"]"); + ret = "VGPR["+std::to_string(base_val)+":"+std::to_string(base_val+1)+"]"; break; case amdgpu_vega::SGPR_VEC4: base_val -= (amdgpu_vega::sgpr_vec4_0&0xff); - ret = std::string("SGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+3)+"]"); + ret = "SGPR["+std::to_string(base_val)+":"+std::to_string(base_val+3)+"]"; break; case amdgpu_vega::VGPR_VEC4: base_val -= (amdgpu_vega::vgpr_vec4_0&0xff); - ret = std::string("VGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+3)+"]"); + ret = "VGPR["+std::to_string(base_val)+":"+std::to_string(base_val+3)+"]"; break; case amdgpu_vega::SGPR_VEC8: base_val -= (amdgpu_vega::sgpr_vec8_0&0xff); - ret = std::string("SGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+7)+"]"); + ret = "SGPR["+std::to_string(base_val)+":"+std::to_string(base_val+7)+"]"; break; case amdgpu_vega::VGPR_VEC8: base_val -= (amdgpu_vega::vgpr_vec8_0&0xff); - ret = std::string("VGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+7)+"]"); + ret = "VGPR["+std::to_string(base_val)+":"+std::to_string(base_val+7)+"]"; break; case amdgpu_vega::SGPR_VEC16: base_val -= (amdgpu_vega::sgpr_vec16_0&0xff); - ret = std::string("SGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+15)+"]"); + ret = "SGPR["+std::to_string(base_val)+":"+std::to_string(base_val+15)+"]"; break; case amdgpu_vega::VGPR_VEC16: base_val -= (amdgpu_vega::vgpr_vec16_0&0xff); - ret = std::string("VGPR["+std::to_string(base_val)+"-"+std::to_string(base_val+15)+"]"); + ret = "VGPR["+std::to_string(base_val)+":"+std::to_string(base_val+15)+"]"; + break; + default: + ret = iter->second; break; + } + return ret; + }else if(getArchitecture() == Arch_amdgpu_cdna2){ + signed int category = reg & 0x00ff0000; + signed int base_val = reg & 0x000000ff; + switch(category){ default: ret = iter->second; break; } return ret; + }else{ return iter->second; } @@ -271,91 +303,134 @@ unsigned int MachRegister::size() const { return 8; } case Arch_aarch32: - assert(0); - break; - + assert(0); + break; + case Arch_cuda: - return 8; + return 8; case Arch_amdgpu_vega:{ - int reg_class = (reg&0x00ff0000 ) ; - if ( reg_class == amdgpu_vega::SGPR || reg_class == amdgpu_vega::VGPR){ - return 4; - }else if (reg_class == amdgpu_vega::SGPR_VEC2 || reg_class == amdgpu_vega::VGPR_VEC2){ - return 8; - }else if (reg_class == amdgpu_vega::SGPR_VEC4 || reg_class == amdgpu_vega::VGPR_VEC4){ - return 16; - }else if (reg_class == amdgpu_vega::SGPR_VEC8 || reg_class == amdgpu_vega::VGPR_VEC8){ - return 32; - }else if (reg_class == amdgpu_vega::SGPR_VEC16 || reg_class == amdgpu_vega::VGPR_VEC16){ - return 64; - }else{ - switch(reg & 0x00007f00){ - case amdgpu_vega::BITS_1: - case amdgpu_vega::BITS_2: - case amdgpu_vega::BITS_3: - case amdgpu_vega::BITS_4: - case amdgpu_vega::BITS_6: - case amdgpu_vega::BITS_7: - case amdgpu_vega::BITS_8: - return 1; - case amdgpu_vega::BITS_9: - case amdgpu_vega::BITS_15: - case amdgpu_vega::BITS_16: - return 2; - case amdgpu_vega::BITS_32: - return 4; - case amdgpu_vega::BITS_48: - case amdgpu_vega::BITS_64: - return 8; - case amdgpu_vega::BITS_128: - return 16; - case amdgpu_vega::BITS_256: - return 32; - case amdgpu_vega::BITS_512: - return 64; - } - common_parsing_printf(" unknown reg size %x\n", (unsigned int)reg); - assert(0); - } - } + int reg_class = (reg&0x00ff0000 ) ; + if ( reg_class == amdgpu_vega::SGPR || reg_class == amdgpu_vega::VGPR){ + return 4; + }else if (reg_class == amdgpu_vega::SGPR_VEC2 || reg_class == amdgpu_vega::VGPR_VEC2){ + return 8; + }else if (reg_class == amdgpu_vega::SGPR_VEC4 || reg_class == amdgpu_vega::VGPR_VEC4){ + return 16; + }else if (reg_class == amdgpu_vega::SGPR_VEC8 || reg_class == amdgpu_vega::VGPR_VEC8){ + return 32; + }else if (reg_class == amdgpu_vega::SGPR_VEC16 || reg_class == amdgpu_vega::VGPR_VEC16){ + return 64; + }else{ + switch(reg & 0x00007f00){ + case amdgpu_vega::BITS_1: + case amdgpu_vega::BITS_2: + case amdgpu_vega::BITS_3: + case amdgpu_vega::BITS_4: + case amdgpu_vega::BITS_6: + case amdgpu_vega::BITS_7: + case amdgpu_vega::BITS_8: + return 1; + case amdgpu_vega::BITS_9: + case amdgpu_vega::BITS_15: + case amdgpu_vega::BITS_16: + return 2; + case amdgpu_vega::BITS_32: + return 4; + case amdgpu_vega::BITS_48: + case amdgpu_vega::BITS_64: + return 8; + case amdgpu_vega::BITS_128: + return 16; + case amdgpu_vega::BITS_256: + return 32; + case amdgpu_vega::BITS_512: + return 64; + } + common_parsing_printf(" unknown reg size %x\n", (unsigned int)reg); + assert(0); + } + } + case Arch_amdgpu_cdna2:{ + int reg_class = (reg&0x00ff0000 ) ; + if ( reg_class == amdgpu_cdna2::SGPR || reg_class == amdgpu_cdna2::VGPR){ + return 4; + }else if (reg_class == amdgpu_cdna2::SGPR_VEC2 || reg_class == amdgpu_cdna2::VGPR_VEC2){ + return 8; + }else if (reg_class == amdgpu_cdna2::SGPR_VEC4 || reg_class == amdgpu_cdna2::VGPR_VEC4){ + return 16; + }else if (reg_class == amdgpu_cdna2::SGPR_VEC8 || reg_class == amdgpu_cdna2::VGPR_VEC8){ + return 32; + }else if (reg_class == amdgpu_cdna2::SGPR_VEC16 || reg_class == amdgpu_cdna2::VGPR_VEC16){ + return 64; + }else{ + switch(reg & 0x00007f00){ + case amdgpu_cdna2::BITS_1: + case amdgpu_cdna2::BITS_2: + case amdgpu_cdna2::BITS_3: + case amdgpu_cdna2::BITS_4: + case amdgpu_cdna2::BITS_6: + case amdgpu_cdna2::BITS_7: + case amdgpu_cdna2::BITS_8: + return 1; + case amdgpu_cdna2::BITS_9: + case amdgpu_cdna2::BITS_15: + case amdgpu_cdna2::BITS_16: + return 2; + case amdgpu_cdna2::BITS_32: + return 4; + case amdgpu_cdna2::BITS_48: + return 6; + case amdgpu_cdna2::BITS_64: + return 8; + case amdgpu_cdna2::BITS_128: + return 16; + case amdgpu_cdna2::BITS_256: + return 32; + case amdgpu_cdna2::BITS_512: + return 64; + } + common_parsing_printf(" unknown reg size %x\n", (unsigned int)reg); + assert(0); + } + } + case Arch_aarch64:{ - if((reg & 0x00ff0000) == aarch64::FPR) - { - switch(reg & 0x0000ff00) - { - case aarch64::B_REG: return 1; - case aarch64::W_REG: return 2; - case aarch64::D_REG: return 4; - case aarch64::FULL: - case aarch64::HQ_REG: return 8; - case aarch64::Q_REG: return 16; - default: - assert(0); - return 0; - } - } - else if((reg & 0x00ff0000) == aarch64::GPR || (reg & 0x00ff0000) == aarch64::SPR || - (reg & 0x00ff0000) == aarch64::SYSREG || (reg & 0x00ff0000) == aarch64::FLAG) - switch(reg & 0x0000ff00) - { - case aarch64::FULL : return 8; - case aarch64::D_REG: return 4; - case aarch64::BIT: return 0; - default: return 0; - } - else - return 4; - break; - } - case Arch_amdgpu_rdna: + if((reg & 0x00ff0000) == aarch64::FPR) + { + switch(reg & 0x0000ff00) + { + case aarch64::B_REG: return 1; + case aarch64::W_REG: return 2; + case aarch64::D_REG: return 4; + case aarch64::FULL: + case aarch64::HQ_REG: return 8; + case aarch64::Q_REG: return 16; + default: + assert(0); + return 0; + } + } + else if((reg & 0x00ff0000) == aarch64::GPR || (reg & 0x00ff0000) == aarch64::SPR || + (reg & 0x00ff0000) == aarch64::SYSREG || (reg & 0x00ff0000) == aarch64::FLAG) + switch(reg & 0x0000ff00) + { + case aarch64::FULL : return 8; + case aarch64::D_REG: return 4; + case aarch64::BIT: return 0; + default: return 0; + } + else + return 4; + break; + } case Arch_intelGen9: - { - assert(0); - break; - } - + { + assert(0); + break; + } + case Arch_none: - return 0; + return 0; } return 0; //Unreachable, but disable warnings } @@ -399,7 +474,8 @@ MachRegister MachRegister::getPC(Dyninst::Architecture arch) return InvalidReg; case Arch_amdgpu_vega: return amdgpu_vega::pc; - case Arch_amdgpu_rdna: + case Arch_amdgpu_cdna2: + return amdgpu_cdna2::pc_all; case Arch_none: return InvalidReg; } @@ -424,7 +500,7 @@ MachRegister MachRegister::getReturnAddress(Dyninst::Architecture arch) case Arch_aarch32: case Arch_cuda: case Arch_amdgpu_vega: // TODO:Since amdgpu functions are all inlined, the return address is highly likely in sgpr[30:31] - case Arch_amdgpu_rdna: + case Arch_amdgpu_cdna2: case Arch_intelGen9: assert(0); case Arch_none: @@ -449,6 +525,7 @@ MachRegister MachRegister::getFramePointer(Dyninst::Architecture arch) return aarch64::x29; //aarch64: frame pointer is X29 by convention case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: case Arch_none: return InvalidReg; @@ -478,6 +555,8 @@ MachRegister MachRegister::getStackPointer(Dyninst::Architecture arch) assert(0); case Arch_none: case Arch_amdgpu_vega: + + case Arch_amdgpu_cdna2: return InvalidReg; default: assert(0); @@ -503,6 +582,7 @@ MachRegister MachRegister::getSyscallNumberReg(Dyninst::Architecture arch) case Arch_aarch32: case Arch_cuda: case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: assert(0); case Arch_none: return InvalidReg; @@ -598,6 +678,7 @@ MachRegister MachRegister::getZeroFlag(Dyninst::Architecture arch) return ppc64::cr0e; case Arch_cuda: case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: assert(0); case Arch_none: return InvalidReg; @@ -613,7 +694,7 @@ bool MachRegister::isPC() const { return (*this == x86_64::rip || *this == x86::eip || *this == ppc32::pc || *this == ppc64::pc || - *this == aarch64::pc ); + *this == aarch64::pc || *this == amdgpu_cdna2::pc_all ); } bool MachRegister::isFramePointer() const @@ -667,14 +748,16 @@ bool MachRegister::isFlag() const int baseID = reg & 0x0000FFFF; return (baseID <= 731 && baseID >= 700) || (baseID <= 629 && baseID >= 621); } - case Arch_amdgpu_vega:{ - return (reg & 0x0000F000); - } + case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: + { + return (reg & 0x0000F000); + } case Arch_cuda: - return false; + return false; default: - assert(!"Not implemented!"); + assert(!"Not implemented!"); } return false; } @@ -721,26 +804,26 @@ void MachRegister::getAMDGPUROSERegister(int ®_class, int ®_idx, int &offs reg_idx = baseID; switch(category){ case amdgpu_vega::SGPR:{ - reg_class = amdgpu_regclass_sgpr; - break; - } + reg_class = amdgpu_regclass_sgpr; + break; + } case amdgpu_vega::VGPR: { - reg_class = amdgpu_regclass_vgpr; - break; - } + reg_class = amdgpu_regclass_vgpr; + break; + } case amdgpu_vega::PC: { - reg_class = amdgpu_regclass_pc; - reg_idx = amdgpu_pc; - break; - } + reg_class = amdgpu_regclass_pc; + reg_idx = amdgpu_pc; + break; + } case amdgpu_vega::SGPR_VEC2:{ - reg_class = amdgpu_regclass_sgpr_vec2; - break; - } + reg_class = amdgpu_regclass_sgpr_vec2; + break; + } default:{ - assert(0 && "un suppoprted register type for amdgpu "); - } - + assert(0 && "un suppoprted register type for amdgpu "); + } + } return; } @@ -762,7 +845,8 @@ void MachRegister::getROSERegister(int &c, int &n, int &p) { // Rose: class, number, position // Dyninst: category, base id, subrange - if (getArchitecture()==Arch_amdgpu_vega){ + Architecture maybe_amdgpu = getArchitecture(); + if (maybe_amdgpu==Arch_amdgpu_vega || maybe_amdgpu == Arch_amdgpu_cdna2){ getAMDGPUROSERegister(c,n,p); return; } @@ -1069,75 +1153,75 @@ void MachRegister::getROSERegister(int &c, int &n, int &p) } break; case Arch_ppc32: - { - baseID = reg & 0x0000FFFF; - n = baseID; - switch(category) { - case ppc32::GPR: - c = powerpc_regclass_gpr; - break; - case ppc32::FPR: - case ppc32::FSR: - c = powerpc_regclass_fpr; - break; - case ppc32::SPR: - { - if(baseID < 613) { - c = powerpc_regclass_spr; - } else if(baseID < 621 ) { - c = powerpc_regclass_sr; - } else { - c = powerpc_regclass_cr; - n = 0; - p = baseID - 621; - /* n = baseID - 621; - if(n > 7) { - n = 0; - p = powerpc_condreggranularity_whole; - } else { - p = powerpc_condreggranularity_field; - } - */ + baseID = reg & 0x0000FFFF; + n = baseID; + switch(category) + { + case ppc32::GPR: + c = powerpc_regclass_gpr; + break; + case ppc32::FPR: + case ppc32::FSR: + c = powerpc_regclass_fpr; + break; + case ppc32::SPR: + { + if(baseID < 613) { + c = powerpc_regclass_spr; + } else if(baseID < 621 ) { + c = powerpc_regclass_sr; + } else { + c = powerpc_regclass_cr; + n = 0; + p = baseID - 621; + /* n = baseID - 621; + if(n > 7) { + n = 0; + p = powerpc_condreggranularity_whole; + } else { + p = powerpc_condreggranularity_field; + } + */ + } } - } - break; - default: - c = -1; - return; + break; + default: + c = -1; + return; + } + return; } - return; - } - break; + break; case Arch_ppc64: { - baseID = reg & 0x0000FFFF; - n = baseID; - switch (category) { - case ppc64::GPR: - c = powerpc_regclass_gpr; - break; - case ppc64::FPR: - case ppc64::FSR: - c = powerpc_regclass_fpr; - break; - case ppc64::SPR: { - if (baseID < 613) { - c = powerpc_regclass_spr; - } else if (baseID < 621) { - c = powerpc_regclass_sr; - } else { - c = powerpc_regclass_cr; - n = 0; - p = baseID - 621; - } - } break; - default: - c = -1; - return; - } - return; - } - break; + baseID = reg & 0x0000FFFF; + n = baseID; + switch (category) { + case ppc64::GPR: + c = powerpc_regclass_gpr; + break; + case ppc64::FPR: + case ppc64::FSR: + c = powerpc_regclass_fpr; + break; + case ppc64::SPR: { + if (baseID < 613) { + c = powerpc_regclass_spr; + } else if (baseID < 621) { + c = powerpc_regclass_sr; + } else { + c = powerpc_regclass_cr; + n = 0; + p = baseID - 621; + } + } break; + default: + c = -1; + return; + } + return; + } + break; case Arch_aarch64: { p = 0; switch (category) { @@ -1220,10 +1304,10 @@ void MachRegister::getROSERegister(int &c, int &n, int &p) return; } break; - default: - c = x86_regclass_unknown; - n = 0; - break; + default: + c = x86_regclass_unknown; + n = 0; + break; } switch (getArchitecture()) { @@ -1757,6 +1841,7 @@ MachRegister MachRegister::DwarfEncToReg(int encoding, Dyninst::Architecture arc return Dyninst::InvalidReg; break; case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: // ignore CUDA register encodings for now return Dyninst::InvalidReg; break; @@ -2210,6 +2295,7 @@ unsigned Dyninst::getArchAddressWidth(Dyninst::Architecture arch) case Arch_cuda: case Arch_intelGen9: case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: return 8; default: assert(0); diff --git a/dwarf/src/dwarfHandle.C b/dwarf/src/dwarfHandle.C index 2a6efd03f8..937d08a913 100644 --- a/dwarf/src/dwarfHandle.C +++ b/dwarf/src/dwarfHandle.C @@ -197,11 +197,11 @@ bool DwarfHandle::init_dbg() case EM_CUDA: arch = Dyninst::Arch_cuda; break; - case EM_AMDGPU: { + case EM_AMDGPU: { // TODO: This part of logic needs to be updated to reflect the table on the llvm website unsigned int ef_amdgpu_mach = 0x000000ff & file->e_flags(); switch(ef_amdgpu_mach){ - case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: - arch = Dyninst::Arch_amdgpu_rdna; + case 0x3f: + arch = Dyninst::Arch_amdgpu_cdna2; break; case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x30: case 0x31: arch = Dyninst::Arch_amdgpu_vega; diff --git a/elf/src/Elf_X.C b/elf/src/Elf_X.C index 404926a733..25a2bb0bda 100644 --- a/elf/src/Elf_X.C +++ b/elf/src/Elf_X.C @@ -1829,9 +1829,8 @@ Dyninst::Architecture Elf_X::getArch() const unsigned int ef_amdgpu_mach = 0x000000ff & e_flags(); //cerr << " dealing with amd gpu , mach = " << std::hex << ef_amdgpu_mach << endl; switch(ef_amdgpu_mach){ - case 0x33: case 0x34: case 0x35: case 0x36: case 0x37: case 0x38: - return Dyninst::Arch_amdgpu_rdna; - assert( 0 && "rdna not supported yet " ); + case 0x3f: + return Dyninst::Arch_amdgpu_cdna2; case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x30: case 0x31: return Dyninst::Arch_amdgpu_vega; case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: @@ -1840,6 +1839,7 @@ Dyninst::Architecture Elf_X::getArch() const case 0x27: case 0x32 : case 0x39: assert(0 && "reserved"); default: + //cerr << "unsupported amdgpu architecture , value = " << ef_amdgpu_mach << endl; assert(0 && "probabily won't be supported"); } diff --git a/instructionAPI/CMakeLists.txt b/instructionAPI/CMakeLists.txt index b55de862ff..baf647eb03 100644 --- a/instructionAPI/CMakeLists.txt +++ b/instructionAPI/CMakeLists.txt @@ -2,6 +2,8 @@ include_directories ( ${PROJECT_SOURCE_DIR}/instructionAPI/src + ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/cdna2 + ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/vega ) @@ -21,7 +23,8 @@ set (SRC_LIST src/InstructionDecoder-x86.C src/InstructionDecoder-power.C src/InstructionDecoder-aarch64.C - src/InstructionDecoder-amdgpu-vega.C + src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C + src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C src/InstructionDecoderImpl.C ) SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) diff --git a/instructionAPI/h/Instruction.h b/instructionAPI/h/Instruction.h index 2119eb3ca1..2782c9f1fa 100644 --- a/instructionAPI/h/Instruction.h +++ b/instructionAPI/h/Instruction.h @@ -92,6 +92,8 @@ namespace Dyninst friend class InstructionDecoder_power; friend class InstructionDecoder_aarch64; friend class InstructionDecoder_amdgpu_vega; + friend class InstructionDecoder_amdgpu_cdna; + friend class InstructionDecoder_amdgpu_cdna2; struct CFT { diff --git a/instructionAPI/h/Operation_impl.h b/instructionAPI/h/Operation_impl.h index 7cc6f20471..34902f3041 100644 --- a/instructionAPI/h/Operation_impl.h +++ b/instructionAPI/h/Operation_impl.h @@ -102,6 +102,9 @@ namespace Dyninst friend class InstructionDecoder_power; // for editing mnemonics after creation friend class InstructionDecoder_aarch64; friend class InstructionDecoder_amdgpu_vega; + friend class InstructionDecoder_amdgpu_cdna; + friend class InstructionDecoder_amdgpu_cdna2; + friend class Instruction; // to make use of the update size function public: INSTRUCTION_EXPORT Operation_impl(NS_x86::ia32_entry* e, NS_x86::ia32_prefixes* p = NULL, ia32_locations* l = NULL, diff --git a/instructionAPI/h/Result.h b/instructionAPI/h/Result.h index 8c5ba6993d..b6f0421388 100644 --- a/instructionAPI/h/Result.h +++ b/instructionAPI/h/Result.h @@ -36,12 +36,12 @@ #if !defined(_MSC_VER) #include #else - typedef __int64 int64_t; - typedef __int32 int32_t; - typedef __int16 int16_t; - typedef unsigned __int64 uint64_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int16 uint16_t; +typedef __int64 int64_t; +typedef __int32 int32_t; +typedef __int16 int16_t; +typedef unsigned __int64 uint64_t; +typedef unsigned __int32 uint32_t; +typedef unsigned __int16 uint16_t; #endif #include #include @@ -50,557 +50,580 @@ namespace Dyninst { - namespace InstructionAPI - { - union Result_Value + namespace InstructionAPI { - unsigned char bitval : 1; - unsigned char u8val; - char s8val; - uint16_t u16val; - int16_t s16val; - uint32_t u24val:24; - uint32_t u32val; - int32_t s32val; - uint64_t u64val; - int64_t s64val; - float floatval; - double dblval; - uint64_t u48val : 48; - int64_t s48val : 48; - void * m14val; - void * m96val; - void * dbl128val; - void * m192val; - void * m256val; - void * m384val; - void * m512val; - }; - enum Result_Type - { - bit_flag = 0, - s8, - u8, - s16, - u16, - u24, - s32, - u32, - s48, - u48, - s64, - u64, - sp_float, - dp_float, - // 48-bit pointers...yay Intel - m14, - m96, - dbl128, - m192, - m256, - m384, - m512, - invalid_type - }; + union Result_Value + { + unsigned char bitval : 1; + unsigned char u8val; + char s8val; + uint16_t u16val; + int16_t s16val; + uint32_t u24val:24; + uint32_t u32val; + int32_t s32val; + uint64_t u64val; + int64_t s64val; + float floatval; + double dblval; + uint64_t u48val : 48; + int64_t s48val : 48; + void * m14val; + void * dbl128val; + void * m32val; + void * m64val; + void * m96val; + void * m128val; + void * m160val; + void * m192val; + void * m224val; + void * m256val; + void * m288val; + void * m320val; + void * m352val; + void * m384val; + void * m416val; + void * m448val; + void * m480val; + void * m512val; + }; + enum Result_Type + { + bit_flag = 0, + s8, + u8, + s16, + u16, + u24, + s32, + u32, + s48, + u48, + s64, + u64, + sp_float, + dp_float, + // 48-bit pointers...yay Intel + m14, + dbl128, + m32, + m64, + m96, + m128, + m160, + m192, + m224, + m256, + m288, + m320, + m352, + m384, + m416, + m448, + m480, + m512, - template < Result_Type t > struct Result_type2type - { - typedef void* type; - }; - template < > struct Result_type2type - { - typedef char type; - }; - template < > struct Result_type2type - { - typedef unsigned char type; - }; - template < > struct Result_type2type - { - typedef int16_t type; - }; - template < > struct Result_type2type - { - typedef uint16_t type; - }; - template < > struct Result_type2type - { - typedef uint32_t type; - }; - template < > struct Result_type2type - { - typedef int32_t type; - }; - template < > struct Result_type2type - { - typedef uint32_t type; - }; - template < > struct Result_type2type - { - typedef int64_t type; - }; - template < > struct Result_type2type - { - typedef uint64_t type; - }; - template < > struct Result_type2type - { - typedef int64_t type; - }; - template < > struct Result_type2type - { - typedef uint64_t type; - }; - template < > struct Result_type2type - { - typedef float type; - }; - template < > struct Result_type2type - { - typedef double type; - }; - template < > struct Result_type2type - { - typedef unsigned char type; - }; - /// A %Result object represents a value computed by a %Expression AST. - /// - /// The %Result class is a tagged-union representation of the results that - /// %Expressions can produce. It includes 8, 16, 32, 48, and 64 bit integers - /// (signed and unsigned), bit values, and single and double precision floating point values. - /// For each of these types, the value of a %Result may be undefined, or it may be a value within - /// the range of the type. - /// - /// The \c type field is an enum that may contain any of the following values: - /// - \c u8: an unsigned 8-bit integer - /// - \c s8: a signed 8-bit integer - /// - \c u16: an unsigned 16-bit integer - /// - \c s16: a signed 16-bit integer - /// - \c u32: an unsigned 32-bit integer - /// - \c s32: a signed 32-bit integer - /// - \c u48: an unsigned 48-bit integer (IA32 pointers) - /// - \c s48: a signed 48-bit integer (IA32 pointers) - /// - \c u64: an unsigned 64-bit integer - /// - \c s64: a signed 64-bit integer - /// - \c sp_float: a single-precision float - /// - \c dp_float: a double-precision float - /// - \c bit_flag: a single bit (individual flags) - /// - \c m512: a 512-bit memory value - /// - \c dbl128: a 128-bit integer, which often contains packed floating point values - /// - \c m14: a 14 byte memory value - /// - // The %Instruction API's model of %Results is a simple one, and may seem overly aggressive about - // making an %Expression's %Result undefined. It follows the same basic rule as the rest of the API: - // a decoded %Instruction object represents only the information that may be obtained from the machine - // instruction that was decoded. As discussed in the Expression section, the \c setValue - // and \c eval interface allows you to determine the possible %Results of an %Expression when evaluated over various - // machine states. From this, you may construct abstractions to represent the set of possible results. - // Alternately, you may use instrumentation to determine the exact machine state at the time an - // instruction executes, which will allow you to evaluate the %Result of an %Expression in its actual context. - class INSTRUCTION_EXPORT Result - { - public: - Result_Value val; - Result_Type type; - bool defined; + invalid_type + }; + + template < Result_Type t > struct Result_type2type + { + typedef void* type; + }; + template < > struct Result_type2type + { + typedef char type; + }; + template < > struct Result_type2type + { + typedef unsigned char type; + }; + template < > struct Result_type2type + { + typedef int16_t type; + }; + template < > struct Result_type2type + { + typedef uint16_t type; + }; + template < > struct Result_type2type + { + typedef uint32_t type; + }; + template < > struct Result_type2type + { + typedef int32_t type; + }; + template < > struct Result_type2type + { + typedef uint32_t type; + }; + template < > struct Result_type2type + { + typedef int64_t type; + }; + template < > struct Result_type2type + { + typedef uint64_t type; + }; + template < > struct Result_type2type + { + typedef int64_t type; + }; + template < > struct Result_type2type + { + typedef uint64_t type; + }; + template < > struct Result_type2type + { + typedef float type; + }; + template < > struct Result_type2type + { + typedef double type; + }; + template < > struct Result_type2type + { + typedef unsigned char type; + }; + /// A %Result object represents a value computed by a %Expression AST. + /// + /// The %Result class is a tagged-union representation of the results that + /// %Expressions can produce. It includes 8, 16, 32, 48, and 64 bit integers + /// (signed and unsigned), bit values, and single and double precision floating point values. + /// For each of these types, the value of a %Result may be undefined, or it may be a value within + /// the range of the type. + /// + /// The \c type field is an enum that may contain any of the following values: + /// - \c u8: an unsigned 8-bit integer + /// - \c s8: a signed 8-bit integer + /// - \c u16: an unsigned 16-bit integer + /// - \c s16: a signed 16-bit integer + /// - \c u32: an unsigned 32-bit integer + /// - \c s32: a signed 32-bit integer + /// - \c u48: an unsigned 48-bit integer (IA32 pointers) + /// - \c s48: a signed 48-bit integer (IA32 pointers) + /// - \c u64: an unsigned 64-bit integer + /// - \c s64: a signed 64-bit integer + /// - \c sp_float: a single-precision float + /// - \c dp_float: a double-precision float + /// - \c bit_flag: a single bit (individual flags) + /// - \c m512: a 512-bit memory value + /// - \c dbl128: a 128-bit integer, which often contains packed floating point values + /// - \c m14: a 14 byte memory value + /// + // The %Instruction API's model of %Results is a simple one, and may seem overly aggressive about + // making an %Expression's %Result undefined. It follows the same basic rule as the rest of the API: + // a decoded %Instruction object represents only the information that may be obtained from the machine + // instruction that was decoded. As discussed in the Expression section, the \c setValue + // and \c eval interface allows you to determine the possible %Results of an %Expression when evaluated over various + // machine states. From this, you may construct abstractions to represent the set of possible results. + // Alternately, you may use instrumentation to determine the exact machine state at the time an + // instruction executes, which will allow you to evaluate the %Result of an %Expression in its actual context. + class INSTRUCTION_EXPORT Result + { + public: + Result_Value val; + Result_Type type; + bool defined; - Result() : - type(u32), defined(false) - { - val.u32val = 0; - } - Result(const Result& o) : - val(o.val), type(o.type), defined(o.defined) - { - } + Result() : + type(u32), defined(false) + { + val.u32val = 0; + } + Result(const Result& o) : + val(o.val), type(o.type), defined(o.defined) + { + } - const Result& operator=(const Result& rhs) - { - val = rhs.val; - type = rhs.type; - defined = rhs.defined; - return *this; - } + const Result& operator=(const Result& rhs) + { + val = rhs.val; + type = rhs.type; + defined = rhs.defined; + return *this; + } - /// A %Result may be constructed from a type without providing a value. - /// This constructor creates a %Result of type \c t with undefined contents. - Result(Result_Type t) : - type(t), defined(false) - { - val.u32val = 0; - } + /// A %Result may be constructed from a type without providing a value. + /// This constructor creates a %Result of type \c t with undefined contents. + Result(Result_Type t) : + type(t), defined(false) + { + val.u32val = 0; + } - /// A %Result may be constructed from a type and any value convertible to the type that the - /// tag represents. - /// This constructor creates a %Result of type \c t and contents \c v for any \c v that is implicitly - /// convertible to type \c t. Attempting to construct a %Result with a value that is incompatible with - /// its type will result in a compile-time error. - template - Result(Result_Type t, T v) : - type(t), defined(true) - { - switch(type) - { - case u8: - val.u8val = (unsigned char)(v); - break; - case s8: - val.s8val = (char)(v); - break; - case u16: - val.u16val = (uint16_t)(v); - break; - case s16: - val.s16val = (int16_t)(v); - break; - case u24: - val.u24val = (uint32_t)(v & 0xFFFFFF); - break; - case u32: - val.u32val = (uint32_t)(v ); - break; - case s32: - val.s32val = (int32_t)(v); - break; - case u64: - val.u64val = (uint64_t)(v); - break; - case s64: - val.s64val = (int64_t)(v); - break; - case bit_flag: - val.bitval = (v != 0) ? 1 : 0; - break; - case u48: - val.u48val = (uint64_t)(v & 0x0000FFFFFFFFFFFFLL); - break; - case s48: - val.s48val = (int64_t)(v & 0x0000FFFFFFFFFFFFLL); - break; - case m512: - val.m512val = (void *)(intptr_t) v; - break; - case dbl128: - val.dbl128val = (void*)(intptr_t) v; - break; - case m14: - val.m14val = (void*)(intptr_t) v; - break; - case m96: - val.m96val = (void *)(intptr_t) v; - break; - case m192: - val.m192val = (void *)(intptr_t) v; - break; - case m256: - val.m256val = (void *)(intptr_t) v; - break; - case m384: - val.m384val = (void *)(intptr_t) v; - break; - // Floats should be constructed with float types - default: - case sp_float: - case dp_float: - assert(!"Invalid type!"); - break; - } - } - Result(Result_Type t, float v) : - type(t), defined(true) - { - assert(t == sp_float || t == dp_float); - val.dblval = (double)v; - } - Result(Result_Type t, double v) : - type(t), defined(true) - { - assert(t == sp_float || t == dp_float); - val.dblval = v; - } - ~Result() - { - } + /// A %Result may be constructed from a type and any value convertible to the type that the + /// tag represents. + /// This constructor creates a %Result of type \c t and contents \c v for any \c v that is implicitly + /// convertible to type \c t. Attempting to construct a %Result with a value that is incompatible with + /// its type will result in a compile-time error. + template + Result(Result_Type t, T v) : + type(t), defined(true) + { + switch(type) + { + case u8: + val.u8val = (unsigned char)(v); + break; + case s8: + val.s8val = (char)(v); + break; + case u16: + val.u16val = (uint16_t)(v); + break; + case s16: + val.s16val = (int16_t)(v); + break; + case u24: + val.u24val = (uint32_t)(v & 0xFFFFFF); + break; + case u32: + val.u32val = (uint32_t)(v ); + break; + case s32: + val.s32val = (int32_t)(v); + break; + case u64: + val.u64val = (uint64_t)(v); + break; + case s64: + val.s64val = (int64_t)(v); + break; + case bit_flag: + val.bitval = (v != 0) ? 1 : 0; + break; + case u48: + val.u48val = (uint64_t)(v & 0x0000FFFFFFFFFFFFLL); + break; + case s48: + val.s48val = (int64_t)(v & 0x0000FFFFFFFFFFFFLL); + break; + case m512: + val.m512val = (void *)(intptr_t) v; + break; + case dbl128: + val.dbl128val = (void*)(intptr_t) v; + break; + case m14: + val.m14val = (void*)(intptr_t) v; + break; + case m96: + val.m96val = (void *)(intptr_t) v; + break; + case m192: + val.m192val = (void *)(intptr_t) v; + break; + case m256: + val.m256val = (void *)(intptr_t) v; + break; + case m384: + val.m384val = (void *)(intptr_t) v; + break; + // Floats should be constructed with float types + default: + case sp_float: + case dp_float: + assert(!"Invalid type!"); + break; + } + } + Result(Result_Type t, float v) : + type(t), defined(true) + { + assert(t == sp_float || t == dp_float); + val.dblval = (double)v; + } + Result(Result_Type t, double v) : + type(t), defined(true) + { + assert(t == sp_float || t == dp_float); + val.dblval = v; + } + ~Result() + { + } - bool operator<(const Result& o) const - { - if(type < o.type) return true; - if(!defined) return false; - if(!o.defined) return true; + bool operator<(const Result& o) const + { + if(type < o.type) return true; + if(!defined) return false; + if(!o.defined) return true; - switch(type) - { - case u8: - return val.u8val < o.val.u8val; - break; - case s8: - return val.s8val < o.val.s8val; - break; - case u16: - return val.u16val < o.val.u16val; - break; - case s16: - return val.s16val < o.val.s16val; - break; - case u24: - return val.u24val < o.val.u24val; - break; - case u32: - return val.u32val < o.val.u32val; - break; - case s32: - return val.s32val < o.val.s32val; - break; - case u64: - return val.u64val < o.val.u64val; - break; - case s64: - return val.s64val < o.val.s64val; - break; - case sp_float: - return val.floatval < o.val.floatval; - break; - case dp_float: - return val.dblval < o.val.dblval; - break; - case bit_flag: - return val.bitval < o.val.bitval; - break; - case u48: - return val.u48val < o.val.u48val; - break; - case s48: - return val.s48val < o.val.s48val; - break; - case m512: - return memcmp(val.m512val, o.val.m512val, 512) < 0; - break; - case dbl128: - return memcmp(val.dbl128val, o.val.dbl128val, 128 / 8) < 0; - break; - case m14: - return memcmp(val.m14val, o.val.m14val, 14) < 0; - break; - case m96: - return memcmp(val.m96val, o.val.m96val, 96) < 0; - break; - case m192: - return memcmp(val.m192val, o.val.m192val, 192) < 0; - break; - case m256: - return memcmp(val.m256val, o.val.m256val, 256) < 0; - break; - case m384: - return memcmp(val.m384val, o.val.m384val, 384) < 0; - break; - default: - assert(!"Invalid type!"); - break; - } - return false; - } + switch(type) + { + case u8: + return val.u8val < o.val.u8val; + break; + case s8: + return val.s8val < o.val.s8val; + break; + case u16: + return val.u16val < o.val.u16val; + break; + case s16: + return val.s16val < o.val.s16val; + break; + case u24: + return val.u24val < o.val.u24val; + break; + case u32: + return val.u32val < o.val.u32val; + break; + case s32: + return val.s32val < o.val.s32val; + break; + case u64: + return val.u64val < o.val.u64val; + break; + case s64: + return val.s64val < o.val.s64val; + break; + case sp_float: + return val.floatval < o.val.floatval; + break; + case dp_float: + return val.dblval < o.val.dblval; + break; + case bit_flag: + return val.bitval < o.val.bitval; + break; + case u48: + return val.u48val < o.val.u48val; + break; + case s48: + return val.s48val < o.val.s48val; + break; + case m512: + return memcmp(val.m512val, o.val.m512val, 512) < 0; + break; + case dbl128: + return memcmp(val.dbl128val, o.val.dbl128val, 128 / 8) < 0; + break; + case m14: + return memcmp(val.m14val, o.val.m14val, 14) < 0; + break; + case m96: + return memcmp(val.m96val, o.val.m96val, 96) < 0; + break; + case m192: + return memcmp(val.m192val, o.val.m192val, 192) < 0; + break; + case m256: + return memcmp(val.m256val, o.val.m256val, 256) < 0; + break; + case m384: + return memcmp(val.m384val, o.val.m384val, 384) < 0; + break; + default: + assert(!"Invalid type!"); + break; + } + return false; + } - /// Two %Results are equal if any of the following hold: - /// - Both %Results are of the same type and undefined - /// - Both %Results are of the same type, defined, and have the same value - /// - /// Otherwise, they are unequal (due to having different types, an undefined %Result compared to a defined %Result, - /// or different values). + /// Two %Results are equal if any of the following hold: + /// - Both %Results are of the same type and undefined + /// - Both %Results are of the same type, defined, and have the same value + /// + /// Otherwise, they are unequal (due to having different types, an undefined %Result compared to a defined %Result, + /// or different values). - bool operator==(const Result& o) const - { - return !((*this < o) || (o < *this)); + bool operator==(const Result& o) const + { + return !((*this < o) || (o < *this)); - } - /// %Results are formatted as strings containing their contents, represented as hexadecimal. - /// The type of the %Result is not included in the output. - std::string format() const - { - if(!defined) - { - return "[empty]"; - } - else - { - char hex[20]; - switch(type) - { - case u8: - snprintf(hex, 20, "%x", val.u8val); - break; - case s8: - snprintf(hex, 20, "%x", (unsigned int)val.s8val); - break; - case u16: - snprintf(hex, 20, "%x", val.u16val); - break; - case s16: - snprintf(hex, 20, "%x", (unsigned int)val.s16val); - break; - case u24: - snprintf(hex, 20, "%x", (unsigned int)val.u24val); - break; - case u32: - snprintf(hex, 20, "%x", val.u32val); - break; - case s32: - snprintf(hex, 20, "%x", (unsigned int)val.s32val); - break; - case u64: - return std::to_string(val.u64val); - case s64: - return std::to_string(val.s64val); - break; - case sp_float: - snprintf(hex, 20, "%f", (double)val.floatval); - break; - case dp_float: - snprintf(hex, 20, "%lf", val.dblval); - break; - case bit_flag: - snprintf(hex, 20, "%x", (unsigned int)val.bitval); - break; - case u48: - return std::to_string(val.s48val); - break; - case s48: - return std::to_string(val.s48val); - break; - case m512: - snprintf(hex, 20, "%p", val.m512val); - break; - case m14: - snprintf(hex, 20, "%p", val.m14val); - break; - case m96: - snprintf(hex, 20, "%p", val.m96val); - break; - case dbl128: - snprintf(hex, 20, "%p", val.dbl128val); - break; - case m192: - snprintf(hex, 20, "%p", val.m192val); - break; - case m256: - snprintf(hex, 20, "%p", val.m256val); - break; - case m384: - snprintf(hex, 20, "%p", val.m384val); - break; - default: - snprintf(hex, 20, "[invalid type]"); - break; - }; - return std::string(hex); - } - } + } + /// %Results are formatted as strings containing their contents, represented as hexadecimal. + /// The type of the %Result is not included in the output. + std::string format() const + { + if(!defined) + { + return "[empty]"; + } + else + { + char hex[20]; + switch(type) + { + case u8: + snprintf(hex, 20, "%x", val.u8val); + break; + case s8: + snprintf(hex, 20, "%x", (unsigned int)val.s8val); + break; + case u16: + snprintf(hex, 20, "%x", val.u16val); + break; + case s16: + snprintf(hex, 20, "%x", (unsigned int)val.s16val); + break; + case u24: + snprintf(hex, 20, "%x", (unsigned int)val.u24val); + break; + case u32: + snprintf(hex, 20, "%x", val.u32val); + break; + case s32: + snprintf(hex, 20, "%x", (unsigned int)val.s32val); + break; + case u64: + return std::to_string(val.u64val); + case s64: + return std::to_string(val.s64val); + break; + case sp_float: + snprintf(hex, 20, "%f", (double)val.floatval); + break; + case dp_float: + snprintf(hex, 20, "%lf", val.dblval); + break; + case bit_flag: + snprintf(hex, 20, "%x", (unsigned int)val.bitval); + break; + case u48: + return std::to_string(val.s48val); + break; + case s48: + return std::to_string(val.s48val); + break; + case m512: + snprintf(hex, 20, "%p", val.m512val); + break; + case m14: + snprintf(hex, 20, "%p", val.m14val); + break; + case m96: + snprintf(hex, 20, "%p", val.m96val); + break; + case dbl128: + snprintf(hex, 20, "%p", val.dbl128val); + break; + case m192: + snprintf(hex, 20, "%p", val.m192val); + break; + case m256: + snprintf(hex, 20, "%p", val.m256val); + break; + case m384: + snprintf(hex, 20, "%p", val.m384val); + break; + default: + snprintf(hex, 20, "[invalid type]"); + break; + }; + return std::string(hex); + } + } - template< typename to_type > - to_type convert() const - { - switch(type) - { - case s8: - return to_type(val.s8val); - case u8: - return to_type(val.u8val); - case s16: - return to_type(val.s16val); - case u16: - return to_type(val.u16val); - case u24: - return to_type(val.u24val); - case s32: - return to_type(val.s32val); - case u32: - return to_type(val.u32val); - case s48: - return to_type(val.s48val); - case u48: - return to_type(val.u48val); - case s64: - return to_type(val.s64val); - case u64: - return to_type(val.u64val); - case sp_float: - return to_type(val.floatval); - case dp_float: - return to_type(val.dblval); - case bit_flag: - return to_type(val.bitval); - case m512: - case dbl128: - case m192: - case m256: - case m384: - case m96: - assert(!"M512 and DBL128 types cannot be converted yet"); - return to_type(0); - default: - assert(!"Invalid type in result!"); - return to_type(0); - } - } + template< typename to_type > + to_type convert() const + { + switch(type) + { + case s8: + return to_type(val.s8val); + case u8: + return to_type(val.u8val); + case s16: + return to_type(val.s16val); + case u16: + return to_type(val.u16val); + case u24: + return to_type(val.u24val); + case s32: + return to_type(val.s32val); + case u32: + return to_type(val.u32val); + case s48: + return to_type(val.s48val); + case u48: + return to_type(val.u48val); + case s64: + return to_type(val.s64val); + case u64: + return to_type(val.u64val); + case sp_float: + return to_type(val.floatval); + case dp_float: + return to_type(val.dblval); + case bit_flag: + return to_type(val.bitval); + case m512: + case dbl128: + case m192: + case m256: + case m384: + case m96: + assert(!"M512 and DBL128 types cannot be converted yet"); + return to_type(0); + default: + assert(!"Invalid type in result!"); + return to_type(0); + } + } - /// Returns the size of the contained type, in bytes - int size() const - { - switch(type) - { - case u8: - case s8: - return 1; - case u16: - case s16: - return 2; - case u24: - return 3; - case u32: - case s32: - return 4; - case u64: - case s64: - return 8; - case u48: - case s48: - return 6; - case sp_float: - return sizeof(float); - case dp_float: - return sizeof(double); - case bit_flag: - return 1; - case m512: - return 64; - case dbl128: - return 16; - case m192: - return 24; - case m256: - return 32; - default: - // In probabilistic gap parsing, - // we could start to decode at any byte and reach here. - // It is a sign for junk bytes - return 0; - }; - } - }; + /// Returns the size of the contained type, in bytes + int size() const + { + switch(type) + { + case u8: + case s8: + return 1; + case u16: + case s16: + return 2; + case u24: + return 3; + case u32: + case s32: + return 4; + case u64: + case s64: + return 8; + case u48: + case s48: + return 6; + case sp_float: + return sizeof(float); + case dp_float: + return sizeof(double); + case bit_flag: + return 1; + case m512: + return 64; + case dbl128: + return 16; + case m192: + return 24; + case m256: + return 32; + default: + // In probabilistic gap parsing, + // we could start to decode at any byte and reach here. + // It is a sign for junk bytes + return 0; + }; + } + }; - INSTRUCTION_EXPORT Result operator+(const Result& arg1, const Result& arg2); - INSTRUCTION_EXPORT Result operator*(const Result& arg1, const Result& arg2); - INSTRUCTION_EXPORT Result operator<<(const Result& arg1, const Result& arg2); - INSTRUCTION_EXPORT Result operator>>(const Result& arg1, const Result& arg2); - INSTRUCTION_EXPORT Result operator&(const Result& arg1, const Result& arg2); - INSTRUCTION_EXPORT Result operator|(const Result& arg1, const Result& arg2); + INSTRUCTION_EXPORT Result operator+(const Result& arg1, const Result& arg2); + INSTRUCTION_EXPORT Result operator*(const Result& arg1, const Result& arg2); + INSTRUCTION_EXPORT Result operator<<(const Result& arg1, const Result& arg2); + INSTRUCTION_EXPORT Result operator>>(const Result& arg1, const Result& arg2); + INSTRUCTION_EXPORT Result operator&(const Result& arg1, const Result& arg2); + INSTRUCTION_EXPORT Result operator|(const Result& arg1, const Result& arg2); - } + } } diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C new file mode 100644 index 0000000000..46e999577e --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -0,0 +1,310 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "Ternary.h" +#include "InstructionDecoder-amdgpu-cdna2.h" + +namespace Dyninst { + namespace InstructionAPI { + typedef void (InstructionDecoder_amdgpu_cdna2::*operandFactory)(); + + typedef amdgpu_cdna2_insn_entry amdgpu_cdna2_insn_table[]; + typedef amdgpu_mask_entry amdgpu_decoder_table[]; + + const std::array InstructionDecoder_amdgpu_cdna2::condNames = { { + "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", "hi", "ls", "ge", + "lt", "gt", "le", "al", "nv", + } }; + + const char* InstructionDecoder_amdgpu_cdna2::bitfieldInsnAliasMap(entryID e) { + switch(e) { + default: assert(!"no alias for entryID"); + }; + } + const char* InstructionDecoder_amdgpu_cdna2::condInsnAliasMap(entryID e) { + switch(e) { + default: assert(!"no alias for entryID"); + }; + } + +#include "amdgpu_cdna2_insn_entry.h" + struct amdgpu_mask_entry { + unsigned int mask; + std::size_t branchCnt; + const std::pair* nodeBranches; + int insnTableIndex; + + static const amdgpu_decoder_table main_decoder_table; + static const std::pair branchTable[]; + }; + +#include "amdgpu_cdna2_opcode_tables.C" + + InstructionDecoder_amdgpu_cdna2::InstructionDecoder_amdgpu_cdna2(Architecture a) + : InstructionDecoderImpl(a), + insn_size(0), immLen(0) , num_elements(1) , isSMEM(false), isLoad(false), isStore(false),isBuffer(false), + isScratch(false) , isBranch(false), isConditional(false) ,isCall(false), isModifyPC(false) + { + } + + InstructionDecoder_amdgpu_cdna2::~InstructionDecoder_amdgpu_cdna2() { + } + + + using namespace std; + void InstructionDecoder_amdgpu_cdna2::NOTHING() { + } + + Result_Type InstructionDecoder_amdgpu_cdna2::makeSizeType(unsigned int) { + assert(0); //not implemented + return u32; + } + + // **************** + // decoding opcodes + // **************** + + MachRegister InstructionDecoder_amdgpu_cdna2::makeAmdgpuRegID(MachRegister base, unsigned int encoding , unsigned int len) { + MachRegister realBase = base; + /*if (base == amdgpu_cdna2::s0){ + switch(len){ + case 2: + realBase = amdgpu_cdna2::sgpr_vec2_0; + break; + case 4: + realBase = amdgpu_cdna2::sgpr_vec4_0; + break; + case 8: + realBase = amdgpu_cdna2::sgpr_vec8_0; + break; + case 16: + realBase = amdgpu_cdna2::sgpr_vec16_0; + break; + } + }else if (base == amdgpu_cdna2::v0){ + switch(len){ + case 2: + realBase = amdgpu_cdna2::vgpr_vec2_0; + break; + case 4: + realBase = amdgpu_cdna2::vgpr_vec4_0; + break; + case 8: + realBase = amdgpu_cdna2::vgpr_vec8_0; + break; + case 16: + realBase = amdgpu_cdna2::vgpr_vec16_0; + break; + } + + }*/ + return MachRegister(realBase.val() + encoding); + + } + + Expression::Ptr InstructionDecoder_amdgpu_cdna2::makePCExpr() { + MachRegister baseReg = amdgpu_cdna2::pc_all; + return makeRegisterExpression(baseReg); + } + + void InstructionDecoder_amdgpu_cdna2::makeBranchTarget(bool branchIsCall, bool bIsConditional, int immVal, + int immLen_ = 16) { + Expression::Ptr lhs = makeAddExpression(makePCExpr(),Immediate::makeImmediate(Result(s48,4)),s48); + int64_t offset = sign_extend64(immLen_, immVal * 4); + + Expression::Ptr rhs = Immediate::makeImmediate(Result(s64, offset)); + + insn_in_progress->addSuccessor(makeAddExpression(lhs, rhs, s64), branchIsCall, false, bIsConditional, + false); + if (bIsConditional || branchIsCall) { + insn_in_progress->addSuccessor(makeFallThroughExpr(), false, false, false, true); + } + + } + + Expression::Ptr InstructionDecoder_amdgpu_cdna2::makeFallThroughExpr() { + // TODO: while s_call_B64 is always 4 bytes, it is not clear whether all instructions that has a fall through branch are 4 bytes long + return makeAddExpression(makePCExpr(), Immediate::makeImmediate(Result(u64, unsign_extend64(3, 4))), u64); + } + + + bool InstructionDecoder_amdgpu_cdna2::decodeOperands(const Instruction *) { + assert(0 && "decodeOperands deprecated for amdgpu"); + return true; + } + + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeSGPRorM0(unsigned int offset){ + if( offset <= 104) + return makeRegisterExpression(makeAmdgpuRegID(amdgpu_cdna2::s0,offset)); + if (offset == 124) + return makeRegisterExpression(amdgpu_cdna2::m0); + cerr << " unknown offset in sgpr or m0 " << offset << endl; + assert(0 && "shouldn't reach here"); + } + + + uint32_t InstructionDecoder_amdgpu_cdna2::decodeOPR_LITERAL(){ + if (!useImm){ + useImm = true; + immLen = 4; + if(insn_size == 4) + immLiteral = imm_at_32; + else if(insn_size ==8) + immLiteral = imm_at_64; + else + assert(0 && "unsupported instruction size"); + + } + return immLiteral; + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_LABEL(uint64_t input){ + Expression::Ptr lhs = makeAddExpression(makePCExpr(),Immediate::makeImmediate(Result(s48,4)),s48); + int64_t offset = sign_extend64(immLen, input * 4); + Expression::Ptr rhs = Immediate::makeImmediate(Result(s64, offset)); + return makeAddExpression(lhs, rhs, s64); + + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SIMM4(uint64_t input){ + return Immediate::makeImmediate(Result(s8, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SIMM8(uint64_t input){ + return Immediate::makeImmediate(Result(s8, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SIMM16(uint64_t input){ + return Immediate::makeImmediate(Result(s16, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SIMM32(uint64_t input){ + return Immediate::makeImmediate(Result(s32, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_WAITCNT(uint64_t input){ + return Immediate::makeImmediate(Result(s16, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::makeRegisterExpression(MachRegister registerID){ + if(registerID == amdgpu_cdna2::src_literal){ + return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); + } + return InstructionDecoderImpl::makeRegisterExpression(registerID); + } + Expression::Ptr InstructionDecoder_amdgpu_cdna2::makeRegisterExpression(MachRegister registerID, uint32_t low, uint32_t high ){ + if(registerID == amdgpu_cdna2::src_literal){ + return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); + } + return InstructionDecoderImpl::makeRegisterExpression(registerID, low, high ); + } + + + + void Dyninst::InstructionAPI::InstructionDecoder_amdgpu_cdna2::finalizeENC_VINTRPOperands(){ + + } +#include "amdgpu_cdna2_decoder_impl.C" +#include "decodeOperands.C" +#include "finalizeOperands.C" + inline unsigned int InstructionDecoder_amdgpu_cdna2::get32bit(InstructionDecoder::buffer &b,unsigned int offset ){ + assert(offset %4 ==0 ); + if(b.start + offset + 4 < b.end) + return b.start[offset+3] << 24 | b.start[offset + 2] << 16 | b.start[offset +1 ] << 8 | b.start [offset]; + return 0; + } + + + void InstructionDecoder_amdgpu_cdna2::reset(){ + immLen = 0; + insn_size = 0; + num_elements =1; + isBranch = false; + isConditional = false; + isModifyPC =false; + isSMEM = false; + isLoad = false ; + isStore =false; + isBuffer =false ; + isScratch = false; + insn = insn_high = insn_long = 0; + useImm = false; + isCall = false; + if (!getenv("DEBUG_DECODE")) + cout.setstate(ios_base::badbit); + } + // here we assemble the first 64 bit (if available) as an instruction + + void InstructionDecoder_amdgpu_cdna2::setupInsnWord(InstructionDecoder::buffer &b) { + reset(); + if (b.start > b.end) + return; + insn = get32bit(b,0); + + imm_at_32 = insn_high = get32bit(b,4); + imm_at_64 = get32bit(b,8); + + insn_long = ( ((uint64_t) insn_high) << 32) | insn; + cout << " setup insn_long = " << std::hex << insn_long << endl; + + } + void InstructionDecoder_amdgpu_cdna2::decodeOpcode(InstructionDecoder::buffer &b) { + setupInsnWord(b); + mainDecode(); + b.start += insn_in_progress->size(); + } + + void InstructionDecoder_amdgpu_cdna2::debug_instr(){ + cout << "decoded instruction " << insn_in_progress->getOperation().mnemonic << " " << std::hex << insn_long << " insn_family = " << instr_family + << " length = " << insn_in_progress->size()<< endl << endl; + + } + + Instruction InstructionDecoder_amdgpu_cdna2::decode(InstructionDecoder::buffer &b) { + setupInsnWord(b); + mainDecode(); + if(entryToCategory(insn_in_progress->getOperation().getID())==c_BranchInsn){ + //cout << "Is Branch Instruction !! , name = " << insn_in_progress -> getOperation().mnemonic << endl; + //std::mem_fun(decode_lookup_table[instr_family])(this); + } + debug_instr(); + cout.clear(); + b.start += insn_in_progress->size(); + return *insn_in_progress; + } + + void InstructionDecoder_amdgpu_cdna2::doDelayedDecode(const Instruction *insn_to_complete) { + + InstructionDecoder::buffer b(insn_to_complete->ptr(), insn_to_complete->size()); + setupInsnWord(b); + mainDecode(); + debug_instr(); + cout.clear(); + Instruction* iptr = const_cast(insn_to_complete); + *iptr = *(insn_in_progress.get()); + } + } +} + + + diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h new file mode 100644 index 0000000000..7acd5e0a2b --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h @@ -0,0 +1,317 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "InstructionDecoderImpl.h" +#include +#include "Immediate.h" +#include "dyn_regs.h" + +namespace Dyninst { + namespace InstructionAPI { + +#define insn_printf(format, ...) \ + do{ \ + printf("[%s:%u]insn_debug " format, FILE__, __LINE__, ## __VA_ARGS__); \ + }while(0) + + struct amdgpu_cdna2_insn_entry; + struct amdgpu_mask_entry; + + class InstructionDecoder_amdgpu_cdna2 : public InstructionDecoderImpl { + friend struct amdgpu_cdna2_insn_entry; + friend struct amdgpu_mask_entry; + enum DecodeFamily {sopp}; + + public: + InstructionDecoder_amdgpu_cdna2(Architecture a); + + virtual ~InstructionDecoder_amdgpu_cdna2(); + + virtual void decodeOpcode(InstructionDecoder::buffer &b); + + // decode one instruction starting from b.start + // will advance b.start whenver a instruction is successfully decoded + virtual Instruction decode(InstructionDecoder::buffer &b); + + virtual void setMode(bool) { } + + virtual bool decodeOperands(const Instruction *insn_to_complete); + + bool decodeOperands(const amdgpu_cdna2_insn_entry & insn_entry); + + virtual void doDelayedDecode(const Instruction *insn_to_complete); + + static const std::array condNames; + static MachRegister sysRegMap(unsigned int); + static const char* bitfieldInsnAliasMap(entryID); + static const char* condInsnAliasMap(entryID); + + + + private: + virtual Result_Type makeSizeType(unsigned int opType); + + bool is64Bit; + + unsigned int insn_size; // size of the instruction that we are currently working on + unsigned int insn; // the first 32 bit + unsigned int insn_high; // the second 32 bit + unsigned long long int insn_long; // the combined 64 bit: insn_high << 32 | insn + + // the main process of decoding an instruciton, won't advance buffer + void mainDecode(); + + void mainDecodeOpcode(); + + + void setupInsnWord(InstructionDecoder::buffer &b); + // pointer to the instruction that we are currently working on + boost::shared_ptr insn_in_progress; + + template + int field(unsigned int raw) { +#if defined DEBUG_FIELD + std::cerr << start << "-" << end << ":" << std::dec << (raw >> (start) & + (0xFFFFFFFF >> (31 - (end - start)))) << " "; +#endif + return (raw >> (start) & (0xFFFFFFFF >> (31 - (end - start)))); + } + + template + int longfield(unsigned long long int raw) { +#if defined DEBUG_FIELD + std::cerr << start << "-" << end << ":" << std::dec << (raw >> (start) & + (0xFFFFFFFFFFFFFFFF >> (63 - (end - start)))) << " "; +#endif + return ( (raw >> (start)) & (0xFFFFFFFFFFFFFFFF >> (63 - (end - start)))); + } + + int32_t sign_extend32(int size_, int in) { + int32_t val = 0 | in; + + return (val << (32 - size_)) >> (32 - size_); + } + + int64_t sign_extend64(int size_, int in) { + int64_t val = 0 | in; + + return (val << (64 - size_)) >> (64 - size_); + } + + uint32_t unsign_extend32(int size_, int in) { + uint32_t mask = ~0; + + return (mask >> (32 - size_)) & in; + } + + uint64_t unsign_extend64(int size_, int in) { + uint64_t mask = ~0; + + return (mask >> (64 - size_)) & in; + } + + int highest_set_bit(int32_t val) { + for (int bit_index = 31; bit_index >= 0; bit_index--) + if (((static_cast(val) >> bit_index) & 0x1) == 0x1) + return bit_index + 1; + + return -1; + } + + int lowest_set_bit(int32_t val) { + for (int bit_index = 0; bit_index <= 31; bit_index++) + if (((static_cast(val) >> bit_index) & 0x1) == 0x1) + return bit_index + 1; + + return -1; + } + + + bool hasHw; + int hwField; + + void processHwFieldInsn(int, int); + + bool hasShift; + int shiftField; + + void makeBranchTarget(bool, bool, int, int); + + Expression::Ptr makeFallThroughExpr(); + + int _szField, size; + int _typeField; + int cmode; + int op; + int simdAlphabetImm; + + void processAlphabetImm(); + + void NOTHING(); + bool fix_bitfieldinsn_alias(int, int); + void fix_condinsn_alias_and_cond(int &); + void modify_mnemonic_simd_upperhalf_insns(); + + MachRegister makeAmdgpuRegID(MachRegister, unsigned int, unsigned int len = 1); + + MachRegister getLoadStoreSimdRegister(int encoding); + + Expression::Ptr makePCExpr(); + + + template + Expression::Ptr makeLogicalImm(int immr, int imms, int immsLen, Result_Type rT); + + + //for load store + void insnSize(unsigned int insn_size ); + + Expression::Ptr decodeSSRC(unsigned int index); + Expression::Ptr decodeVSRC(unsigned int index); + Expression::Ptr decodeVDST(unsigned int index); + + Expression::Ptr decodeSGPRorM0(unsigned int offset); + + + bool useImm; + uint32_t immLen; + uint32_t immLiteral; + uint32_t imm_at_32; + uint32_t imm_at_64; + uint32_t imm_at_96; + + bool setSCC; + +#define IS_LD_ST() (isLoad || isStore ) + + unsigned int num_elements ; // the number of elements that will be load or store by each instruction + bool isSMEM; // this is set when using smem instruction + bool isLoad; // this is set when a smem instruction is load, will set number of elements that are loaded at the same time + bool isStore; // similar to isLoad, but for store instructions + bool isBuffer; // + bool isScratch; + + bool isBranch; // this is set for all branch instructions, + bool isConditional; // this is set for all conditional branch instruction, will set branchCond + bool isCall; // this is a call function + + + + // this is set for instructions that directly modify pc + // namely s_setpc and s_swappc + bool isModifyPC; + + // reset the decoder internal state for decoding the next instruction + void reset(); + + Expression::Ptr branchCond; + Expression::Ptr branchTarget; + + void setBranch(){ + isBranch = true; + } + + void setConditionalBranch(){ + isConditional = true; + // TODO : set conditional branch + } + void setModifyPC(){ + isModifyPC = true; + } + + void setCall(){ + isCall = true; + } + + inline unsigned int get32bit(InstructionDecoder::buffer &b,unsigned int offset ); + + template + void setUseImm(InstructionDecoder::buffer & b, unsigned int offset){ + if ( longfield(insn_long) == candidate ){ + useImm = true; + immLen = 4; + immLiteral = get32bit(b,offset); + } + + } + + void setSMEM() {isSMEM = true;} + + + + template + void setLoad(){isLoad = true; this->num_elements = num_elements; } + + template + void setStore() {isStore = true;this->num_elements = num_elements;} + + void setScratch() {isScratch = true;} + + void setBuffer() {isBuffer = true;} + + typedef struct buffer_resource_desc{ + unsigned long long base_address; + unsigned stride; + unsigned cache_swizzle; + unsigned swizzle_enable; + unsigned num_records; + unsigned dst_sel_x; + unsigned dst_sel_y; + unsigned dst_sel_z; + unsigned dst_sel_w; + unsigned num_format; + unsigned data_format; + unsigned user_vm_enable; + unsigned user_vm_mode; + unsigned index_stride; + unsigned add_tid_enable; + unsigned non_volatile; + unsigned type; + }buffer_resource_desc; + + void debug_instr(); + + uint32_t decodeOPR_LITERAL(); + Expression::Ptr decodeOPR_LABEL(uint64_t input); + Expression::Ptr decodeOPR_SIMM4(uint64_t input); + Expression::Ptr decodeOPR_SIMM8(uint64_t input); + Expression::Ptr decodeOPR_SIMM16(uint64_t input); + Expression::Ptr decodeOPR_SIMM32(uint64_t input); + Expression::Ptr decodeOPR_WAITCNT(uint64_t input); + using InstructionDecoderImpl::makeRegisterExpression; + Expression::Ptr makeRegisterExpression(MachRegister registerID); + Expression::Ptr makeRegisterExpression(MachRegister registerID, uint32_t low , uint32_t high ); + void specialHandle(); + #include "amdgpu_cdna2_decoder_impl.h" + #include "decodeOperands.h" + }; + } +} + diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C new file mode 100644 index 0000000000..66947766d8 --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C @@ -0,0 +1,2195 @@ +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_SOP1(uint64_t I){ + switch( I & 4286643968 ){ + case 3196059648: + case 3196059904: + case 3196060672: + case 3196060160: + case 3196060416: + case 3196060928: + case 3196061184: + case 3196061440: + case 3196061696: + case 3196061952: + case 3196063744: + case 3196064000: + case 3196068096: + case 3196067840: + case 3196064256: + case 3196068352: + case 3196071936: + case 3196072448: + case 3196064512: + case 3196068608: + case 3196072704: + case 3196064768: + case 3196068864: + case 3196072960: + case 3196065024: + case 3196069120: + case 3196073216: + case 3196065280: + case 3196069376: + case 3196073472: + case 3196065536: + case 3196069632: + case 3196073728: + case 3196065792: + case 3196069888: + case 3196066048: + case 3196070144: + case 3196062208: + case 3196066304: + case 3196070400: + case 3196062464: + case 3196066560: + case 3196070656: + case 3196062720: + case 3196066816: + case 3196070912: + case 3196067584: + case 3196062976: + case 3196067072: + case 3196071168: + case 3196063232: + case 3196067328: + case 3196071424: + case 3196063488: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_SOPC(uint64_t I){ + switch( I & 4294901760 ){ + case 3204448256: + case 3204513792: + case 3204644864: + case 3204579328: + case 3204710400: + case 3204775936: + case 3204841472: + case 3204907008: + case 3204972544: + case 3205038080: + case 3205103616: + case 3205169152: + case 3205234688: + case 3205300224: + case 3205365760: + case 3205431296: + case 3205693440: + case 3205562368: + case 3205627904: + case 3205496832: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_SOPP(uint64_t I){ + switch( I & 4294901760 ){ + case 3212836864: + case 3212902400: + case 3213033472: + case 3212967936: + case 3213099008: + case 3213164544: + case 3213230080: + case 3213295616: + case 3213361152: + case 3213426688: + case 3213492224: + case 3213623296: + case 3213754368: + case 3214016512: + case 3214147584: + case 3213885440: + case 3214606336: + case 3214737408: + case 3213557760: + case 3213688832: + case 3213819904: + case 3214082048: + case 3213950976: + case 3214213120: + case 3214278656: + case 3214344192: + case 3214475264: + case 3214409728: + case 3214540800: + case 3214671872: + case 3214802944: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_SOPK(uint64_t I){ + switch( I & 4286578688 ){ + case 2952790016: + case 2961178624: + case 2986344448: + case 2969567232: + case 2977955840: + case 2994733056: + case 3003121664: + case 3011510272: + case 3019898880: + case 3028287488: + case 3036676096: + case 3045064704: + case 3053453312: + case 3061841920: + case 3070230528: + case 3078619136: + case 3103784960: + case 3095396352: + case 3128950784: + case 3120562176: + case 3087007744: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_SOP2(uint64_t I){ + switch( I & 4286578688 ){ + case 2147483648: + case 2155872256: + case 2181038080: + case 2164260864: + case 2172649472: + case 2189426688: + case 2197815296: + case 2206203904: + case 2214592512: + case 2222981120: + case 2231369728: + case 2239758336: + case 2248146944: + case 2256535552: + case 2264924160: + case 2273312768: + case 2399141888: + case 2533359616: + case 2407530496: + case 2541748224: + case 2415919104: + case 2550136832: + case 2298478592: + case 2306867200: + case 2290089984: + case 2315255808: + case 2281701376: + case 2323644416: + case 2332033024: + case 2340421632: + case 2348810240: + case 2357198848: + case 2424307712: + case 2558525440: + case 2432696320: + case 2566914048: + case 2441084928: + case 2575302656: + case 2516582400: + case 2449473536: + case 2583691264: + case 2457862144: + case 2466250752: + case 2474639360: + case 2390753280: + case 2483027968: + case 2524971008: + case 2491416576: + case 2365587456: + case 2499805184: + case 2373976064: + case 2508193792: + case 2382364672: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_SMEM(uint64_t I){ + switch( I & 4294705152 ){ + case 3221225472: + case 3221487616: + case 3222274048: + case 3221749760: + case 3222011904: + case 3222536192: + case 3222798336: + case 3223060480: + case 3223322624: + case 3223584768: + case 3223846912: + case 3224109056: + case 3224371200: + case 3225419776: + case 3225681920: + case 3225944064: + case 3249537024: + case 3229614080: + case 3238002688: + case 3246391296: + case 3254779904: + case 3257925632: + case 3263168512: + case 3229876224: + case 3238264832: + case 3246653440: + case 3255042048: + case 3263430656: + case 3266314240: + case 3230138368: + case 3238526976: + case 3246915584: + case 3255304192: + case 3263692800: + case 3230400512: + case 3238789120: + case 3247177728: + case 3255566336: + case 3263954944: + case 3230662656: + case 3239051264: + case 3247439872: + case 3255828480: + case 3264217088: + case 3226730496: + case 3230924800: + case 3239313408: + case 3247702016: + case 3256090624: + case 3264479232: + case 3226992640: + case 3231186944: + case 3239575552: + case 3247964160: + case 3256352768: + case 3264741376: + case 3227254784: + case 3231449088: + case 3239837696: + case 3248226304: + case 3256614912: + case 3265003520: + case 3227516928: + case 3231711232: + case 3240099840: + case 3248488448: + case 3256877056: + case 3265265664: + case 3227779072: + case 3231973376: + case 3240361984: + case 3248750592: + case 3257139200: + case 3265527808: + case 3249274880: + case 3228041216: + case 3240624128: + case 3249012736: + case 3257401344: + case 3265789952: + case 3257663488: + case 3240886272: + case 3266052096: + case 3241148416: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP1(uint64_t I){ + switch( I & 4261543424 ){ + case 2113929216: + case 2113929728: + case 2113930752: + case 2113931264: + case 2113930240: + case 2113931776: + case 2113932288: + case 2113932800: + case 2113933312: + case 2113934336: + case 2113937408: + case 2113937920: + case 2113941504: + case 2113942016: + case 2113946112: + case 2113950208: + case 2113945600: + case 2113954304: + case 2113958400: + case 2113962496: + case 2113949696: + case 2113953792: + case 2113938432: + case 2113942528: + case 2113946624: + case 2113950720: + case 2113954816: + case 2113958912: + case 2113961984: + case 2113963008: + case 2113967104: + case 2113966080: + case 2113934848: + case 2113938944: + case 2113943040: + case 2113947136: + case 2113951232: + case 2113955328: + case 2113959424: + case 2113963520: + case 2113967616: + case 2113935360: + case 2113939456: + case 2113943552: + case 2113947648: + case 2113951744: + case 2113955840: + case 2113959936: + case 2113964032: + case 2113968128: + case 2113971200: + case 2113935872: + case 2113939968: + case 2113944064: + case 2113948160: + case 2113952256: + case 2113956352: + case 2113960448: + case 2113964544: + case 2113968640: + case 2113936384: + case 2113940480: + case 2113944576: + case 2113948672: + case 2113952768: + case 2113960960: + case 2113965056: + case 2113969152: + case 2113936896: + case 2113940992: + case 2113945088: + case 2113949184: + case 2113953280: + case 2113957376: + case 2113961472: + case 2113965568: + case 2113969664: + case 2113966592: + case 2113970688: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOPC(uint64_t I){ + switch( I & 4294836224 ){ + case 2082471936: + case 2082603008: + case 2082865152: + case 2082734080: + case 2082996224: + case 2083127296: + case 2084569088: + case 2084700160: + case 2084831232: + case 2084962304: + case 2085093376: + case 2085617664: + case 2088239104: + case 2092433408: + case 2088763392: + case 2092957696: + case 2096627712: + case 2113404928: + case 2109341696: + case 2105278464: + case 2109865984: + case 2105802752: + case 2101739520: + case 2110390272: + case 2106327040: + case 2102263808: + case 2110914560: + case 2090074112: + case 2106851328: + case 2086010880: + case 2102788096: + case 2094661632: + case 2111438848: + case 2090598400: + case 2107375616: + case 2086535168: + case 2103312384: + case 2095185920: + case 2111963136: + case 2091122688: + case 2107899904: + case 2087059456: + case 2103836672: + case 2095710208: + case 2112487424: + case 2108424192: + case 2087583744: + case 2104360960: + case 2108948480: + case 2096234496: + case 2113011712: + case 2085224448: + case 2085748736: + case 2088370176: + case 2092564480: + case 2088894464: + case 2093088768: + case 2089418752: + case 2093613056: + case 2089943040: + case 2094137344: + case 2092171264: + case 2104885248: + case 2096758784: + case 2113536000: + case 2109472768: + case 2105409536: + case 2101346304: + case 2109997056: + case 2105933824: + case 2101870592: + case 2110521344: + case 2106458112: + case 2102394880: + case 2094268416: + case 2111045632: + case 2090205184: + case 2106982400: + case 2086141952: + case 2102919168: + case 2094792704: + case 2111569920: + case 2090729472: + case 2107506688: + case 2086666240: + case 2103443456: + case 2095316992: + case 2112094208: + case 2091253760: + case 2108030976: + case 2087190528: + case 2103967744: + case 2095841280: + case 2112618496: + case 2108555264: + case 2087714816: + case 2104492032: + case 2113142784: + case 2085355520: + case 2087976960: + case 2088501248: + case 2092695552: + case 2091646976: + case 2089025536: + case 2093219840: + case 2089549824: + case 2093744128: + case 2085879808: + case 2096365568: + case 2105016320: + case 2109079552: + case 2096889856: + case 2113667072: + case 2109603840: + case 2105540608: + case 2101477376: + case 2110128128: + case 2089287680: + case 2106064896: + case 2102001664: + case 2110652416: + case 2089811968: + case 2106589184: + case 2102525952: + case 2094399488: + case 2111176704: + case 2090336256: + case 2107113472: + case 2086273024: + case 2103050240: + case 2094923776: + case 2111700992: + case 2090860544: + case 2107637760: + case 2086797312: + case 2103574528: + case 2095448064: + case 2112225280: + case 2091384832: + case 2108162048: + case 2087321600: + case 2104098816: + case 2095972352: + case 2112749568: + case 2091909120: + case 2108686336: + case 2087845888: + case 2104623104: + case 2085486592: + case 2088108032: + case 2092302336: + case 2088632320: + case 2092826624: + case 2089156608: + case 2093350912: + case 2091778048: + case 2089680896: + case 2093875200: + case 2096496640: + case 2109210624: + case 2113273856: + case 2105147392: + case 2097020928: + case 2113798144: + case 2109734912: + case 2105671680: + case 2101608448: + case 2104229888: + case 2093481984: + case 2110259200: + case 2106195968: + case 2102132736: + case 2094006272: + case 2110783488: + case 2106720256: + case 2102657024: + case 2094530560: + case 2111307776: + case 2090467328: + case 2107244544: + case 2086404096: + case 2103181312: + case 2092040192: + case 2112880640: + case 2095054848: + case 2111832064: + case 2090991616: + case 2107768832: + case 2086928384: + case 2103705600: + case 2108817408: + case 2095579136: + case 2112356352: + case 2091515904: + case 2108293120: + case 2087452672: + case 2104754176: + case 2096103424: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP2(uint64_t I){ + switch( I & 4261412864 ){ + case 0: + case 33554432: + case 134217728: + case 67108864: + case 100663296: + case 167772160: + case 201326592: + case 234881024: + case 268435456: + case 301989888: + case 335544320: + case 369098752: + case 402653184: + case 436207616: + case 469762048: + case 503316480: + case 1174405120: + case 1577058304: + case 1308622848: + case 1442840576: + case 939524096: + case 1073741824: + case 1342177280: + case 603979776: + case 637534208: + case 671088640: + case 570425344: + case 536870912: + case 704643072: + case 738197504: + case 838860800: + case 872415232: + case 905969664: + case 1711276032: + case 1845493760: + case 1979711488: + case 1476395008: + case 973078528: + case 1107296256: + case 1375731712: + case 1509949440: + case 1610612736: + case 1644167168: + case 1744830464: + case 1778384896: + case 1912602624: + case 1879048192: + case 2013265920: + case 1006632960: + case 1140850688: + case 1275068416: + case 1409286144: + case 1543503872: + case 1677721600: + case 1811939328: + case 1946157056: + case 2046820352: + case 1040187392: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VINTRP(uint64_t I){ + switch( I & 4227858432 ){ + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP3P(uint64_t I){ + switch( I & 4294901760 ){ + case 3548381184: + case 3548446720: + case 3548577792: + case 3548512256: + case 3548643328: + case 3548708864: + case 3548774400: + case 3548839936: + case 3548905472: + case 3548971008: + case 3549036544: + case 3549167616: + case 3549298688: + case 3549560832: + case 3550478336: + case 3549429760: + case 3554213888: + case 3551723520: + case 3549102080: + case 3549233152: + case 3549364224: + case 3550543872: + case 3549495296: + case 3550674944: + case 3550937088: + case 3551068160: + case 3551199232: + case 3551592448: + case 3551657984: + case 3554148352: + case 3550609408: + case 3550871552: + case 3551002624: + case 3551133696: + case 3551526912: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP3(uint64_t I){ + switch( I & 4294901760 ){ + case 3510632448: + case 3510697984: + case 3510829056: + case 3510763520: + case 3510894592: + case 3510960128: + case 3511025664: + case 3511091200: + case 3511156736: + case 3511287808: + case 3511353344: + case 3514826752: + case 3506438144: + case 3523215360: + case 3508535296: + case 3491758080: + case 3505913856: + case 3504668672: + case 3503423488: + case 3496017920: + case 3512795136: + case 3514892288: + case 3506503680: + case 3531669504: + case 3533766656: + case 3500212224: + case 3519086592: + case 3523280896: + case 3508600832: + case 3500933120: + case 3505520640: + case 3519152128: + case 3521249280: + case 3514957824: + case 3506569216: + case 3512860672: + case 3523346432: + case 3508666368: + case 3491889152: + case 3493986304: + case 3496083456: + case 3504275456: + case 3493855232: + case 3503030272: + case 3508731904: + case 3491954688: + case 3494051840: + case 3496148992: + case 3512926208: + case 3515023360: + case 3506634752: + case 3531800576: + case 3500343296: + case 3519217664: + case 3506372608: + case 3495952384: + case 3505127424: + case 3531866112: + case 3500408832: + case 3519283200: + case 3521380352: + case 3515088896: + case 3506700288: + case 3512991744: + case 3523477504: + case 3492020224: + case 3494117376: + case 3503882240: + case 3502637056: + case 3501391872: + case 3521445888: + case 3523543040: + case 3492085760: + case 3494182912: + case 3496280064: + case 3513057280: + case 3515154432: + case 3506765824: + case 3531931648: + case 3500474368: + case 3505979392: + case 3500146688: + case 3504734208: + case 3503489024: + case 3494248448: + case 3496345600: + case 3531997184: + case 3500539904: + case 3519414272: + case 3521511424: + case 3515219968: + case 3513122816: + case 3506831360: + case 3523608576: + case 3502243840: + case 3491823616: + case 3532259328: + case 3500998656: + case 3505586176: + case 3500605440: + case 3519479808: + case 3521576960: + case 3523674112: + case 3508994048: + case 3492216832: + case 3494313984: + case 3496411136: + case 3513188352: + case 3515285504: + case 3495165952: + case 3504340992: + case 3493920768: + case 3519348736: + case 3508928512: + case 3503095808: + case 3515351040: + case 3506962432: + case 3509059584: + case 3492282368: + case 3494379520: + case 3513253888: + case 3496476672: + case 3532128256: + case 3519545344: + case 3500670976: + case 3505192960: + case 3496542208: + case 3513319424: + case 3515416576: + case 3532193792: + case 3519610880: + case 3507027968: + case 3509125120: + case 3492347904: + case 3494445056: + case 3500736512: + case 3503947776: + case 3502702592: + case 3519676416: + case 3521773568: + case 3515482112: + case 3513384960: + case 3507093504: + case 3509190656: + case 3492413440: + case 3494510592: + case 3496607744: + case 3491037184: + case 3501457408: + case 3506044928: + case 3504799744: + case 3509256192: + case 3492478976: + case 3494576128: + case 3496673280: + case 3513450496: + case 3515547648: + case 3507159040: + case 3532324864: + case 3519741952: + case 3521839104: + case 3503554560: + case 3512729600: + case 3502309376: + case 3506896896: + case 3501064192: + case 3532390400: + case 3519807488: + case 3521904640: + case 3511418880: + case 3515613184: + case 3513516032: + case 3507224576: + case 3509321728: + case 3492544512: + case 3494641664: + case 3505651712: + case 3504406528: + case 3503161344: + case 3521970176: + case 3507290112: + case 3509387264: + case 3492610048: + case 3494707200: + case 3496804352: + case 3513581568: + case 3511484416: + case 3515678720: + case 3532455936: + case 3505258496: + case 3494772736: + case 3496869888: + case 3492675584: + case 3519938560: + case 3522035712: + case 3511549952: + case 3515744256: + case 3513647104: + case 3507355648: + case 3509452800: + case 3519021056: + case 3502768128: + case 3532783616: + case 3522363392: + case 3520004096: + case 3522101248: + case 3507421184: + case 3509518336: + case 3492741120: + case 3494838272: + case 3496935424: + case 3513712640: + case 3511615488: + case 3515809792: + case 3501522944: + case 3506110464: + case 3500277760: + case 3504865280: + case 3519873024: + case 3511681024: + case 3507486720: + case 3490709504: + case 3509583872: + case 3492806656: + case 3494903808: + case 3513778176: + case 3497000960: + case 3532652544: + case 3520069632: + case 3503620096: + case 3502374912: + case 3501129728: + case 3497066496: + case 3515940864: + case 3513843712: + case 3511746560: + case 3532718080: + case 3520135168: + case 3494969344: + case 3522232320: + case 3507552256: + case 3490775040: + case 3505717248: + case 3504472064: + case 3503226880: + case 3520200704: + case 3522297856: + case 3511812096: + case 3513909248: + case 3516006400: + case 3507617792: + case 3490840576: + case 3509714944: + case 3492937728: + case 3495034880: + case 3505324032: + case 3509780480: + case 3493003264: + case 3495100416: + case 3497197568: + case 3513974784: + case 3511877632: + case 3532849152: + case 3490906112: + case 3507683328: + case 3520266240: + case 3504078848: + case 3502833664: + case 3532914688: + case 3493068800: + case 3520331776: + case 3511943168: + case 3514040320: + case 3522428928: + case 3497263104: + case 3507748864: + case 3490971648: + case 3509846016: + case 3506176000: + case 3501326336: + case 3531603968: + case 3504930816: + case 3520397312: + case 3495231488: + case 3522494464: + case 3507814400: + case 3509911552: + case 3493134336: + case 3512008704: + case 3514105856: + case 3497328640: + case 3532980224: + case 3503685632: + case 3533701120: + case 3502440448: + case 3501195264: + case 3509977088: + case 3493199872: + case 3495297024: + case 3533045760: + case 3520462848: + case 3512074240: + case 3522560000: + case 3497394176: + case 3507879936: + case 3501588480: + case 3505782784: + case 3504537600: + case 3503292416: + case 3492872192: + case 3533111296: + case 3520528384: + case 3522625536: + case 3510042624: + case 3493265408: + case 3495362560: + case 3512139776: + case 3514236928: + case 3497459712: + case 3501654016: + case 3496214528: + case 3532062720: + case 3500802048: + case 3505389568: + case 3512205312: + case 3522691072: + case 3510108160: + case 3493330944: + case 3495428096: + case 3497525248: + case 3533176832: + case 3520593920: + case 3501719552: + case 3503816704: + case 3504144384: + case 3502899200: + case 3495493632: + case 3512270848: + case 3514368000: + case 3497590784: + case 3533242368: + case 3520659456: + case 3522756608: + case 3510173696: + case 3493396480: + case 3501785088: + case 3506241536: + case 3504996352: + case 3520724992: + case 3514433536: + case 3512336384: + case 3522822144: + case 3510239232: + case 3493462016: + case 3495559168: + case 3497656320: + case 3533307904: + case 3501850624: + case 3503751168: + case 3502505984: + case 3501260800: + case 3510304768: + case 3493527552: + case 3495624704: + case 3512401920: + case 3514499072: + case 3497721856: + case 3520790528: + case 3522887680: + case 3501916160: + case 3504013312: + case 3505848320: + case 3504603136: + case 3503357952: + case 3497787392: + case 3533438976: + case 3520856064: + case 3514564608: + case 3512467456: + case 3522953216: + case 3510370304: + case 3493593088: + case 3495690240: + case 3501981696: + case 3500867584: + case 3505455104: + case 3520921600: + case 3523018752: + case 3510435840: + case 3493658624: + case 3495755776: + case 3512532992: + case 3514630144: + case 3497852928: + case 3533504512: + case 3502047232: + case 3502964736: + case 3497132032: + case 3493724160: + case 3495821312: + case 3497918464: + case 3533570048: + case 3520987136: + case 3514695680: + case 3512598528: + case 3523084288: + case 3502112768: + case 3504209920: + case 3506307072: + case 3531735040: + case 3521314816: + case 3505061888: + case 3509649408: + case 3533635584: + case 3521052672: + case 3523149824: + case 3508469760: + case 3493789696: + case 3495886848: + case 3512664064: + case 3514761216: + case 3497984000: + case 3502178304: + case 3523411968: + case 3502571520: + case 3492151296: + case 3496738816: + case 3532587008: + case 3522166784: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_DS(uint64_t I){ + switch( I & 4261281792 ){ + case 3623878656: + case 3624009728: + case 3624271872: + case 3624140800: + case 3624402944: + case 3624534016: + case 3624665088: + case 3624796160: + case 3624927232: + case 3625058304: + case 3625189376: + case 3625451520: + case 3631742976: + case 3635412992: + case 3628072960: + case 3632267264: + case 3640131584: + case 3644194816: + case 3648782336: + case 3636592640: + case 3637116928: + case 3637641216: + case 3633577984: + case 3629514752: + case 3638165504: + case 3634102272: + case 3630039040: + case 3625975808: + case 3638689792: + case 3634626560: + case 3630563328: + case 3626500096: + case 3635150848: + case 3631087616: + case 3643801600: + case 3625582592: + case 3627679744: + case 3631874048: + case 3631349760: + case 3635544064: + case 3628204032: + case 3632398336: + case 3628728320: + case 3632922624: + case 3629252608: + case 3644325888: + case 3652976640: + case 3636723712: + case 3628597248: + case 3637248000: + case 3629121536: + case 3637772288: + case 3633709056: + case 3629645824: + case 3638296576: + case 3634233344: + case 3630170112: + case 3626106880: + case 3638820864: + case 3634757632: + case 3630694400: + case 3626631168: + case 3639345152: + case 3635281920: + case 3631218688: + case 3643932672: + case 3625713664: + case 3631480832: + case 3627810816: + case 3632005120: + case 3628335104: + case 3632529408: + case 3635675136: + case 3628859392: + case 3633053696: + case 3629383680: + case 3644456960: + case 3640393728: + case 3657170944: + case 3653107712: + case 3636854784: + case 3632791552: + case 3644063744: + case 3637379072: + case 3633315840: + case 3637903360: + case 3633840128: + case 3629776896: + case 3638427648: + case 3634364416: + case 3630301184: + case 3626237952: + case 3647733760: + case 3638951936: + case 3634888704: + case 3630825472: + case 3639476224: + case 3625320448: + case 3625844736: + case 3631611904: + case 3627941888: + case 3632136192: + case 3628466176: + case 3632660480: + case 3628990464: + case 3633184768: + case 3635806208: + case 3635937280: + case 3648651264: + case 3657302016: + case 3636461568: + case 3636985856: + case 3637510144: + case 3633446912: + case 3638034432: + case 3633971200: + case 3629907968: + case 3638558720: + case 3634495488: + case 3630432256: + case 3626369024: + case 3635019776: + case 3630956544: + case 3639607296: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_MUBUF(uint64_t I){ + switch( I & 4261150720 ){ + case 3758096384: + case 3758358528: + case 3759144960: + case 3758620672: + case 3758882816: + case 3759407104: + case 3759669248: + case 3759931392: + case 3760193536: + case 3760455680: + case 3760717824: + case 3760979968: + case 3761242112: + case 3761504256: + case 3761766400: + case 3762028544: + case 3765698560: + case 3765960704: + case 3774349312: + case 3778019328: + case 3778543616: + case 3766222848: + case 3774611456: + case 3778805760: + case 3786407936: + case 3762290688: + case 3766484992: + case 3774873600: + case 3779067904: + case 3783262208: + case 3762552832: + case 3766747136: + case 3775135744: + case 3779330048: + case 3783524352: + case 3762814976: + case 3767009280: + case 3775397888: + case 3783786496: + case 3774087168: + case 3763077120: + case 3767271424: + case 3775660032: + case 3778281472: + case 3784048640: + case 3763339264: + case 3767533568: + case 3775922176: + case 3784310784: + case 3763601408: + case 3767795712: + case 3776184320: + case 3784572928: + case 3763863552: + case 3768057856: + case 3776446464: + case 3784835072: + case 3764125696: + case 3768320000: + case 3776708608: + case 3785097216: + case 3764387840: + case 3768582144: + case 3776970752: + case 3785359360: + case 3777757184: + case 3764649984: + case 3768844288: + case 3777232896: + case 3785621504: + case 3786145792: + case 3764912128: + case 3777495040: + case 3785883648: + case 3765174272: + case 3765436416: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_MTBUF(uint64_t I){ + switch( I & 4228349952 ){ + case 3892314112: + case 3892346880: + case 3892412416: + case 3892445184: + case 3892379648: + case 3892477952: + case 3892510720: + case 3892543488: + case 3892576256: + case 3892609024: + case 3892641792: + case 3892674560: + case 3892707328: + case 3892740096: + case 3892772864: + case 3892805632: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_MIMG(uint64_t I){ + switch( I & 4261150720 ){ + case 4026531840: + case 4026793984: + case 4027580416: + case 4027056128: + case 4027318272: + case 4027842560: + case 4028628992: + case 4028891136: + case 4029153280: + case 4029415424: + case 4030201856: + case 4030726144: + case 4030988288: + case 4031250432: + case 4031512576: + case 4031774720: + case 4034920448: + case 4032036864: + case 4032299008: + case 4032561152: + case 4032823296: + case 4033085440: + case 4033347584: + case 4033609728: + case 4033871872: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_FLAT(uint64_t I){ + switch( I & 4261199872 ){ + case 3695181824: + case 3695443968: + case 3696230400: + case 3695706112: + case 3695968256: + case 3696492544: + case 3696754688: + case 3697016832: + case 3697278976: + case 3697541120: + case 3697803264: + case 3698065408: + case 3698327552: + case 3698589696: + case 3698851840: + case 3699113984: + case 3711696896: + case 3699376128: + case 3707764736: + case 3711959040: + case 3716153344: + case 3699638272: + case 3708026880: + case 3712221184: + case 3716415488: + case 3719036928: + case 3699900416: + case 3708289024: + case 3716677632: + case 3700162560: + case 3708551168: + case 3716939776: + case 3700424704: + case 3708813312: + case 3717201920: + case 3700686848: + case 3709075456: + case 3717464064: + case 3709337600: + case 3717726208: + case 3709599744: + case 3717988352: + case 3719299072: + case 3709861888: + case 3718250496: + case 3710124032: + case 3718512640: + case 3710386176: + case 3718774784: + case 3710648320: + case 3710910464: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_FLAT_GLBL(uint64_t I){ + switch( I & 4261199872 ){ + case 3695214592: + case 3695476736: + case 3696263168: + case 3696001024: + case 3695738880: + case 3696525312: + case 3696787456: + case 3697049600: + case 3697311744: + case 3697573888: + case 3697836032: + case 3710156800: + case 3718545408: + case 3710418944: + case 3718807552: + case 3710681088: + case 3719069696: + case 3710943232: + case 3719331840: + case 3698098176: + case 3698360320: + case 3698622464: + case 3698884608: + case 3699146752: + case 3699408896: + case 3699671040: + case 3699933184: + case 3700457472: + case 3700195328: + case 3711205376: + case 3711467520: + case 3718021120: + case 3711729664: + case 3707797504: + case 3711991808: + case 3716186112: + case 3708059648: + case 3712253952: + case 3716448256: + case 3708321792: + case 3716710400: + case 3709894656: + case 3708583936: + case 3716972544: + case 3718283264: + case 3708846080: + case 3717234688: + case 3700719616: + case 3709108224: + case 3717496832: + case 3709370368: + case 3717758976: + case 3709632512: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_FLAT_SCRATCH(uint64_t I){ + switch( I & 4261199872 ){ + case 3695198208: + case 3695460352: + case 3696246784: + case 3695722496: + case 3695984640: + case 3696508928: + case 3696771072: + case 3697033216: + case 3697295360: + case 3697557504: + case 3697819648: + case 3698081792: + case 3698343936: + case 3698606080: + case 3698868224: + case 3699130368: + case 3699392512: + case 3699654656: + case 3699916800: + case 3700178944: + case 3700441088: + case 3700703232: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP2_LITERAL(uint64_t I){ + switch( I & 4261412864 ){ + case 771751936: + case 805306368: + case 1207959552: + case 1241513984: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP3B(uint64_t I){ + switch( I & 4294901760 ){ + case 3508076544: + case 3508142080: + case 3508338688: + case 3508207616: + case 3508273152: + case 3508404224: + case 3521118208: + case 3521183744: + case 3521642496: + case 3521708032: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_cdna2::IS_ENC_VOP3P_MFMA(uint64_t I){ + switch( I & 4294901760 ){ + case 3552575488: + case 3552641024: + case 3552903168: + case 3552706560: + case 3552837632: + case 3553099776: + case 3553165312: + case 3553230848: + case 3553361920: + case 3553427456: + case 3553624064: + case 3553755136: + case 3553886208: + case 3554934784: + case 3555065856: + case 3555196928: + case 3553689600: + case 3553951744: + case 3554869248: + case 3555000320: + case 3555131392: + case 3555262464: + case 3555393536: + case 3555524608: + case 3555655680: + case 3555459072: + case 3555590144: + return true; + default: + return false; + } +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_SOP1(){ + insn_size = 4; + layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<8,15>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SSRC0 = longfield<0,7>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOP1Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_SOPC(){ + insn_size = 4; + layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.SSRC0 = longfield<0,7>(insn_long); + layout.SSRC1 = longfield<8,15>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOPCOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_SOPP(){ + insn_size = 4; + layout_ENC_SOPP & layout = insn_layout.ENC_SOPP; + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.SIMM16 = longfield<0,15>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOPPOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_SOPK(){ + insn_size = 4; + layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; + layout.ENCODING = longfield<28,31>(insn_long); + layout.OP = longfield<23,27>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SIMM16 = longfield<0,15>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOPKOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_SOP2(){ + insn_size = 4; + layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; + layout.ENCODING = longfield<30,31>(insn_long); + layout.OP = longfield<23,29>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SSRC0 = longfield<0,7>(insn_long); + layout.SSRC1 = longfield<8,15>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOP2Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_SMEM(){ + insn_size = 8; + layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.IMM = longfield<17,17>(insn_long); + layout.NV = longfield<15,15>(insn_long); + layout.OFFSET = longfield<32,52>(insn_long); + layout.OP = longfield<18,25>(insn_long); + layout.SBASE = (longfield<0,5>(insn_long) << 1 ) | 0 ; + layout.SDATA = longfield<6,12>(insn_long); + layout.SOFFSET = longfield<57,63>(insn_long); + layout.SOFFSET_EN = longfield<14,14>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SMEMOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP1(){ + insn_size = 4; + layout_ENC_VOP1 & layout = insn_layout.ENC_VOP1; + layout.ENCODING = longfield<25,31>(insn_long); + layout.OP = longfield<9,16>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VDST = longfield<17,24>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP1Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOPC(){ + insn_size = 4; + layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; + layout.ENCODING = longfield<25,31>(insn_long); + layout.OP = longfield<17,24>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VSRC1 = longfield<9,16>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOPCOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP2(){ + insn_size = 4; + layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; + layout.ENCODING = longfield<31,31>(insn_long); + layout.OP = longfield<25,30>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VDST = longfield<17,24>(insn_long); + layout.VSRC1 = longfield<9,16>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP2Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VINTRP(){ + insn_size = 4; + layout_ENC_VINTRP & layout = insn_layout.ENC_VINTRP; + layout.ATTR = longfield<10,15>(insn_long); + layout.ATTRCHAN = longfield<8,9>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.OP = longfield<16,17>(insn_long); + layout.VDST = longfield<18,25>(insn_long); + layout.VSRC = longfield<0,7>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VINTRPOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P(){ + insn_size = 8; + layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; + layout.CLAMP = longfield<15,15>(insn_long); + layout.ENCODING = longfield<23,31>(insn_long); + layout.NEG = longfield<61,63>(insn_long); + layout.NEG_HI = longfield<8,10>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.OP_SEL = longfield<11,13>(insn_long); + layout.OP_SEL_HI = longfield<59,60>(insn_long); + layout.OP_SEL_HI_2 = longfield<14,14>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3POperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3(){ + insn_size = 8; + layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; + layout.ABS = longfield<8,10>(insn_long); + layout.CLAMP = longfield<15,15>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.NEG = longfield<61,63>(insn_long); + layout.OMOD = longfield<59,60>(insn_long); + layout.OP = longfield<16,25>(insn_long); + layout.OP_SEL = longfield<11,14>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_DS(){ + insn_size = 8; + layout_ENC_DS & layout = insn_layout.ENC_DS; + layout.ACC = longfield<25,25>(insn_long); + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA0 = longfield<40,47>(insn_long); + layout.DATA1 = longfield<48,55>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GDS = longfield<16,16>(insn_long); + layout.OFFSET0 = longfield<0,7>(insn_long); + layout.OFFSET1 = longfield<8,15>(insn_long); + layout.OP = longfield<17,24>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_DS_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_DSOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_MUBUF(){ + insn_size = 8; + layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; + layout.ACC = longfield<55,55>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<14,14>(insn_long); + layout.IDXEN = longfield<13,13>(insn_long); + layout.LDS = longfield<16,16>(insn_long); + layout.OFFEN = longfield<12,12>(insn_long); + layout.OFFSET = longfield<0,11>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SCC = longfield<15,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.SOFFSET = longfield<56,63>(insn_long); + layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; + layout.VADDR = longfield<32,39>(insn_long); + layout.VDATA = longfield<40,47>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_MUBUFOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_MTBUF(){ + insn_size = 8; + layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; + layout.ACC = longfield<55,55>(insn_long); + layout.DFMT = longfield<19,22>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<14,14>(insn_long); + layout.IDXEN = longfield<13,13>(insn_long); + layout.NFMT = longfield<23,25>(insn_long); + layout.OFFEN = longfield<12,12>(insn_long); + layout.OFFSET = longfield<0,11>(insn_long); + layout.OP = longfield<15,18>(insn_long); + layout.SCC = longfield<53,53>(insn_long); + layout.SLC = longfield<54,54>(insn_long); + layout.SOFFSET = longfield<56,63>(insn_long); + layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; + layout.VADDR = longfield<32,39>(insn_long); + layout.VDATA = longfield<40,47>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_MTBUFOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_MIMG(){ + insn_size = 8; + layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; + layout.A16 = longfield<15,15>(insn_long); + layout.ACC = longfield<16,16>(insn_long); + layout.D16 = longfield<63,63>(insn_long); + layout.DA = longfield<14,14>(insn_long); + layout.DMASK = longfield<8,11>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<13,13>(insn_long); + layout.LWE = longfield<17,17>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.OPM = longfield<0,0>(insn_long); + layout.SCC = longfield<7,7>(insn_long); + layout.SLC = longfield<25,25>(insn_long); + layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; + layout.SSAMP = (longfield<53,57>(insn_long) << 2 ) | 0 ; + layout.UNORM = longfield<12,12>(insn_long); + layout.VADDR = longfield<32,39>(insn_long); + layout.VDATA = longfield<40,47>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_MIMGOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT(){ + insn_size = 8; + layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; + layout.ACC = longfield<55,55>(insn_long); + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA = longfield<40,47>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.LDS = longfield<13,13>(insn_long); + layout.OFFSET = longfield<0,11>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SADDR = longfield<48,54>(insn_long); + layout.SCC = longfield<25,25>(insn_long); + layout.SEG = longfield<14,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_FLATOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT_GLBL(){ + insn_size = 8; + layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; + layout.ACC = longfield<55,55>(insn_long); + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA = longfield<40,47>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.LDS = longfield<13,13>(insn_long); + layout.OFFSET = longfield<0,12>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SADDR = longfield<48,54>(insn_long); + layout.SCC = longfield<25,25>(insn_long); + layout.SEG = longfield<14,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_FLAT_GLBLOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT_SCRATCH(){ + insn_size = 8; + layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; + layout.ACC = longfield<55,55>(insn_long); + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA = longfield<40,47>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.LDS = longfield<13,13>(insn_long); + layout.OFFSET = longfield<0,12>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SADDR = longfield<48,54>(insn_long); + layout.SCC = longfield<25,25>(insn_long); + layout.SEG = longfield<14,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_FLAT_SCRATCHOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP2_LITERAL(){ + insn_size = 8; + layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; + layout.ENCODING = longfield<31,31>(insn_long); + layout.OP = longfield<25,30>(insn_long); + layout.SIMM32 = longfield<32,63>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VDST = longfield<17,24>(insn_long); + layout.VSRC1 = longfield<9,16>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP2_LITERALOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3B(){ + insn_size = 8; + layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; + layout.CLAMP = longfield<15,15>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.NEG = longfield<61,63>(insn_long); + layout.OMOD = longfield<59,60>(insn_long); + layout.OP = longfield<16,25>(insn_long); + layout.SDST = longfield<8,14>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3BOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P_MFMA(){ + insn_size = 8; + layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; + layout.ABID = longfield<11,14>(insn_long); + layout.ACC = longfield<59,60>(insn_long); + layout.ACC_CD = longfield<15,15>(insn_long); + layout.BLGP = longfield<61,63>(insn_long); + layout.CBSZ = longfield<8,10>(insn_long); + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3P_MFMAOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_cdna2::mainDecodeOpcode(){ + if(IS_ENC_SOP1(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[longfield<8,15>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOP1; + } + else if(IS_ENC_SOPC(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[longfield<16,22>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOPC; + } + else if(IS_ENC_SOPP(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[longfield<16,22>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOPP; + } + else if(IS_ENC_SOPK(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[longfield<23,27>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOPK; + } + else if(IS_ENC_SOP2(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[longfield<23,29>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOP2; + } + else if(IS_ENC_SMEM(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[longfield<18,25>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SMEM; + } + else if(IS_ENC_VOP1(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[longfield<9,16>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP1; + } + else if(IS_ENC_VOPC(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[longfield<17,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOPC; + } + else if(IS_ENC_VOP2(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[longfield<25,30>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP2; + } + else if(IS_ENC_VINTRP(insn_long)){ + insn_size = 4; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[longfield<16,17>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VINTRP; + } + else if(IS_ENC_VOP3P(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[longfield<16,22>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3P; + } + else if(IS_ENC_VOP3(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[longfield<16,25>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3; + } + else if(IS_ENC_DS(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_DS_insn_table[longfield<17,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_DS; + } + else if(IS_ENC_MUBUF(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[longfield<18,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_MUBUF; + } + else if(IS_ENC_MTBUF(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[longfield<15,18>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_MTBUF; + } + else if(IS_ENC_MIMG(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[longfield<18,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_MIMG; + } + else if(IS_ENC_FLAT(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[longfield<18,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_FLAT; + } + else if(IS_ENC_FLAT_GLBL(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[longfield<18,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_FLAT_GLBL; + } + else if(IS_ENC_FLAT_SCRATCH(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[longfield<18,24>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_FLAT_SCRATCH; + } + else if(IS_ENC_VOP2_LITERAL(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[longfield<25,30>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP2_LITERAL; + } + else if(IS_ENC_VOP3B(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[longfield<16,25>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3B; + } + else if(IS_ENC_VOP3P_MFMA(insn_long)){ + insn_size = 8; + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[longfield<16,22>(insn_long)]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3P_MFMA; + } +} +void InstructionDecoder_amdgpu_cdna2::mainDecode(){ + if(IS_ENC_SOP1(insn_long)){ + decodeENC_SOP1(); + } + else if(IS_ENC_SOPC(insn_long)){ + decodeENC_SOPC(); + } + else if(IS_ENC_SOPP(insn_long)){ + decodeENC_SOPP(); + } + else if(IS_ENC_SOPK(insn_long)){ + decodeENC_SOPK(); + } + else if(IS_ENC_SOP2(insn_long)){ + decodeENC_SOP2(); + } + else if(IS_ENC_SMEM(insn_long)){ + decodeENC_SMEM(); + } + else if(IS_ENC_VOP1(insn_long)){ + decodeENC_VOP1(); + } + else if(IS_ENC_VOPC(insn_long)){ + decodeENC_VOPC(); + } + else if(IS_ENC_VOP2(insn_long)){ + decodeENC_VOP2(); + } + else if(IS_ENC_VINTRP(insn_long)){ + decodeENC_VINTRP(); + } + else if(IS_ENC_VOP3P(insn_long)){ + decodeENC_VOP3P(); + } + else if(IS_ENC_VOP3(insn_long)){ + decodeENC_VOP3(); + } + else if(IS_ENC_DS(insn_long)){ + decodeENC_DS(); + } + else if(IS_ENC_MUBUF(insn_long)){ + decodeENC_MUBUF(); + } + else if(IS_ENC_MTBUF(insn_long)){ + decodeENC_MTBUF(); + } + else if(IS_ENC_MIMG(insn_long)){ + decodeENC_MIMG(); + } + else if(IS_ENC_FLAT(insn_long)){ + decodeENC_FLAT(); + } + else if(IS_ENC_FLAT_GLBL(insn_long)){ + decodeENC_FLAT_GLBL(); + } + else if(IS_ENC_FLAT_SCRATCH(insn_long)){ + decodeENC_FLAT_SCRATCH(); + } + else if(IS_ENC_VOP2_LITERAL(insn_long)){ + decodeENC_VOP2_LITERAL(); + } + else if(IS_ENC_VOP3B(insn_long)){ + decodeENC_VOP3B(); + } + else if(IS_ENC_VOP3P_MFMA(insn_long)){ + decodeENC_VOP3P_MFMA(); + } +} diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h new file mode 100644 index 0000000000..aad5a985a4 --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h @@ -0,0 +1,378 @@ +static bool IS_ENC_SOP1(uint64_t I); +static bool IS_ENC_SOPC(uint64_t I); +static bool IS_ENC_SOPP(uint64_t I); +static bool IS_ENC_SOPK(uint64_t I); +static bool IS_ENC_SOP2(uint64_t I); +static bool IS_ENC_SMEM(uint64_t I); +static bool IS_ENC_VOP1(uint64_t I); +static bool IS_ENC_VOPC(uint64_t I); +static bool IS_ENC_VOP2(uint64_t I); +static bool IS_ENC_VINTRP(uint64_t I); +static bool IS_ENC_VOP3P(uint64_t I); +static bool IS_ENC_VOP3(uint64_t I); +static bool IS_ENC_DS(uint64_t I); +static bool IS_ENC_MUBUF(uint64_t I); +static bool IS_ENC_MTBUF(uint64_t I); +static bool IS_ENC_MIMG(uint64_t I); +static bool IS_ENC_FLAT(uint64_t I); +static bool IS_ENC_FLAT_GLBL(uint64_t I); +static bool IS_ENC_FLAT_SCRATCH(uint64_t I); +static bool IS_ENC_VOP2_LITERAL(uint64_t I); +static bool IS_ENC_VOP3B(uint64_t I); +static bool IS_ENC_VOP3P_MFMA(uint64_t I); +enum InstructionFamily{ + ENC_SOP1 = -1, + ENC_SOPC = 0, + ENC_SOPP = 1, + ENC_SOPK = 2, + ENC_SOP2 = 3, + ENC_SMEM = 4, + ENC_VOP1 = 5, + ENC_VOPC = 6, + ENC_VOP2 = 7, + ENC_VINTRP = 8, + ENC_VOP3P = 9, + ENC_VOP3 = 10, + ENC_DS = 11, + ENC_MUBUF = 12, + ENC_MTBUF = 13, + ENC_MIMG = 14, + ENC_FLAT = 16, + ENC_FLAT_GLBL = 17, + ENC_FLAT_SCRATCH = 18, + ENC_VOP2_LITERAL = 19, + ENC_VOP3B = 20, + ENC_VOP3P_MFMA = 21, +}; +InstructionFamily instr_family; +typedef void (InstructionDecoder_amdgpu_cdna2::*func_ptr)(void); +func_ptr decode_lookup_table [22] = { + (&InstructionDecoder_amdgpu_cdna2::decodeENC_SOP1), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_SOPC), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_SOPP), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_SOPK), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_SOP2), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_SMEM), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP1), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOPC), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP2), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VINTRP), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_DS), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_MUBUF), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_MTBUF), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_MIMG), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT_GLBL), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT_SCRATCH), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP2_LITERAL), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3B), + (&InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P_MFMA), +}; +typedef struct layout_ENC_SOP1{ + uint16_t ENCODING : 9 ; + uint8_t OP : 8 ; + uint8_t SDST : 7 ; + uint8_t SSRC0 : 8 ; +}layout_ENC_SOP1; +typedef struct layout_ENC_SOPC{ + uint16_t ENCODING : 9 ; + uint8_t OP : 7 ; + uint8_t SSRC0 : 8 ; + uint8_t SSRC1 : 8 ; +}layout_ENC_SOPC; +typedef struct layout_ENC_SOPP{ + uint16_t ENCODING : 9 ; + uint8_t OP : 7 ; + uint16_t SIMM16 : 16 ; +}layout_ENC_SOPP; +typedef struct layout_ENC_SOPK{ + uint8_t ENCODING : 4 ; + uint8_t OP : 5 ; + uint8_t SDST : 7 ; + uint16_t SIMM16 : 16 ; +}layout_ENC_SOPK; +typedef struct layout_ENC_SOP2{ + uint8_t ENCODING : 2 ; + uint8_t OP : 7 ; + uint8_t SDST : 7 ; + uint8_t SSRC0 : 8 ; + uint8_t SSRC1 : 8 ; +}layout_ENC_SOP2; +typedef struct layout_ENC_SMEM{ + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t IMM : 1 ; + uint8_t NV : 1 ; + uint32_t OFFSET : 21 ; + uint8_t OP : 8 ; + uint8_t SBASE : 6 ; + uint8_t SDATA : 7 ; + uint8_t SOFFSET : 7 ; + uint8_t SOFFSET_EN : 1 ; +}layout_ENC_SMEM; +typedef struct layout_ENC_VOP1{ + uint8_t ENCODING : 7 ; + uint8_t OP : 8 ; + uint16_t SRC0 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP1; +typedef struct layout_ENC_VOPC{ + uint8_t ENCODING : 7 ; + uint8_t OP : 8 ; + uint16_t SRC0 : 9 ; + uint8_t VSRC1 : 8 ; +}layout_ENC_VOPC; +typedef struct layout_ENC_VOP2{ + uint8_t ENCODING : 1 ; + uint8_t OP : 6 ; + uint16_t SRC0 : 9 ; + uint8_t VDST : 8 ; + uint8_t VSRC1 : 8 ; +}layout_ENC_VOP2; +typedef struct layout_ENC_VINTRP{ + uint8_t ATTR : 6 ; + uint8_t ATTRCHAN : 2 ; + uint8_t ENCODING : 6 ; + uint8_t OP : 2 ; + uint8_t VDST : 8 ; + uint8_t VSRC : 8 ; +}layout_ENC_VINTRP; +typedef struct layout_ENC_VOP3P{ + uint8_t CLAMP : 1 ; + uint16_t ENCODING : 9 ; + uint8_t NEG : 3 ; + uint8_t NEG_HI : 3 ; + uint8_t OP : 7 ; + uint8_t OP_SEL : 3 ; + uint8_t OP_SEL_HI : 2 ; + uint8_t OP_SEL_HI_2 : 1 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3P; +typedef struct layout_ENC_VOP3{ + uint8_t ABS : 3 ; + uint8_t CLAMP : 1 ; + uint8_t ENCODING : 6 ; + uint8_t NEG : 3 ; + uint8_t OMOD : 2 ; + uint16_t OP : 10 ; + uint8_t OP_SEL : 4 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3; +typedef struct layout_ENC_DS{ + uint8_t ACC : 1 ; + uint8_t ADDR : 8 ; + uint8_t DATA0 : 8 ; + uint8_t DATA1 : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GDS : 1 ; + uint8_t OFFSET0 : 8 ; + uint8_t OFFSET1 : 8 ; + uint8_t OP : 8 ; + uint8_t VDST : 8 ; +}layout_ENC_DS; +typedef struct layout_ENC_MUBUF{ + uint8_t ACC : 1 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t IDXEN : 1 ; + uint8_t LDS : 1 ; + uint8_t OFFEN : 1 ; + uint16_t OFFSET : 12 ; + uint8_t OP : 7 ; + uint8_t SCC : 1 ; + uint8_t SLC : 1 ; + uint8_t SOFFSET : 8 ; + uint8_t SRSRC : 5 ; + uint8_t VADDR : 8 ; + uint8_t VDATA : 8 ; +}layout_ENC_MUBUF; +typedef struct layout_ENC_MTBUF{ + uint8_t ACC : 1 ; + uint8_t DFMT : 4 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t IDXEN : 1 ; + uint8_t NFMT : 3 ; + uint8_t OFFEN : 1 ; + uint16_t OFFSET : 12 ; + uint8_t OP : 4 ; + uint8_t SCC : 1 ; + uint8_t SLC : 1 ; + uint8_t SOFFSET : 8 ; + uint8_t SRSRC : 5 ; + uint8_t VADDR : 8 ; + uint8_t VDATA : 8 ; +}layout_ENC_MTBUF; +typedef struct layout_ENC_MIMG{ + uint8_t A16 : 1 ; + uint8_t ACC : 1 ; + uint8_t D16 : 1 ; + uint8_t DA : 1 ; + uint8_t DMASK : 4 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LWE : 1 ; + uint8_t OP : 7 ; + uint8_t OPM : 1 ; + uint8_t SCC : 1 ; + uint8_t SLC : 1 ; + uint8_t SRSRC : 5 ; + uint8_t SSAMP : 5 ; + uint8_t UNORM : 1 ; + uint8_t VADDR : 8 ; + uint8_t VDATA : 8 ; +}layout_ENC_MIMG; +typedef struct layout_ENC_FLAT{ + uint8_t ACC : 1 ; + uint8_t ADDR : 8 ; + uint8_t DATA : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LDS : 1 ; + uint16_t OFFSET : 12 ; + uint8_t OP : 7 ; + uint8_t SADDR : 7 ; + uint8_t SCC : 1 ; + uint8_t SEG : 2 ; + uint8_t SLC : 1 ; + uint8_t VDST : 8 ; +}layout_ENC_FLAT; +typedef struct layout_ENC_FLAT_GLBL{ + uint8_t ACC : 1 ; + uint8_t ADDR : 8 ; + uint8_t DATA : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LDS : 1 ; + uint16_t OFFSET : 13 ; + uint8_t OP : 7 ; + uint8_t SADDR : 7 ; + uint8_t SCC : 1 ; + uint8_t SEG : 2 ; + uint8_t SLC : 1 ; + uint8_t VDST : 8 ; +}layout_ENC_FLAT_GLBL; +typedef struct layout_ENC_FLAT_SCRATCH{ + uint8_t ACC : 1 ; + uint8_t ADDR : 8 ; + uint8_t DATA : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LDS : 1 ; + uint16_t OFFSET : 13 ; + uint8_t OP : 7 ; + uint8_t SADDR : 7 ; + uint8_t SCC : 1 ; + uint8_t SEG : 2 ; + uint8_t SLC : 1 ; + uint8_t VDST : 8 ; +}layout_ENC_FLAT_SCRATCH; +typedef struct layout_ENC_VOP2_LITERAL{ + uint8_t ENCODING : 1 ; + uint8_t OP : 6 ; + uint32_t SIMM32 : 32 ; + uint16_t SRC0 : 9 ; + uint8_t VDST : 8 ; + uint8_t VSRC1 : 8 ; +}layout_ENC_VOP2_LITERAL; +typedef struct layout_ENC_VOP3B{ + uint8_t CLAMP : 1 ; + uint8_t ENCODING : 6 ; + uint8_t NEG : 3 ; + uint8_t OMOD : 2 ; + uint16_t OP : 10 ; + uint8_t SDST : 7 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3B; +typedef struct layout_ENC_VOP3P_MFMA{ + uint8_t ABID : 4 ; + uint8_t ACC : 2 ; + uint8_t ACC_CD : 1 ; + uint8_t BLGP : 3 ; + uint8_t CBSZ : 3 ; + uint16_t ENCODING : 9 ; + uint8_t OP : 7 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3P_MFMA; +union insn_layout{ + layout_ENC_SOP1 ENC_SOP1; + layout_ENC_SOPC ENC_SOPC; + layout_ENC_SOPP ENC_SOPP; + layout_ENC_SOPK ENC_SOPK; + layout_ENC_SOP2 ENC_SOP2; + layout_ENC_SMEM ENC_SMEM; + layout_ENC_VOP1 ENC_VOP1; + layout_ENC_VOPC ENC_VOPC; + layout_ENC_VOP2 ENC_VOP2; + layout_ENC_VINTRP ENC_VINTRP; + layout_ENC_VOP3P ENC_VOP3P; + layout_ENC_VOP3 ENC_VOP3; + layout_ENC_DS ENC_DS; + layout_ENC_MUBUF ENC_MUBUF; + layout_ENC_MTBUF ENC_MTBUF; + layout_ENC_MIMG ENC_MIMG; + layout_ENC_FLAT ENC_FLAT; + layout_ENC_FLAT_GLBL ENC_FLAT_GLBL; + layout_ENC_FLAT_SCRATCH ENC_FLAT_SCRATCH; + layout_ENC_VOP2_LITERAL ENC_VOP2_LITERAL; + layout_ENC_VOP3B ENC_VOP3B; + layout_ENC_VOP3P_MFMA ENC_VOP3P_MFMA; +}insn_layout; +void decodeENC_SOP1(); +void finalizeENC_SOP1Operands(); +void decodeENC_SOPC(); +void finalizeENC_SOPCOperands(); +void decodeENC_SOPP(); +void finalizeENC_SOPPOperands(); +void decodeENC_SOPK(); +void finalizeENC_SOPKOperands(); +void decodeENC_SOP2(); +void finalizeENC_SOP2Operands(); +void decodeENC_SMEM(); +void finalizeENC_SMEMOperands(); +void decodeENC_VOP1(); +void finalizeENC_VOP1Operands(); +void decodeENC_VOPC(); +void finalizeENC_VOPCOperands(); +void decodeENC_VOP2(); +void finalizeENC_VOP2Operands(); +void decodeENC_VINTRP(); +void finalizeENC_VINTRPOperands(); +void decodeENC_VOP3P(); +void finalizeENC_VOP3POperands(); +void decodeENC_VOP3(); +void finalizeENC_VOP3Operands(); +void decodeENC_DS(); +void finalizeENC_DSOperands(); +void decodeENC_MUBUF(); +void finalizeENC_MUBUFOperands(); +void decodeENC_MTBUF(); +void finalizeENC_MTBUFOperands(); +void decodeENC_MIMG(); +void finalizeENC_MIMGOperands(); +void decodeENC_FLAT(); +void finalizeENC_FLATOperands(); +void decodeENC_FLAT_GLBL(); +void finalizeENC_FLAT_GLBLOperands(); +void decodeENC_FLAT_SCRATCH(); +void finalizeENC_FLAT_SCRATCHOperands(); +void decodeENC_VOP2_LITERAL(); +void finalizeENC_VOP2_LITERALOperands(); +void decodeENC_VOP3B(); +void finalizeENC_VOP3BOperands(); +void decodeENC_VOP3P_MFMA(); +void finalizeENC_VOP3P_MFMAOperands(); diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_insn_entry.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_insn_entry.h new file mode 100644 index 0000000000..35ddd6bcdc --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_insn_entry.h @@ -0,0 +1,30 @@ +struct amdgpu_cdna2_insn_entry { + entryID op; + const char *mnemonic; + std::size_t operandCnt; + const operandFactory *operands; + static const amdgpu_cdna2_insn_table main_insn_table ; + static const operandFactory operandTable[] ; + static const amdgpu_cdna2_insn_table ENC_DS_insn_table ; + static const amdgpu_cdna2_insn_table ENC_FLAT_insn_table ; + static const amdgpu_cdna2_insn_table ENC_FLAT_GLBL_insn_table ; + static const amdgpu_cdna2_insn_table ENC_FLAT_SCRATCH_insn_table ; + static const amdgpu_cdna2_insn_table ENC_MIMG_insn_table ; + static const amdgpu_cdna2_insn_table ENC_MTBUF_insn_table ; + static const amdgpu_cdna2_insn_table ENC_MUBUF_insn_table ; + static const amdgpu_cdna2_insn_table ENC_SMEM_insn_table ; + static const amdgpu_cdna2_insn_table ENC_SOP1_insn_table ; + static const amdgpu_cdna2_insn_table ENC_SOP2_insn_table ; + static const amdgpu_cdna2_insn_table ENC_SOPC_insn_table ; + static const amdgpu_cdna2_insn_table ENC_SOPK_insn_table ; + static const amdgpu_cdna2_insn_table ENC_SOPP_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP1_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP3_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP2_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP2_LITERAL_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP3B_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP3P_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOP3P_MFMA_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VOPC_insn_table ; + static const amdgpu_cdna2_insn_table ENC_VINTRP_insn_table ; +}; diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h new file mode 100644 index 0000000000..90eb1cb315 --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h @@ -0,0 +1,1135 @@ +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD, +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F32, +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F64, +amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_AND, +amdgpu_cdna2_op_BUFFER_ATOMIC_AND_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_DEC, +amdgpu_cdna2_op_BUFFER_ATOMIC_DEC_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_INC, +amdgpu_cdna2_op_BUFFER_ATOMIC_INC_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_MAX_F64, +amdgpu_cdna2_op_BUFFER_ATOMIC_MIN_F64, +amdgpu_cdna2_op_BUFFER_ATOMIC_OR, +amdgpu_cdna2_op_BUFFER_ATOMIC_OR_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_PK_ADD_F16, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN, +amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_SUB, +amdgpu_cdna2_op_BUFFER_ATOMIC_SUB_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP, +amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN, +amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_BUFFER_ATOMIC_XOR, +amdgpu_cdna2_op_BUFFER_ATOMIC_XOR_X2, +amdgpu_cdna2_op_BUFFER_INVL2, +amdgpu_cdna2_op_BUFFER_LOAD_DWORD, +amdgpu_cdna2_op_BUFFER_LOAD_DWORDX2, +amdgpu_cdna2_op_BUFFER_LOAD_DWORDX3, +amdgpu_cdna2_op_BUFFER_LOAD_DWORDX4, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_HI_X, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_X, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XY, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_X, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XY, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZ, +amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZW, +amdgpu_cdna2_op_BUFFER_LOAD_SBYTE, +amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16, +amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16, +amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_BUFFER_LOAD_SSHORT, +amdgpu_cdna2_op_BUFFER_LOAD_UBYTE, +amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16, +amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_BUFFER_LOAD_USHORT, +amdgpu_cdna2_op_BUFFER_STORE_BYTE, +amdgpu_cdna2_op_BUFFER_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_BUFFER_STORE_DWORD, +amdgpu_cdna2_op_BUFFER_STORE_DWORDX2, +amdgpu_cdna2_op_BUFFER_STORE_DWORDX3, +amdgpu_cdna2_op_BUFFER_STORE_DWORDX4, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_HI_X, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_X, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XY, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_X, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XY, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZ, +amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZW, +amdgpu_cdna2_op_BUFFER_STORE_LDS_DWORD, +amdgpu_cdna2_op_BUFFER_STORE_SHORT, +amdgpu_cdna2_op_BUFFER_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_BUFFER_WBINVL1, +amdgpu_cdna2_op_BUFFER_WBINVL1_VOL, +amdgpu_cdna2_op_BUFFER_WBL2, +amdgpu_cdna2_op_DS_ADD_F32, +amdgpu_cdna2_op_DS_ADD_F64, +amdgpu_cdna2_op_DS_ADD_RTN_F32, +amdgpu_cdna2_op_DS_ADD_RTN_F64, +amdgpu_cdna2_op_DS_ADD_RTN_U32, +amdgpu_cdna2_op_DS_ADD_RTN_U64, +amdgpu_cdna2_op_DS_ADD_U32, +amdgpu_cdna2_op_DS_ADD_U64, +amdgpu_cdna2_op_DS_AND_B32, +amdgpu_cdna2_op_DS_AND_B64, +amdgpu_cdna2_op_DS_AND_RTN_B32, +amdgpu_cdna2_op_DS_AND_RTN_B64, +amdgpu_cdna2_op_DS_APPEND, +amdgpu_cdna2_op_DS_BPERMUTE_B32, +amdgpu_cdna2_op_DS_CMPST_B32, +amdgpu_cdna2_op_DS_CMPST_B64, +amdgpu_cdna2_op_DS_CMPST_F32, +amdgpu_cdna2_op_DS_CMPST_F64, +amdgpu_cdna2_op_DS_CMPST_RTN_B32, +amdgpu_cdna2_op_DS_CMPST_RTN_B64, +amdgpu_cdna2_op_DS_CMPST_RTN_F32, +amdgpu_cdna2_op_DS_CMPST_RTN_F64, +amdgpu_cdna2_op_DS_CONDXCHG32_RTN_B64, +amdgpu_cdna2_op_DS_CONSUME, +amdgpu_cdna2_op_DS_DEC_RTN_U32, +amdgpu_cdna2_op_DS_DEC_RTN_U64, +amdgpu_cdna2_op_DS_DEC_U32, +amdgpu_cdna2_op_DS_DEC_U64, +amdgpu_cdna2_op_DS_GWS_BARRIER, +amdgpu_cdna2_op_DS_GWS_INIT, +amdgpu_cdna2_op_DS_GWS_SEMA_BR, +amdgpu_cdna2_op_DS_GWS_SEMA_P, +amdgpu_cdna2_op_DS_GWS_SEMA_RELEASE_ALL, +amdgpu_cdna2_op_DS_GWS_SEMA_V, +amdgpu_cdna2_op_DS_INC_RTN_U32, +amdgpu_cdna2_op_DS_INC_RTN_U64, +amdgpu_cdna2_op_DS_INC_U32, +amdgpu_cdna2_op_DS_INC_U64, +amdgpu_cdna2_op_DS_MAX_F32, +amdgpu_cdna2_op_DS_MAX_F64, +amdgpu_cdna2_op_DS_MAX_I32, +amdgpu_cdna2_op_DS_MAX_I64, +amdgpu_cdna2_op_DS_MAX_RTN_F32, +amdgpu_cdna2_op_DS_MAX_RTN_F64, +amdgpu_cdna2_op_DS_MAX_RTN_I32, +amdgpu_cdna2_op_DS_MAX_RTN_I64, +amdgpu_cdna2_op_DS_MAX_RTN_U32, +amdgpu_cdna2_op_DS_MAX_RTN_U64, +amdgpu_cdna2_op_DS_MAX_U32, +amdgpu_cdna2_op_DS_MAX_U64, +amdgpu_cdna2_op_DS_MIN_F32, +amdgpu_cdna2_op_DS_MIN_F64, +amdgpu_cdna2_op_DS_MIN_I32, +amdgpu_cdna2_op_DS_MIN_I64, +amdgpu_cdna2_op_DS_MIN_RTN_F32, +amdgpu_cdna2_op_DS_MIN_RTN_F64, +amdgpu_cdna2_op_DS_MIN_RTN_I32, +amdgpu_cdna2_op_DS_MIN_RTN_I64, +amdgpu_cdna2_op_DS_MIN_RTN_U32, +amdgpu_cdna2_op_DS_MIN_RTN_U64, +amdgpu_cdna2_op_DS_MIN_U32, +amdgpu_cdna2_op_DS_MIN_U64, +amdgpu_cdna2_op_DS_MSKOR_B32, +amdgpu_cdna2_op_DS_MSKOR_B64, +amdgpu_cdna2_op_DS_MSKOR_RTN_B32, +amdgpu_cdna2_op_DS_MSKOR_RTN_B64, +amdgpu_cdna2_op_DS_NOP, +amdgpu_cdna2_op_DS_OR_B32, +amdgpu_cdna2_op_DS_OR_B64, +amdgpu_cdna2_op_DS_OR_RTN_B32, +amdgpu_cdna2_op_DS_OR_RTN_B64, +amdgpu_cdna2_op_DS_PERMUTE_B32, +amdgpu_cdna2_op_DS_READ2ST64_B32, +amdgpu_cdna2_op_DS_READ2ST64_B64, +amdgpu_cdna2_op_DS_READ2_B32, +amdgpu_cdna2_op_DS_READ2_B64, +amdgpu_cdna2_op_DS_READ_ADDTID_B32, +amdgpu_cdna2_op_DS_READ_B128, +amdgpu_cdna2_op_DS_READ_B32, +amdgpu_cdna2_op_DS_READ_B64, +amdgpu_cdna2_op_DS_READ_B96, +amdgpu_cdna2_op_DS_READ_I16, +amdgpu_cdna2_op_DS_READ_I8, +amdgpu_cdna2_op_DS_READ_I8_D16, +amdgpu_cdna2_op_DS_READ_I8_D16_HI, +amdgpu_cdna2_op_DS_READ_U16, +amdgpu_cdna2_op_DS_READ_U16_D16, +amdgpu_cdna2_op_DS_READ_U16_D16_HI, +amdgpu_cdna2_op_DS_READ_U8, +amdgpu_cdna2_op_DS_READ_U8_D16, +amdgpu_cdna2_op_DS_READ_U8_D16_HI, +amdgpu_cdna2_op_DS_RSUB_RTN_U32, +amdgpu_cdna2_op_DS_RSUB_RTN_U64, +amdgpu_cdna2_op_DS_RSUB_U32, +amdgpu_cdna2_op_DS_RSUB_U64, +amdgpu_cdna2_op_DS_SUB_RTN_U32, +amdgpu_cdna2_op_DS_SUB_RTN_U64, +amdgpu_cdna2_op_DS_SUB_U32, +amdgpu_cdna2_op_DS_SUB_U64, +amdgpu_cdna2_op_DS_SWIZZLE_B32, +amdgpu_cdna2_op_DS_WRAP_RTN_B32, +amdgpu_cdna2_op_DS_WRITE2ST64_B32, +amdgpu_cdna2_op_DS_WRITE2ST64_B64, +amdgpu_cdna2_op_DS_WRITE2_B32, +amdgpu_cdna2_op_DS_WRITE2_B64, +amdgpu_cdna2_op_DS_WRITE_ADDTID_B32, +amdgpu_cdna2_op_DS_WRITE_B128, +amdgpu_cdna2_op_DS_WRITE_B16, +amdgpu_cdna2_op_DS_WRITE_B16_D16_HI, +amdgpu_cdna2_op_DS_WRITE_B32, +amdgpu_cdna2_op_DS_WRITE_B64, +amdgpu_cdna2_op_DS_WRITE_B8, +amdgpu_cdna2_op_DS_WRITE_B8_D16_HI, +amdgpu_cdna2_op_DS_WRITE_B96, +amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B32, +amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B64, +amdgpu_cdna2_op_DS_WRXCHG2_RTN_B32, +amdgpu_cdna2_op_DS_WRXCHG2_RTN_B64, +amdgpu_cdna2_op_DS_WRXCHG_RTN_B32, +amdgpu_cdna2_op_DS_WRXCHG_RTN_B64, +amdgpu_cdna2_op_DS_XOR_B32, +amdgpu_cdna2_op_DS_XOR_B64, +amdgpu_cdna2_op_DS_XOR_RTN_B32, +amdgpu_cdna2_op_DS_XOR_RTN_B64, +amdgpu_cdna2_op_FLAT_ATOMIC_ADD, +amdgpu_cdna2_op_FLAT_ATOMIC_ADD_F64, +amdgpu_cdna2_op_FLAT_ATOMIC_ADD_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_AND, +amdgpu_cdna2_op_FLAT_ATOMIC_AND_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_DEC, +amdgpu_cdna2_op_FLAT_ATOMIC_DEC_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_INC, +amdgpu_cdna2_op_FLAT_ATOMIC_INC_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_MAX_F64, +amdgpu_cdna2_op_FLAT_ATOMIC_MIN_F64, +amdgpu_cdna2_op_FLAT_ATOMIC_OR, +amdgpu_cdna2_op_FLAT_ATOMIC_OR_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SMAX, +amdgpu_cdna2_op_FLAT_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SMIN, +amdgpu_cdna2_op_FLAT_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SUB, +amdgpu_cdna2_op_FLAT_ATOMIC_SUB_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_SWAP, +amdgpu_cdna2_op_FLAT_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_UMAX, +amdgpu_cdna2_op_FLAT_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_UMIN, +amdgpu_cdna2_op_FLAT_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_FLAT_ATOMIC_XOR, +amdgpu_cdna2_op_FLAT_ATOMIC_XOR_X2, +amdgpu_cdna2_op_FLAT_LOAD_DWORD, +amdgpu_cdna2_op_FLAT_LOAD_DWORDX2, +amdgpu_cdna2_op_FLAT_LOAD_DWORDX3, +amdgpu_cdna2_op_FLAT_LOAD_DWORDX4, +amdgpu_cdna2_op_FLAT_LOAD_SBYTE, +amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16, +amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16, +amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_FLAT_LOAD_SSHORT, +amdgpu_cdna2_op_FLAT_LOAD_UBYTE, +amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16, +amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_FLAT_LOAD_USHORT, +amdgpu_cdna2_op_FLAT_STORE_BYTE, +amdgpu_cdna2_op_FLAT_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_FLAT_STORE_DWORD, +amdgpu_cdna2_op_FLAT_STORE_DWORDX2, +amdgpu_cdna2_op_FLAT_STORE_DWORDX3, +amdgpu_cdna2_op_FLAT_STORE_DWORDX4, +amdgpu_cdna2_op_FLAT_STORE_SHORT, +amdgpu_cdna2_op_FLAT_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F32, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F64, +amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_AND, +amdgpu_cdna2_op_GLOBAL_ATOMIC_AND_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC, +amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_INC, +amdgpu_cdna2_op_GLOBAL_ATOMIC_INC_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_MAX_F64, +amdgpu_cdna2_op_GLOBAL_ATOMIC_MIN_F64, +amdgpu_cdna2_op_GLOBAL_ATOMIC_OR, +amdgpu_cdna2_op_GLOBAL_ATOMIC_OR_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_PK_ADD_F16, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP, +amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN, +amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR, +amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR_X2, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORD, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX2, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX3, +amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX4, +amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE, +amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16, +amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16, +amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_GLOBAL_LOAD_SSHORT, +amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE, +amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16, +amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_GLOBAL_LOAD_USHORT, +amdgpu_cdna2_op_GLOBAL_STORE_BYTE, +amdgpu_cdna2_op_GLOBAL_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_GLOBAL_STORE_DWORD, +amdgpu_cdna2_op_GLOBAL_STORE_DWORDX2, +amdgpu_cdna2_op_GLOBAL_STORE_DWORDX3, +amdgpu_cdna2_op_GLOBAL_STORE_DWORDX4, +amdgpu_cdna2_op_GLOBAL_STORE_SHORT, +amdgpu_cdna2_op_GLOBAL_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_IMAGE_ATOMIC_ADD, +amdgpu_cdna2_op_IMAGE_ATOMIC_AND, +amdgpu_cdna2_op_IMAGE_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_IMAGE_ATOMIC_DEC, +amdgpu_cdna2_op_IMAGE_ATOMIC_INC, +amdgpu_cdna2_op_IMAGE_ATOMIC_OR, +amdgpu_cdna2_op_IMAGE_ATOMIC_SMAX, +amdgpu_cdna2_op_IMAGE_ATOMIC_SMIN, +amdgpu_cdna2_op_IMAGE_ATOMIC_SUB, +amdgpu_cdna2_op_IMAGE_ATOMIC_SWAP, +amdgpu_cdna2_op_IMAGE_ATOMIC_UMAX, +amdgpu_cdna2_op_IMAGE_ATOMIC_UMIN, +amdgpu_cdna2_op_IMAGE_ATOMIC_XOR, +amdgpu_cdna2_op_IMAGE_GET_RESINFO, +amdgpu_cdna2_op_IMAGE_LOAD, +amdgpu_cdna2_op_IMAGE_LOAD_MIP, +amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK, +amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK_SGN, +amdgpu_cdna2_op_IMAGE_LOAD_PCK, +amdgpu_cdna2_op_IMAGE_LOAD_PCK_SGN, +amdgpu_cdna2_op_IMAGE_SAMPLE, +amdgpu_cdna2_op_IMAGE_STORE, +amdgpu_cdna2_op_IMAGE_STORE_MIP, +amdgpu_cdna2_op_IMAGE_STORE_MIP_PCK, +amdgpu_cdna2_op_IMAGE_STORE_PCK, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORD, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX2, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX3, +amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX4, +amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE, +amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16, +amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16_HI, +amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16, +amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16_HI, +amdgpu_cdna2_op_SCRATCH_LOAD_SSHORT, +amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE, +amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16, +amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16_HI, +amdgpu_cdna2_op_SCRATCH_LOAD_USHORT, +amdgpu_cdna2_op_SCRATCH_STORE_BYTE, +amdgpu_cdna2_op_SCRATCH_STORE_BYTE_D16_HI, +amdgpu_cdna2_op_SCRATCH_STORE_DWORD, +amdgpu_cdna2_op_SCRATCH_STORE_DWORDX2, +amdgpu_cdna2_op_SCRATCH_STORE_DWORDX3, +amdgpu_cdna2_op_SCRATCH_STORE_DWORDX4, +amdgpu_cdna2_op_SCRATCH_STORE_SHORT, +amdgpu_cdna2_op_SCRATCH_STORE_SHORT_D16_HI, +amdgpu_cdna2_op_S_ABSDIFF_I32, +amdgpu_cdna2_op_S_ABS_I32, +amdgpu_cdna2_op_S_ADDC_U32, +amdgpu_cdna2_op_S_ADDK_I32, +amdgpu_cdna2_op_S_ADD_I32, +amdgpu_cdna2_op_S_ADD_U32, +amdgpu_cdna2_op_S_ANDN1_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ANDN1_WREXEC_B64, +amdgpu_cdna2_op_S_ANDN2_B32, +amdgpu_cdna2_op_S_ANDN2_B64, +amdgpu_cdna2_op_S_ANDN2_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ANDN2_WREXEC_B64, +amdgpu_cdna2_op_S_AND_B32, +amdgpu_cdna2_op_S_AND_B64, +amdgpu_cdna2_op_S_AND_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ASHR_I32, +amdgpu_cdna2_op_S_ASHR_I64, +amdgpu_cdna2_op_S_ATC_PROBE, +amdgpu_cdna2_op_S_ATC_PROBE_BUFFER, +amdgpu_cdna2_op_S_ATOMIC_ADD, +amdgpu_cdna2_op_S_ATOMIC_ADD_X2, +amdgpu_cdna2_op_S_ATOMIC_AND, +amdgpu_cdna2_op_S_ATOMIC_AND_X2, +amdgpu_cdna2_op_S_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_S_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_S_ATOMIC_DEC, +amdgpu_cdna2_op_S_ATOMIC_DEC_X2, +amdgpu_cdna2_op_S_ATOMIC_INC, +amdgpu_cdna2_op_S_ATOMIC_INC_X2, +amdgpu_cdna2_op_S_ATOMIC_OR, +amdgpu_cdna2_op_S_ATOMIC_OR_X2, +amdgpu_cdna2_op_S_ATOMIC_SMAX, +amdgpu_cdna2_op_S_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_S_ATOMIC_SMIN, +amdgpu_cdna2_op_S_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_S_ATOMIC_SUB, +amdgpu_cdna2_op_S_ATOMIC_SUB_X2, +amdgpu_cdna2_op_S_ATOMIC_SWAP, +amdgpu_cdna2_op_S_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_S_ATOMIC_UMAX, +amdgpu_cdna2_op_S_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_S_ATOMIC_UMIN, +amdgpu_cdna2_op_S_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_S_ATOMIC_XOR, +amdgpu_cdna2_op_S_ATOMIC_XOR_X2, +amdgpu_cdna2_op_S_BARRIER, +amdgpu_cdna2_op_S_BCNT0_I32_B32, +amdgpu_cdna2_op_S_BCNT0_I32_B64, +amdgpu_cdna2_op_S_BCNT1_I32_B32, +amdgpu_cdna2_op_S_BCNT1_I32_B64, +amdgpu_cdna2_op_S_BFE_I32, +amdgpu_cdna2_op_S_BFE_I64, +amdgpu_cdna2_op_S_BFE_U32, +amdgpu_cdna2_op_S_BFE_U64, +amdgpu_cdna2_op_S_BFM_B32, +amdgpu_cdna2_op_S_BFM_B64, +amdgpu_cdna2_op_S_BITCMP0_B32, +amdgpu_cdna2_op_S_BITCMP0_B64, +amdgpu_cdna2_op_S_BITCMP1_B32, +amdgpu_cdna2_op_S_BITCMP1_B64, +amdgpu_cdna2_op_S_BITREPLICATE_B64_B32, +amdgpu_cdna2_op_S_BITSET0_B32, +amdgpu_cdna2_op_S_BITSET0_B64, +amdgpu_cdna2_op_S_BITSET1_B32, +amdgpu_cdna2_op_S_BITSET1_B64, +amdgpu_cdna2_op_S_BRANCH, +amdgpu_cdna2_op_S_BREV_B32, +amdgpu_cdna2_op_S_BREV_B64, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN_X2, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR, +amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR_X2, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORD, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX16, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX2, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX4, +amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX8, +amdgpu_cdna2_op_S_BUFFER_STORE_DWORD, +amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX2, +amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX4, +amdgpu_cdna2_op_S_CALL_B64, +amdgpu_cdna2_op_S_CBRANCH_CDBGSYS, +amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_AND_USER, +amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_OR_USER, +amdgpu_cdna2_op_S_CBRANCH_CDBGUSER, +amdgpu_cdna2_op_S_CBRANCH_EXECNZ, +amdgpu_cdna2_op_S_CBRANCH_EXECZ, +amdgpu_cdna2_op_S_CBRANCH_G_FORK, +amdgpu_cdna2_op_S_CBRANCH_I_FORK, +amdgpu_cdna2_op_S_CBRANCH_JOIN, +amdgpu_cdna2_op_S_CBRANCH_SCC0, +amdgpu_cdna2_op_S_CBRANCH_SCC1, +amdgpu_cdna2_op_S_CBRANCH_VCCNZ, +amdgpu_cdna2_op_S_CBRANCH_VCCZ, +amdgpu_cdna2_op_S_CMOVK_I32, +amdgpu_cdna2_op_S_CMOV_B32, +amdgpu_cdna2_op_S_CMOV_B64, +amdgpu_cdna2_op_S_CMPK_EQ_I32, +amdgpu_cdna2_op_S_CMPK_EQ_U32, +amdgpu_cdna2_op_S_CMPK_GE_I32, +amdgpu_cdna2_op_S_CMPK_GE_U32, +amdgpu_cdna2_op_S_CMPK_GT_I32, +amdgpu_cdna2_op_S_CMPK_GT_U32, +amdgpu_cdna2_op_S_CMPK_LE_I32, +amdgpu_cdna2_op_S_CMPK_LE_U32, +amdgpu_cdna2_op_S_CMPK_LG_I32, +amdgpu_cdna2_op_S_CMPK_LG_U32, +amdgpu_cdna2_op_S_CMPK_LT_I32, +amdgpu_cdna2_op_S_CMPK_LT_U32, +amdgpu_cdna2_op_S_CMP_EQ_I32, +amdgpu_cdna2_op_S_CMP_EQ_U32, +amdgpu_cdna2_op_S_CMP_EQ_U64, +amdgpu_cdna2_op_S_CMP_GE_I32, +amdgpu_cdna2_op_S_CMP_GE_U32, +amdgpu_cdna2_op_S_CMP_GT_I32, +amdgpu_cdna2_op_S_CMP_GT_U32, +amdgpu_cdna2_op_S_CMP_LE_I32, +amdgpu_cdna2_op_S_CMP_LE_U32, +amdgpu_cdna2_op_S_CMP_LG_I32, +amdgpu_cdna2_op_S_CMP_LG_U32, +amdgpu_cdna2_op_S_CMP_LG_U64, +amdgpu_cdna2_op_S_CMP_LT_I32, +amdgpu_cdna2_op_S_CMP_LT_U32, +amdgpu_cdna2_op_S_CSELECT_B32, +amdgpu_cdna2_op_S_CSELECT_B64, +amdgpu_cdna2_op_S_DCACHE_DISCARD, +amdgpu_cdna2_op_S_DCACHE_DISCARD_X2, +amdgpu_cdna2_op_S_DCACHE_INV, +amdgpu_cdna2_op_S_DCACHE_INV_VOL, +amdgpu_cdna2_op_S_DCACHE_WB, +amdgpu_cdna2_op_S_DCACHE_WB_VOL, +amdgpu_cdna2_op_S_DECPERFLEVEL, +amdgpu_cdna2_op_S_ENDPGM, +amdgpu_cdna2_op_S_ENDPGM_ORDERED_PS_DONE, +amdgpu_cdna2_op_S_ENDPGM_SAVED, +amdgpu_cdna2_op_S_FF0_I32_B32, +amdgpu_cdna2_op_S_FF0_I32_B64, +amdgpu_cdna2_op_S_FF1_I32_B32, +amdgpu_cdna2_op_S_FF1_I32_B64, +amdgpu_cdna2_op_S_FLBIT_I32, +amdgpu_cdna2_op_S_FLBIT_I32_B32, +amdgpu_cdna2_op_S_FLBIT_I32_B64, +amdgpu_cdna2_op_S_FLBIT_I32_I64, +amdgpu_cdna2_op_S_GETPC_B64, +amdgpu_cdna2_op_S_GETREG_B32, +amdgpu_cdna2_op_S_ICACHE_INV, +amdgpu_cdna2_op_S_INCPERFLEVEL, +amdgpu_cdna2_op_S_LOAD_DWORD, +amdgpu_cdna2_op_S_LOAD_DWORDX16, +amdgpu_cdna2_op_S_LOAD_DWORDX2, +amdgpu_cdna2_op_S_LOAD_DWORDX4, +amdgpu_cdna2_op_S_LOAD_DWORDX8, +amdgpu_cdna2_op_S_LSHL1_ADD_U32, +amdgpu_cdna2_op_S_LSHL2_ADD_U32, +amdgpu_cdna2_op_S_LSHL3_ADD_U32, +amdgpu_cdna2_op_S_LSHL4_ADD_U32, +amdgpu_cdna2_op_S_LSHL_B32, +amdgpu_cdna2_op_S_LSHL_B64, +amdgpu_cdna2_op_S_LSHR_B32, +amdgpu_cdna2_op_S_LSHR_B64, +amdgpu_cdna2_op_S_MAX_I32, +amdgpu_cdna2_op_S_MAX_U32, +amdgpu_cdna2_op_S_MEMREALTIME, +amdgpu_cdna2_op_S_MEMTIME, +amdgpu_cdna2_op_S_MIN_I32, +amdgpu_cdna2_op_S_MIN_U32, +amdgpu_cdna2_op_S_MOVK_I32, +amdgpu_cdna2_op_S_MOVRELD_B32, +amdgpu_cdna2_op_S_MOVRELD_B64, +amdgpu_cdna2_op_S_MOVRELS_B32, +amdgpu_cdna2_op_S_MOVRELS_B64, +amdgpu_cdna2_op_S_MOV_B32, +amdgpu_cdna2_op_S_MOV_B64, +amdgpu_cdna2_op_S_MULK_I32, +amdgpu_cdna2_op_S_MUL_HI_I32, +amdgpu_cdna2_op_S_MUL_HI_U32, +amdgpu_cdna2_op_S_MUL_I32, +amdgpu_cdna2_op_S_NAND_B32, +amdgpu_cdna2_op_S_NAND_B64, +amdgpu_cdna2_op_S_NAND_SAVEEXEC_B64, +amdgpu_cdna2_op_S_NOP, +amdgpu_cdna2_op_S_NOR_B32, +amdgpu_cdna2_op_S_NOR_B64, +amdgpu_cdna2_op_S_NOR_SAVEEXEC_B64, +amdgpu_cdna2_op_S_NOT_B32, +amdgpu_cdna2_op_S_NOT_B64, +amdgpu_cdna2_op_S_ORN1_SAVEEXEC_B64, +amdgpu_cdna2_op_S_ORN2_B32, +amdgpu_cdna2_op_S_ORN2_B64, +amdgpu_cdna2_op_S_ORN2_SAVEEXEC_B64, +amdgpu_cdna2_op_S_OR_B32, +amdgpu_cdna2_op_S_OR_B64, +amdgpu_cdna2_op_S_OR_SAVEEXEC_B64, +amdgpu_cdna2_op_S_PACK_HH_B32_B16, +amdgpu_cdna2_op_S_PACK_LH_B32_B16, +amdgpu_cdna2_op_S_PACK_LL_B32_B16, +amdgpu_cdna2_op_S_QUADMASK_B32, +amdgpu_cdna2_op_S_QUADMASK_B64, +amdgpu_cdna2_op_S_RFE_B64, +amdgpu_cdna2_op_S_RFE_RESTORE_B64, +amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORD, +amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX2, +amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX4, +amdgpu_cdna2_op_S_SCRATCH_STORE_DWORD, +amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX2, +amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX4, +amdgpu_cdna2_op_S_SENDMSG, +amdgpu_cdna2_op_S_SENDMSGHALT, +amdgpu_cdna2_op_S_SETHALT, +amdgpu_cdna2_op_S_SETKILL, +amdgpu_cdna2_op_S_SETPC_B64, +amdgpu_cdna2_op_S_SETPRIO, +amdgpu_cdna2_op_S_SETREG_B32, +amdgpu_cdna2_op_S_SETREG_IMM32_B32, +amdgpu_cdna2_op_S_SETVSKIP, +amdgpu_cdna2_op_S_SET_GPR_IDX_IDX, +amdgpu_cdna2_op_S_SET_GPR_IDX_MODE, +amdgpu_cdna2_op_S_SET_GPR_IDX_OFF, +amdgpu_cdna2_op_S_SET_GPR_IDX_ON, +amdgpu_cdna2_op_S_SEXT_I32_I16, +amdgpu_cdna2_op_S_SEXT_I32_I8, +amdgpu_cdna2_op_S_SLEEP, +amdgpu_cdna2_op_S_STORE_DWORD, +amdgpu_cdna2_op_S_STORE_DWORDX2, +amdgpu_cdna2_op_S_STORE_DWORDX4, +amdgpu_cdna2_op_S_SUBB_U32, +amdgpu_cdna2_op_S_SUB_I32, +amdgpu_cdna2_op_S_SUB_U32, +amdgpu_cdna2_op_S_SWAPPC_B64, +amdgpu_cdna2_op_S_TRAP, +amdgpu_cdna2_op_S_TTRACEDATA, +amdgpu_cdna2_op_S_WAITCNT, +amdgpu_cdna2_op_S_WAKEUP, +amdgpu_cdna2_op_S_WQM_B32, +amdgpu_cdna2_op_S_WQM_B64, +amdgpu_cdna2_op_S_XNOR_B32, +amdgpu_cdna2_op_S_XNOR_B64, +amdgpu_cdna2_op_S_XNOR_SAVEEXEC_B64, +amdgpu_cdna2_op_S_XOR_B32, +amdgpu_cdna2_op_S_XOR_B64, +amdgpu_cdna2_op_S_XOR_SAVEEXEC_B64, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_X, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XY, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_X, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XY, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZ, +amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZW, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_X, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XY, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_X, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XY, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZ, +amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZW, +amdgpu_cdna2_op_V_ACCVGPR_MOV_B32, +amdgpu_cdna2_op_V_ACCVGPR_READ, +amdgpu_cdna2_op_V_ACCVGPR_WRITE, +amdgpu_cdna2_op_V_ADD3_U32, +amdgpu_cdna2_op_V_ADDC_CO_U32, +amdgpu_cdna2_op_V_ADD_CO_U32, +amdgpu_cdna2_op_V_ADD_F16, +amdgpu_cdna2_op_V_ADD_F32, +amdgpu_cdna2_op_V_ADD_F64, +amdgpu_cdna2_op_V_ADD_I16, +amdgpu_cdna2_op_V_ADD_I32, +amdgpu_cdna2_op_V_ADD_LSHL_U32, +amdgpu_cdna2_op_V_ADD_U16, +amdgpu_cdna2_op_V_ADD_U32, +amdgpu_cdna2_op_V_ALIGNBIT_B32, +amdgpu_cdna2_op_V_ALIGNBYTE_B32, +amdgpu_cdna2_op_V_AND_B32, +amdgpu_cdna2_op_V_AND_OR_B32, +amdgpu_cdna2_op_V_ASHRREV_I16, +amdgpu_cdna2_op_V_ASHRREV_I32, +amdgpu_cdna2_op_V_ASHRREV_I64, +amdgpu_cdna2_op_V_BCNT_U32_B32, +amdgpu_cdna2_op_V_BFE_I32, +amdgpu_cdna2_op_V_BFE_U32, +amdgpu_cdna2_op_V_BFI_B32, +amdgpu_cdna2_op_V_BFM_B32, +amdgpu_cdna2_op_V_BFREV_B32, +amdgpu_cdna2_op_V_CEIL_F16, +amdgpu_cdna2_op_V_CEIL_F32, +amdgpu_cdna2_op_V_CEIL_F64, +amdgpu_cdna2_op_V_CLREXCP, +amdgpu_cdna2_op_V_CMPX_CLASS_F16, +amdgpu_cdna2_op_V_CMPX_CLASS_F32, +amdgpu_cdna2_op_V_CMPX_CLASS_F64, +amdgpu_cdna2_op_V_CMPX_EQ_F16, +amdgpu_cdna2_op_V_CMPX_EQ_F32, +amdgpu_cdna2_op_V_CMPX_EQ_F64, +amdgpu_cdna2_op_V_CMPX_EQ_I16, +amdgpu_cdna2_op_V_CMPX_EQ_I32, +amdgpu_cdna2_op_V_CMPX_EQ_I64, +amdgpu_cdna2_op_V_CMPX_EQ_U16, +amdgpu_cdna2_op_V_CMPX_EQ_U32, +amdgpu_cdna2_op_V_CMPX_EQ_U64, +amdgpu_cdna2_op_V_CMPX_F_F16, +amdgpu_cdna2_op_V_CMPX_F_F32, +amdgpu_cdna2_op_V_CMPX_F_F64, +amdgpu_cdna2_op_V_CMPX_F_I16, +amdgpu_cdna2_op_V_CMPX_F_I32, +amdgpu_cdna2_op_V_CMPX_F_I64, +amdgpu_cdna2_op_V_CMPX_F_U16, +amdgpu_cdna2_op_V_CMPX_F_U32, +amdgpu_cdna2_op_V_CMPX_F_U64, +amdgpu_cdna2_op_V_CMPX_GE_F16, +amdgpu_cdna2_op_V_CMPX_GE_F32, +amdgpu_cdna2_op_V_CMPX_GE_F64, +amdgpu_cdna2_op_V_CMPX_GE_I16, +amdgpu_cdna2_op_V_CMPX_GE_I32, +amdgpu_cdna2_op_V_CMPX_GE_I64, +amdgpu_cdna2_op_V_CMPX_GE_U16, +amdgpu_cdna2_op_V_CMPX_GE_U32, +amdgpu_cdna2_op_V_CMPX_GE_U64, +amdgpu_cdna2_op_V_CMPX_GT_F16, +amdgpu_cdna2_op_V_CMPX_GT_F32, +amdgpu_cdna2_op_V_CMPX_GT_F64, +amdgpu_cdna2_op_V_CMPX_GT_I16, +amdgpu_cdna2_op_V_CMPX_GT_I32, +amdgpu_cdna2_op_V_CMPX_GT_I64, +amdgpu_cdna2_op_V_CMPX_GT_U16, +amdgpu_cdna2_op_V_CMPX_GT_U32, +amdgpu_cdna2_op_V_CMPX_GT_U64, +amdgpu_cdna2_op_V_CMPX_LE_F16, +amdgpu_cdna2_op_V_CMPX_LE_F32, +amdgpu_cdna2_op_V_CMPX_LE_F64, +amdgpu_cdna2_op_V_CMPX_LE_I16, +amdgpu_cdna2_op_V_CMPX_LE_I32, +amdgpu_cdna2_op_V_CMPX_LE_I64, +amdgpu_cdna2_op_V_CMPX_LE_U16, +amdgpu_cdna2_op_V_CMPX_LE_U32, +amdgpu_cdna2_op_V_CMPX_LE_U64, +amdgpu_cdna2_op_V_CMPX_LG_F16, +amdgpu_cdna2_op_V_CMPX_LG_F32, +amdgpu_cdna2_op_V_CMPX_LG_F64, +amdgpu_cdna2_op_V_CMPX_LT_F16, +amdgpu_cdna2_op_V_CMPX_LT_F32, +amdgpu_cdna2_op_V_CMPX_LT_F64, +amdgpu_cdna2_op_V_CMPX_LT_I16, +amdgpu_cdna2_op_V_CMPX_LT_I32, +amdgpu_cdna2_op_V_CMPX_LT_I64, +amdgpu_cdna2_op_V_CMPX_LT_U16, +amdgpu_cdna2_op_V_CMPX_LT_U32, +amdgpu_cdna2_op_V_CMPX_LT_U64, +amdgpu_cdna2_op_V_CMPX_NEQ_F16, +amdgpu_cdna2_op_V_CMPX_NEQ_F32, +amdgpu_cdna2_op_V_CMPX_NEQ_F64, +amdgpu_cdna2_op_V_CMPX_NE_I16, +amdgpu_cdna2_op_V_CMPX_NE_I32, +amdgpu_cdna2_op_V_CMPX_NE_I64, +amdgpu_cdna2_op_V_CMPX_NE_U16, +amdgpu_cdna2_op_V_CMPX_NE_U32, +amdgpu_cdna2_op_V_CMPX_NE_U64, +amdgpu_cdna2_op_V_CMPX_NGE_F16, +amdgpu_cdna2_op_V_CMPX_NGE_F32, +amdgpu_cdna2_op_V_CMPX_NGE_F64, +amdgpu_cdna2_op_V_CMPX_NGT_F16, +amdgpu_cdna2_op_V_CMPX_NGT_F32, +amdgpu_cdna2_op_V_CMPX_NGT_F64, +amdgpu_cdna2_op_V_CMPX_NLE_F16, +amdgpu_cdna2_op_V_CMPX_NLE_F32, +amdgpu_cdna2_op_V_CMPX_NLE_F64, +amdgpu_cdna2_op_V_CMPX_NLG_F16, +amdgpu_cdna2_op_V_CMPX_NLG_F32, +amdgpu_cdna2_op_V_CMPX_NLG_F64, +amdgpu_cdna2_op_V_CMPX_NLT_F16, +amdgpu_cdna2_op_V_CMPX_NLT_F32, +amdgpu_cdna2_op_V_CMPX_NLT_F64, +amdgpu_cdna2_op_V_CMPX_O_F16, +amdgpu_cdna2_op_V_CMPX_O_F32, +amdgpu_cdna2_op_V_CMPX_O_F64, +amdgpu_cdna2_op_V_CMPX_TRU_F16, +amdgpu_cdna2_op_V_CMPX_TRU_F32, +amdgpu_cdna2_op_V_CMPX_TRU_F64, +amdgpu_cdna2_op_V_CMPX_T_I16, +amdgpu_cdna2_op_V_CMPX_T_I32, +amdgpu_cdna2_op_V_CMPX_T_I64, +amdgpu_cdna2_op_V_CMPX_T_U16, +amdgpu_cdna2_op_V_CMPX_T_U32, +amdgpu_cdna2_op_V_CMPX_T_U64, +amdgpu_cdna2_op_V_CMPX_U_F16, +amdgpu_cdna2_op_V_CMPX_U_F32, +amdgpu_cdna2_op_V_CMPX_U_F64, +amdgpu_cdna2_op_V_CMP_CLASS_F16, +amdgpu_cdna2_op_V_CMP_CLASS_F32, +amdgpu_cdna2_op_V_CMP_CLASS_F64, +amdgpu_cdna2_op_V_CMP_EQ_F16, +amdgpu_cdna2_op_V_CMP_EQ_F32, +amdgpu_cdna2_op_V_CMP_EQ_F64, +amdgpu_cdna2_op_V_CMP_EQ_I16, +amdgpu_cdna2_op_V_CMP_EQ_I32, +amdgpu_cdna2_op_V_CMP_EQ_I64, +amdgpu_cdna2_op_V_CMP_EQ_U16, +amdgpu_cdna2_op_V_CMP_EQ_U32, +amdgpu_cdna2_op_V_CMP_EQ_U64, +amdgpu_cdna2_op_V_CMP_F_F16, +amdgpu_cdna2_op_V_CMP_F_F32, +amdgpu_cdna2_op_V_CMP_F_F64, +amdgpu_cdna2_op_V_CMP_F_I16, +amdgpu_cdna2_op_V_CMP_F_I32, +amdgpu_cdna2_op_V_CMP_F_I64, +amdgpu_cdna2_op_V_CMP_F_U16, +amdgpu_cdna2_op_V_CMP_F_U32, +amdgpu_cdna2_op_V_CMP_F_U64, +amdgpu_cdna2_op_V_CMP_GE_F16, +amdgpu_cdna2_op_V_CMP_GE_F32, +amdgpu_cdna2_op_V_CMP_GE_F64, +amdgpu_cdna2_op_V_CMP_GE_I16, +amdgpu_cdna2_op_V_CMP_GE_I32, +amdgpu_cdna2_op_V_CMP_GE_I64, +amdgpu_cdna2_op_V_CMP_GE_U16, +amdgpu_cdna2_op_V_CMP_GE_U32, +amdgpu_cdna2_op_V_CMP_GE_U64, +amdgpu_cdna2_op_V_CMP_GT_F16, +amdgpu_cdna2_op_V_CMP_GT_F32, +amdgpu_cdna2_op_V_CMP_GT_F64, +amdgpu_cdna2_op_V_CMP_GT_I16, +amdgpu_cdna2_op_V_CMP_GT_I32, +amdgpu_cdna2_op_V_CMP_GT_I64, +amdgpu_cdna2_op_V_CMP_GT_U16, +amdgpu_cdna2_op_V_CMP_GT_U32, +amdgpu_cdna2_op_V_CMP_GT_U64, +amdgpu_cdna2_op_V_CMP_LE_F16, +amdgpu_cdna2_op_V_CMP_LE_F32, +amdgpu_cdna2_op_V_CMP_LE_F64, +amdgpu_cdna2_op_V_CMP_LE_I16, +amdgpu_cdna2_op_V_CMP_LE_I32, +amdgpu_cdna2_op_V_CMP_LE_I64, +amdgpu_cdna2_op_V_CMP_LE_U16, +amdgpu_cdna2_op_V_CMP_LE_U32, +amdgpu_cdna2_op_V_CMP_LE_U64, +amdgpu_cdna2_op_V_CMP_LG_F16, +amdgpu_cdna2_op_V_CMP_LG_F32, +amdgpu_cdna2_op_V_CMP_LG_F64, +amdgpu_cdna2_op_V_CMP_LT_F16, +amdgpu_cdna2_op_V_CMP_LT_F32, +amdgpu_cdna2_op_V_CMP_LT_F64, +amdgpu_cdna2_op_V_CMP_LT_I16, +amdgpu_cdna2_op_V_CMP_LT_I32, +amdgpu_cdna2_op_V_CMP_LT_I64, +amdgpu_cdna2_op_V_CMP_LT_U16, +amdgpu_cdna2_op_V_CMP_LT_U32, +amdgpu_cdna2_op_V_CMP_LT_U64, +amdgpu_cdna2_op_V_CMP_NEQ_F16, +amdgpu_cdna2_op_V_CMP_NEQ_F32, +amdgpu_cdna2_op_V_CMP_NEQ_F64, +amdgpu_cdna2_op_V_CMP_NE_I16, +amdgpu_cdna2_op_V_CMP_NE_I32, +amdgpu_cdna2_op_V_CMP_NE_I64, +amdgpu_cdna2_op_V_CMP_NE_U16, +amdgpu_cdna2_op_V_CMP_NE_U32, +amdgpu_cdna2_op_V_CMP_NE_U64, +amdgpu_cdna2_op_V_CMP_NGE_F16, +amdgpu_cdna2_op_V_CMP_NGE_F32, +amdgpu_cdna2_op_V_CMP_NGE_F64, +amdgpu_cdna2_op_V_CMP_NGT_F16, +amdgpu_cdna2_op_V_CMP_NGT_F32, +amdgpu_cdna2_op_V_CMP_NGT_F64, +amdgpu_cdna2_op_V_CMP_NLE_F16, +amdgpu_cdna2_op_V_CMP_NLE_F32, +amdgpu_cdna2_op_V_CMP_NLE_F64, +amdgpu_cdna2_op_V_CMP_NLG_F16, +amdgpu_cdna2_op_V_CMP_NLG_F32, +amdgpu_cdna2_op_V_CMP_NLG_F64, +amdgpu_cdna2_op_V_CMP_NLT_F16, +amdgpu_cdna2_op_V_CMP_NLT_F32, +amdgpu_cdna2_op_V_CMP_NLT_F64, +amdgpu_cdna2_op_V_CMP_O_F16, +amdgpu_cdna2_op_V_CMP_O_F32, +amdgpu_cdna2_op_V_CMP_O_F64, +amdgpu_cdna2_op_V_CMP_TRU_F16, +amdgpu_cdna2_op_V_CMP_TRU_F32, +amdgpu_cdna2_op_V_CMP_TRU_F64, +amdgpu_cdna2_op_V_CMP_T_I16, +amdgpu_cdna2_op_V_CMP_T_I32, +amdgpu_cdna2_op_V_CMP_T_I64, +amdgpu_cdna2_op_V_CMP_T_U16, +amdgpu_cdna2_op_V_CMP_T_U32, +amdgpu_cdna2_op_V_CMP_T_U64, +amdgpu_cdna2_op_V_CMP_U_F16, +amdgpu_cdna2_op_V_CMP_U_F32, +amdgpu_cdna2_op_V_CMP_U_F64, +amdgpu_cdna2_op_V_CNDMASK_B32, +amdgpu_cdna2_op_V_COS_F16, +amdgpu_cdna2_op_V_COS_F32, +amdgpu_cdna2_op_V_CUBEID_F32, +amdgpu_cdna2_op_V_CUBEMA_F32, +amdgpu_cdna2_op_V_CUBESC_F32, +amdgpu_cdna2_op_V_CUBETC_F32, +amdgpu_cdna2_op_V_CVT_F16_F32, +amdgpu_cdna2_op_V_CVT_F16_I16, +amdgpu_cdna2_op_V_CVT_F16_U16, +amdgpu_cdna2_op_V_CVT_F32_F16, +amdgpu_cdna2_op_V_CVT_F32_F64, +amdgpu_cdna2_op_V_CVT_F32_I32, +amdgpu_cdna2_op_V_CVT_F32_U32, +amdgpu_cdna2_op_V_CVT_F32_UBYTE0, +amdgpu_cdna2_op_V_CVT_F32_UBYTE1, +amdgpu_cdna2_op_V_CVT_F32_UBYTE2, +amdgpu_cdna2_op_V_CVT_F32_UBYTE3, +amdgpu_cdna2_op_V_CVT_F64_F32, +amdgpu_cdna2_op_V_CVT_F64_I32, +amdgpu_cdna2_op_V_CVT_F64_U32, +amdgpu_cdna2_op_V_CVT_FLR_I32_F32, +amdgpu_cdna2_op_V_CVT_I16_F16, +amdgpu_cdna2_op_V_CVT_I32_F32, +amdgpu_cdna2_op_V_CVT_I32_F64, +amdgpu_cdna2_op_V_CVT_NORM_I16_F16, +amdgpu_cdna2_op_V_CVT_NORM_U16_F16, +amdgpu_cdna2_op_V_CVT_OFF_F32_I4, +amdgpu_cdna2_op_V_CVT_PKACCUM_U8_F32, +amdgpu_cdna2_op_V_CVT_PKNORM_I16_F16, +amdgpu_cdna2_op_V_CVT_PKNORM_I16_F32, +amdgpu_cdna2_op_V_CVT_PKNORM_U16_F16, +amdgpu_cdna2_op_V_CVT_PKNORM_U16_F32, +amdgpu_cdna2_op_V_CVT_PKRTZ_F16_F32, +amdgpu_cdna2_op_V_CVT_PK_I16_I32, +amdgpu_cdna2_op_V_CVT_PK_U16_U32, +amdgpu_cdna2_op_V_CVT_PK_U8_F32, +amdgpu_cdna2_op_V_CVT_RPI_I32_F32, +amdgpu_cdna2_op_V_CVT_U16_F16, +amdgpu_cdna2_op_V_CVT_U32_F32, +amdgpu_cdna2_op_V_CVT_U32_F64, +amdgpu_cdna2_op_V_DIV_FIXUP_F16, +amdgpu_cdna2_op_V_DIV_FIXUP_F32, +amdgpu_cdna2_op_V_DIV_FIXUP_F64, +amdgpu_cdna2_op_V_DIV_FIXUP_LEGACY_F16, +amdgpu_cdna2_op_V_DIV_FMAS_F32, +amdgpu_cdna2_op_V_DIV_FMAS_F64, +amdgpu_cdna2_op_V_DIV_SCALE_F32, +amdgpu_cdna2_op_V_DIV_SCALE_F64, +amdgpu_cdna2_op_V_DOT2C_F32_F16, +amdgpu_cdna2_op_V_DOT2C_I32_I16, +amdgpu_cdna2_op_V_DOT2_F32_F16, +amdgpu_cdna2_op_V_DOT2_I32_I16, +amdgpu_cdna2_op_V_DOT2_U32_U16, +amdgpu_cdna2_op_V_DOT4C_I32_I8, +amdgpu_cdna2_op_V_DOT4_I32_I8, +amdgpu_cdna2_op_V_DOT4_U32_U8, +amdgpu_cdna2_op_V_DOT8C_I32_I4, +amdgpu_cdna2_op_V_DOT8_I32_I4, +amdgpu_cdna2_op_V_DOT8_U32_U4, +amdgpu_cdna2_op_V_EXP_F16, +amdgpu_cdna2_op_V_EXP_F32, +amdgpu_cdna2_op_V_EXP_LEGACY_F32, +amdgpu_cdna2_op_V_FFBH_I32, +amdgpu_cdna2_op_V_FFBH_U32, +amdgpu_cdna2_op_V_FFBL_B32, +amdgpu_cdna2_op_V_FLOOR_F16, +amdgpu_cdna2_op_V_FLOOR_F32, +amdgpu_cdna2_op_V_FLOOR_F64, +amdgpu_cdna2_op_V_FMAC_F32, +amdgpu_cdna2_op_V_FMAC_F64, +amdgpu_cdna2_op_V_FMA_F16, +amdgpu_cdna2_op_V_FMA_F32, +amdgpu_cdna2_op_V_FMA_F64, +amdgpu_cdna2_op_V_FMA_LEGACY_F16, +amdgpu_cdna2_op_V_FRACT_F16, +amdgpu_cdna2_op_V_FRACT_F32, +amdgpu_cdna2_op_V_FRACT_F64, +amdgpu_cdna2_op_V_FREXP_EXP_I16_F16, +amdgpu_cdna2_op_V_FREXP_EXP_I32_F32, +amdgpu_cdna2_op_V_FREXP_EXP_I32_F64, +amdgpu_cdna2_op_V_FREXP_MANT_F16, +amdgpu_cdna2_op_V_FREXP_MANT_F32, +amdgpu_cdna2_op_V_FREXP_MANT_F64, +amdgpu_cdna2_op_V_LDEXP_F16, +amdgpu_cdna2_op_V_LDEXP_F32, +amdgpu_cdna2_op_V_LDEXP_F64, +amdgpu_cdna2_op_V_LERP_U8, +amdgpu_cdna2_op_V_LOG_F16, +amdgpu_cdna2_op_V_LOG_F32, +amdgpu_cdna2_op_V_LOG_LEGACY_F32, +amdgpu_cdna2_op_V_LSHLREV_B16, +amdgpu_cdna2_op_V_LSHLREV_B32, +amdgpu_cdna2_op_V_LSHLREV_B64, +amdgpu_cdna2_op_V_LSHL_ADD_U32, +amdgpu_cdna2_op_V_LSHL_OR_B32, +amdgpu_cdna2_op_V_LSHRREV_B16, +amdgpu_cdna2_op_V_LSHRREV_B32, +amdgpu_cdna2_op_V_LSHRREV_B64, +amdgpu_cdna2_op_V_MAC_F16, +amdgpu_cdna2_op_V_MAC_F32, +amdgpu_cdna2_op_V_MADAK_F16, +amdgpu_cdna2_op_V_MADAK_F32, +amdgpu_cdna2_op_V_MADMK_F16, +amdgpu_cdna2_op_V_MADMK_F32, +amdgpu_cdna2_op_V_MAD_F16, +amdgpu_cdna2_op_V_MAD_F32, +amdgpu_cdna2_op_V_MAD_I16, +amdgpu_cdna2_op_V_MAD_I32_I16, +amdgpu_cdna2_op_V_MAD_I32_I24, +amdgpu_cdna2_op_V_MAD_I64_I32, +amdgpu_cdna2_op_V_MAD_LEGACY_F16, +amdgpu_cdna2_op_V_MAD_LEGACY_F32, +amdgpu_cdna2_op_V_MAD_LEGACY_I16, +amdgpu_cdna2_op_V_MAD_LEGACY_U16, +amdgpu_cdna2_op_V_MAD_MIXHI_F16, +amdgpu_cdna2_op_V_MAD_MIXLO_F16, +amdgpu_cdna2_op_V_MAD_MIX_F32, +amdgpu_cdna2_op_V_MAD_U16, +amdgpu_cdna2_op_V_MAD_U32_U16, +amdgpu_cdna2_op_V_MAD_U32_U24, +amdgpu_cdna2_op_V_MAD_U64_U32, +amdgpu_cdna2_op_V_MAX3_F16, +amdgpu_cdna2_op_V_MAX3_F32, +amdgpu_cdna2_op_V_MAX3_I16, +amdgpu_cdna2_op_V_MAX3_I32, +amdgpu_cdna2_op_V_MAX3_U16, +amdgpu_cdna2_op_V_MAX3_U32, +amdgpu_cdna2_op_V_MAX_F16, +amdgpu_cdna2_op_V_MAX_F32, +amdgpu_cdna2_op_V_MAX_F64, +amdgpu_cdna2_op_V_MAX_I16, +amdgpu_cdna2_op_V_MAX_I32, +amdgpu_cdna2_op_V_MAX_U16, +amdgpu_cdna2_op_V_MAX_U32, +amdgpu_cdna2_op_V_MBCNT_HI_U32_B32, +amdgpu_cdna2_op_V_MBCNT_LO_U32_B32, +amdgpu_cdna2_op_V_MED3_F16, +amdgpu_cdna2_op_V_MED3_F32, +amdgpu_cdna2_op_V_MED3_I16, +amdgpu_cdna2_op_V_MED3_I32, +amdgpu_cdna2_op_V_MED3_U16, +amdgpu_cdna2_op_V_MED3_U32, +amdgpu_cdna2_op_V_MFMA_F32_16X16X16BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_16X16X16F16, +amdgpu_cdna2_op_V_MFMA_F32_16X16X1F32, +amdgpu_cdna2_op_V_MFMA_F32_16X16X2BF16, +amdgpu_cdna2_op_V_MFMA_F32_16X16X4BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_16X16X4F16, +amdgpu_cdna2_op_V_MFMA_F32_16X16X4F32, +amdgpu_cdna2_op_V_MFMA_F32_16X16X8BF16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X1F32, +amdgpu_cdna2_op_V_MFMA_F32_32X32X2BF16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X2F32, +amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_32X32X4F16, +amdgpu_cdna2_op_V_MFMA_F32_32X32X8BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_32X32X8F16, +amdgpu_cdna2_op_V_MFMA_F32_4X4X1F32, +amdgpu_cdna2_op_V_MFMA_F32_4X4X2BF16, +amdgpu_cdna2_op_V_MFMA_F32_4X4X4BF16_1K, +amdgpu_cdna2_op_V_MFMA_F32_4X4X4F16, +amdgpu_cdna2_op_V_MFMA_F64_16X16X4F64, +amdgpu_cdna2_op_V_MFMA_F64_4X4X4F64, +amdgpu_cdna2_op_V_MFMA_I32_16X16X16I8, +amdgpu_cdna2_op_V_MFMA_I32_16X16X4I8, +amdgpu_cdna2_op_V_MFMA_I32_32X32X4I8, +amdgpu_cdna2_op_V_MFMA_I32_32X32X8I8, +amdgpu_cdna2_op_V_MFMA_I32_4X4X4I8, +amdgpu_cdna2_op_V_MIN3_F16, +amdgpu_cdna2_op_V_MIN3_F32, +amdgpu_cdna2_op_V_MIN3_I16, +amdgpu_cdna2_op_V_MIN3_I32, +amdgpu_cdna2_op_V_MIN3_U16, +amdgpu_cdna2_op_V_MIN3_U32, +amdgpu_cdna2_op_V_MIN_F16, +amdgpu_cdna2_op_V_MIN_F32, +amdgpu_cdna2_op_V_MIN_F64, +amdgpu_cdna2_op_V_MIN_I16, +amdgpu_cdna2_op_V_MIN_I32, +amdgpu_cdna2_op_V_MIN_U16, +amdgpu_cdna2_op_V_MIN_U32, +amdgpu_cdna2_op_V_MOV_B32, +amdgpu_cdna2_op_V_MQSAD_PK_U16_U8, +amdgpu_cdna2_op_V_MQSAD_U32_U8, +amdgpu_cdna2_op_V_MSAD_U8, +amdgpu_cdna2_op_V_MUL_F16, +amdgpu_cdna2_op_V_MUL_F32, +amdgpu_cdna2_op_V_MUL_F64, +amdgpu_cdna2_op_V_MUL_HI_I32, +amdgpu_cdna2_op_V_MUL_HI_I32_I24, +amdgpu_cdna2_op_V_MUL_HI_U32, +amdgpu_cdna2_op_V_MUL_HI_U32_U24, +amdgpu_cdna2_op_V_MUL_I32_I24, +amdgpu_cdna2_op_V_MUL_LEGACY_F32, +amdgpu_cdna2_op_V_MUL_LO_U16, +amdgpu_cdna2_op_V_MUL_LO_U32, +amdgpu_cdna2_op_V_MUL_U32_U24, +amdgpu_cdna2_op_V_NOP, +amdgpu_cdna2_op_V_NOT_B32, +amdgpu_cdna2_op_V_OR3_B32, +amdgpu_cdna2_op_V_OR_B32, +amdgpu_cdna2_op_V_PACK_B32_F16, +amdgpu_cdna2_op_V_PERM_B32, +amdgpu_cdna2_op_V_PK_ADD_F16, +amdgpu_cdna2_op_V_PK_ADD_F32, +amdgpu_cdna2_op_V_PK_ADD_I16, +amdgpu_cdna2_op_V_PK_ADD_U16, +amdgpu_cdna2_op_V_PK_ASHRREV_I16, +amdgpu_cdna2_op_V_PK_FMAC_F16, +amdgpu_cdna2_op_V_PK_FMA_F16, +amdgpu_cdna2_op_V_PK_FMA_F32, +amdgpu_cdna2_op_V_PK_LSHLREV_B16, +amdgpu_cdna2_op_V_PK_LSHRREV_B16, +amdgpu_cdna2_op_V_PK_MAD_I16, +amdgpu_cdna2_op_V_PK_MAD_U16, +amdgpu_cdna2_op_V_PK_MAX_F16, +amdgpu_cdna2_op_V_PK_MAX_I16, +amdgpu_cdna2_op_V_PK_MAX_U16, +amdgpu_cdna2_op_V_PK_MIN_F16, +amdgpu_cdna2_op_V_PK_MIN_I16, +amdgpu_cdna2_op_V_PK_MIN_U16, +amdgpu_cdna2_op_V_PK_MOV_B32, +amdgpu_cdna2_op_V_PK_MUL_F16, +amdgpu_cdna2_op_V_PK_MUL_F32, +amdgpu_cdna2_op_V_PK_MUL_LO_U16, +amdgpu_cdna2_op_V_PK_SUB_I16, +amdgpu_cdna2_op_V_PK_SUB_U16, +amdgpu_cdna2_op_V_QSAD_PK_U16_U8, +amdgpu_cdna2_op_V_RCP_F16, +amdgpu_cdna2_op_V_RCP_F32, +amdgpu_cdna2_op_V_RCP_F64, +amdgpu_cdna2_op_V_RCP_IFLAG_F32, +amdgpu_cdna2_op_V_READFIRSTLANE_B32, +amdgpu_cdna2_op_V_READLANE_B32, +amdgpu_cdna2_op_V_RNDNE_F16, +amdgpu_cdna2_op_V_RNDNE_F32, +amdgpu_cdna2_op_V_RNDNE_F64, +amdgpu_cdna2_op_V_RSQ_F16, +amdgpu_cdna2_op_V_RSQ_F32, +amdgpu_cdna2_op_V_RSQ_F64, +amdgpu_cdna2_op_V_SAD_HI_U8, +amdgpu_cdna2_op_V_SAD_U16, +amdgpu_cdna2_op_V_SAD_U32, +amdgpu_cdna2_op_V_SAD_U8, +amdgpu_cdna2_op_V_SAT_PK_U8_I16, +amdgpu_cdna2_op_V_SCREEN_PARTITION_4SE_B32, +amdgpu_cdna2_op_V_SIN_F16, +amdgpu_cdna2_op_V_SIN_F32, +amdgpu_cdna2_op_V_SQRT_F16, +amdgpu_cdna2_op_V_SQRT_F32, +amdgpu_cdna2_op_V_SQRT_F64, +amdgpu_cdna2_op_V_SUBBREV_CO_U32, +amdgpu_cdna2_op_V_SUBB_CO_U32, +amdgpu_cdna2_op_V_SUBREV_CO_U32, +amdgpu_cdna2_op_V_SUBREV_F16, +amdgpu_cdna2_op_V_SUBREV_F32, +amdgpu_cdna2_op_V_SUBREV_U16, +amdgpu_cdna2_op_V_SUBREV_U32, +amdgpu_cdna2_op_V_SUB_CO_U32, +amdgpu_cdna2_op_V_SUB_F16, +amdgpu_cdna2_op_V_SUB_F32, +amdgpu_cdna2_op_V_SUB_I16, +amdgpu_cdna2_op_V_SUB_I32, +amdgpu_cdna2_op_V_SUB_U16, +amdgpu_cdna2_op_V_SUB_U32, +amdgpu_cdna2_op_V_SWAP_B32, +amdgpu_cdna2_op_V_TRIG_PREOP_F64, +amdgpu_cdna2_op_V_TRUNC_F16, +amdgpu_cdna2_op_V_TRUNC_F32, +amdgpu_cdna2_op_V_TRUNC_F64, +amdgpu_cdna2_op_V_WRITELANE_B32, +amdgpu_cdna2_op_V_XAD_U32, +amdgpu_cdna2_op_V_XNOR_B32, +amdgpu_cdna2_op_V_XOR_B32, diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_opcode_tables.C b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_opcode_tables.C new file mode 100644 index 0000000000..c5a67bdb42 --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_opcode_tables.C @@ -0,0 +1,2879 @@ +#define fn(...) (&InstructionDecoder_amdgpu_cdna2::__VA_ARGS__) +const operandFactory amdgpu_cdna2_insn_entry::operandTable[] = { + fn(NOTHING), +}; +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_DS_insn_table = { +{amdgpu_cdna2_op_DS_ADD_U32,"DS_ADD_U32",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_DS_SUB_U32,"DS_SUB_U32",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_DS_RSUB_U32,"DS_RSUB_U32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_DS_INC_U32,"DS_INC_U32",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_DS_DEC_U32,"DS_DEC_U32",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_DS_MIN_I32,"DS_MIN_I32",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_DS_MAX_I32,"DS_MAX_I32",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_DS_MIN_U32,"DS_MIN_U32",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_DS_MAX_U32,"DS_MAX_U32",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_DS_AND_B32,"DS_AND_B32",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_DS_OR_B32,"DS_OR_B32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_DS_XOR_B32,"DS_XOR_B32",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_DS_MSKOR_B32,"DS_MSKOR_B32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_DS_WRITE_B32,"DS_WRITE_B32",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_DS_WRITE2_B32,"DS_WRITE2_B32",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_DS_WRITE2ST64_B32,"DS_WRITE2ST64_B32",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_DS_CMPST_B32,"DS_CMPST_B32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_DS_CMPST_F32,"DS_CMPST_F32",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_DS_MIN_F32,"DS_MIN_F32",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_DS_MAX_F32,"DS_MAX_F32",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_DS_NOP,"DS_NOP",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_DS_ADD_F32,"DS_ADD_F32",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_DS_WRITE_ADDTID_B32,"DS_WRITE_ADDTID_B32",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_DS_WRITE_B8,"DS_WRITE_B8",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_DS_WRITE_B16,"DS_WRITE_B16",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_DS_ADD_RTN_U32,"DS_ADD_RTN_U32",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_DS_SUB_RTN_U32,"DS_SUB_RTN_U32",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_DS_RSUB_RTN_U32,"DS_RSUB_RTN_U32",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_DS_INC_RTN_U32,"DS_INC_RTN_U32",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_DS_DEC_RTN_U32,"DS_DEC_RTN_U32",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_DS_MIN_RTN_I32,"DS_MIN_RTN_I32",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_DS_MAX_RTN_I32,"DS_MAX_RTN_I32",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_DS_MIN_RTN_U32,"DS_MIN_RTN_U32",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_DS_MAX_RTN_U32,"DS_MAX_RTN_U32",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_DS_AND_RTN_B32,"DS_AND_RTN_B32",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_DS_OR_RTN_B32,"DS_OR_RTN_B32",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_DS_XOR_RTN_B32,"DS_XOR_RTN_B32",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_DS_MSKOR_RTN_B32,"DS_MSKOR_RTN_B32",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_DS_WRXCHG_RTN_B32,"DS_WRXCHG_RTN_B32",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_DS_WRXCHG2_RTN_B32,"DS_WRXCHG2_RTN_B32",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B32,"DS_WRXCHG2ST64_RTN_B32",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_DS_CMPST_RTN_B32,"DS_CMPST_RTN_B32",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_DS_CMPST_RTN_F32,"DS_CMPST_RTN_F32",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_DS_MIN_RTN_F32,"DS_MIN_RTN_F32",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_DS_MAX_RTN_F32,"DS_MAX_RTN_F32",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_DS_WRAP_RTN_B32,"DS_WRAP_RTN_B32",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_DS_ADD_RTN_F32,"DS_ADD_RTN_F32",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_DS_READ_B32,"DS_READ_B32",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_DS_READ2_B32,"DS_READ2_B32",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_DS_READ2ST64_B32,"DS_READ2ST64_B32",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_DS_READ_I8,"DS_READ_I8",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_DS_READ_U8,"DS_READ_U8",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_DS_READ_I16,"DS_READ_I16",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_DS_READ_U16,"DS_READ_U16",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_DS_SWIZZLE_B32,"DS_SWIZZLE_B32",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_DS_PERMUTE_B32,"DS_PERMUTE_B32",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_DS_BPERMUTE_B32,"DS_BPERMUTE_B32",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_DS_ADD_U64,"DS_ADD_U64",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_DS_SUB_U64,"DS_SUB_U64",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_DS_RSUB_U64,"DS_RSUB_U64",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_DS_INC_U64,"DS_INC_U64",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_DS_DEC_U64,"DS_DEC_U64",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_DS_MIN_I64,"DS_MIN_I64",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_DS_MAX_I64,"DS_MAX_I64",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_DS_MIN_U64,"DS_MIN_U64",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_DS_MAX_U64,"DS_MAX_U64",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_DS_AND_B64,"DS_AND_B64",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_DS_OR_B64,"DS_OR_B64",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_DS_XOR_B64,"DS_XOR_B64",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_DS_MSKOR_B64,"DS_MSKOR_B64",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_DS_WRITE_B64,"DS_WRITE_B64",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_DS_WRITE2_B64,"DS_WRITE2_B64",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_DS_WRITE2ST64_B64,"DS_WRITE2ST64_B64",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_DS_CMPST_B64,"DS_CMPST_B64",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_DS_CMPST_F64,"DS_CMPST_F64",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_DS_MIN_F64,"DS_MIN_F64",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_DS_MAX_F64,"DS_MAX_F64",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_DS_WRITE_B8_D16_HI,"DS_WRITE_B8_D16_HI",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_DS_WRITE_B16_D16_HI,"DS_WRITE_B16_D16_HI",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_DS_READ_U8_D16,"DS_READ_U8_D16",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_DS_READ_U8_D16_HI,"DS_READ_U8_D16_HI",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_DS_READ_I8_D16,"DS_READ_I8_D16",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_DS_READ_I8_D16_HI,"DS_READ_I8_D16_HI",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_DS_READ_U16_D16,"DS_READ_U16_D16",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_DS_READ_U16_D16_HI,"DS_READ_U16_D16_HI",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_DS_ADD_F64,"DS_ADD_F64",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_DS_ADD_RTN_U64,"DS_ADD_RTN_U64",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_DS_SUB_RTN_U64,"DS_SUB_RTN_U64",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_DS_RSUB_RTN_U64,"DS_RSUB_RTN_U64",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_DS_INC_RTN_U64,"DS_INC_RTN_U64",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_DS_DEC_RTN_U64,"DS_DEC_RTN_U64",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_DS_MIN_RTN_I64,"DS_MIN_RTN_I64",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_DS_MAX_RTN_I64,"DS_MAX_RTN_I64",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_DS_MIN_RTN_U64,"DS_MIN_RTN_U64",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_DS_MAX_RTN_U64,"DS_MAX_RTN_U64",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_DS_AND_RTN_B64,"DS_AND_RTN_B64",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_DS_OR_RTN_B64,"DS_OR_RTN_B64",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_DS_XOR_RTN_B64,"DS_XOR_RTN_B64",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_DS_MSKOR_RTN_B64,"DS_MSKOR_RTN_B64",0,&operandTable[0]} ,//108 +{amdgpu_cdna2_op_DS_WRXCHG_RTN_B64,"DS_WRXCHG_RTN_B64",0,&operandTable[0]} ,//109 +{amdgpu_cdna2_op_DS_WRXCHG2_RTN_B64,"DS_WRXCHG2_RTN_B64",0,&operandTable[0]} ,//110 +{amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B64,"DS_WRXCHG2ST64_RTN_B64",0,&operandTable[0]} ,//111 +{amdgpu_cdna2_op_DS_CMPST_RTN_B64,"DS_CMPST_RTN_B64",0,&operandTable[0]} ,//112 +{amdgpu_cdna2_op_DS_CMPST_RTN_F64,"DS_CMPST_RTN_F64",0,&operandTable[0]} ,//113 +{amdgpu_cdna2_op_DS_MIN_RTN_F64,"DS_MIN_RTN_F64",0,&operandTable[0]} ,//114 +{amdgpu_cdna2_op_DS_MAX_RTN_F64,"DS_MAX_RTN_F64",0,&operandTable[0]} ,//115 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//116 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//117 +{amdgpu_cdna2_op_DS_READ_B64,"DS_READ_B64",0,&operandTable[0]} ,//118 +{amdgpu_cdna2_op_DS_READ2_B64,"DS_READ2_B64",0,&operandTable[0]} ,//119 +{amdgpu_cdna2_op_DS_READ2ST64_B64,"DS_READ2ST64_B64",0,&operandTable[0]} ,//120 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//121 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//122 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//123 +{amdgpu_cdna2_op_DS_ADD_RTN_F64,"DS_ADD_RTN_F64",0,&operandTable[0]} ,//124 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//125 +{amdgpu_cdna2_op_DS_CONDXCHG32_RTN_B64,"DS_CONDXCHG32_RTN_B64",0,&operandTable[0]} ,//126 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//127 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_cdna2_op_DS_GWS_SEMA_RELEASE_ALL,"DS_GWS_SEMA_RELEASE_ALL",0,&operandTable[0]} ,//152 +{amdgpu_cdna2_op_DS_GWS_INIT,"DS_GWS_INIT",0,&operandTable[0]} ,//153 +{amdgpu_cdna2_op_DS_GWS_SEMA_V,"DS_GWS_SEMA_V",0,&operandTable[0]} ,//154 +{amdgpu_cdna2_op_DS_GWS_SEMA_BR,"DS_GWS_SEMA_BR",0,&operandTable[0]} ,//155 +{amdgpu_cdna2_op_DS_GWS_SEMA_P,"DS_GWS_SEMA_P",0,&operandTable[0]} ,//156 +{amdgpu_cdna2_op_DS_GWS_BARRIER,"DS_GWS_BARRIER",0,&operandTable[0]} ,//157 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//160 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//161 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//162 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//163 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//164 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//165 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//166 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//167 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//168 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//169 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//170 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//171 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//172 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//173 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//174 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//175 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//176 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//177 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//178 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//179 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//180 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//181 +{amdgpu_cdna2_op_DS_READ_ADDTID_B32,"DS_READ_ADDTID_B32",0,&operandTable[0]} ,//182 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//183 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//184 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//185 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//186 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//187 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//188 +{amdgpu_cdna2_op_DS_CONSUME,"DS_CONSUME",0,&operandTable[0]} ,//189 +{amdgpu_cdna2_op_DS_APPEND,"DS_APPEND",0,&operandTable[0]} ,//190 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//191 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//192 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//193 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//194 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//195 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//196 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//197 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//198 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//199 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//200 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//201 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//202 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//203 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//204 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//205 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//206 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//207 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//208 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//209 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//210 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//211 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//212 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//213 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//214 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//215 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//216 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//217 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//218 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//219 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//220 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//221 +{amdgpu_cdna2_op_DS_WRITE_B96,"DS_WRITE_B96",0,&operandTable[0]} ,//222 +{amdgpu_cdna2_op_DS_WRITE_B128,"DS_WRITE_B128",0,&operandTable[0]} ,//223 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//224 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//225 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//226 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//227 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//228 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//229 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//230 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//231 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//232 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//233 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//234 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//235 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//236 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//237 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//238 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//239 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//240 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//241 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//242 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//243 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//244 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//245 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//246 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//247 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//248 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//249 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//250 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//251 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//252 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//253 +{amdgpu_cdna2_op_DS_READ_B96,"DS_READ_B96",0,&operandTable[0]} ,//254 +{amdgpu_cdna2_op_DS_READ_B128,"DS_READ_B128",0,&operandTable[0]} ,//255 +}; // end ENC_DS_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_FLAT_LOAD_UBYTE,"FLAT_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_FLAT_LOAD_SBYTE,"FLAT_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_FLAT_LOAD_USHORT,"FLAT_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_FLAT_LOAD_SSHORT,"FLAT_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_FLAT_LOAD_DWORD,"FLAT_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_FLAT_LOAD_DWORDX2,"FLAT_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_FLAT_LOAD_DWORDX3,"FLAT_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_FLAT_LOAD_DWORDX4,"FLAT_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_FLAT_STORE_BYTE,"FLAT_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_FLAT_STORE_BYTE_D16_HI,"FLAT_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_FLAT_STORE_SHORT,"FLAT_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_FLAT_STORE_SHORT_D16_HI,"FLAT_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_FLAT_STORE_DWORD,"FLAT_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_FLAT_STORE_DWORDX2,"FLAT_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_FLAT_STORE_DWORDX3,"FLAT_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_FLAT_STORE_DWORDX4,"FLAT_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16,"FLAT_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16_HI,"FLAT_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16,"FLAT_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16_HI,"FLAT_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16,"FLAT_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16_HI,"FLAT_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_FLAT_ATOMIC_SWAP,"FLAT_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP,"FLAT_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_FLAT_ATOMIC_ADD,"FLAT_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_FLAT_ATOMIC_SUB,"FLAT_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_FLAT_ATOMIC_SMIN,"FLAT_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_FLAT_ATOMIC_UMIN,"FLAT_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_FLAT_ATOMIC_SMAX,"FLAT_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_FLAT_ATOMIC_UMAX,"FLAT_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_FLAT_ATOMIC_AND,"FLAT_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_FLAT_ATOMIC_OR,"FLAT_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_FLAT_ATOMIC_XOR,"FLAT_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_FLAT_ATOMIC_INC,"FLAT_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_FLAT_ATOMIC_DEC,"FLAT_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_FLAT_ATOMIC_ADD_F64,"FLAT_ATOMIC_ADD_F64",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_FLAT_ATOMIC_MIN_F64,"FLAT_ATOMIC_MIN_F64",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_FLAT_ATOMIC_MAX_F64,"FLAT_ATOMIC_MAX_F64",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_FLAT_ATOMIC_SWAP_X2,"FLAT_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP_X2,"FLAT_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_FLAT_ATOMIC_ADD_X2,"FLAT_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_FLAT_ATOMIC_SUB_X2,"FLAT_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_FLAT_ATOMIC_SMIN_X2,"FLAT_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_FLAT_ATOMIC_UMIN_X2,"FLAT_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_FLAT_ATOMIC_SMAX_X2,"FLAT_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_FLAT_ATOMIC_UMAX_X2,"FLAT_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_FLAT_ATOMIC_AND_X2,"FLAT_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_FLAT_ATOMIC_OR_X2,"FLAT_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_FLAT_ATOMIC_XOR_X2,"FLAT_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_FLAT_ATOMIC_INC_X2,"FLAT_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_FLAT_ATOMIC_DEC_X2,"FLAT_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +}; // end ENC_FLAT_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE,"GLOBAL_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE,"GLOBAL_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_GLOBAL_LOAD_USHORT,"GLOBAL_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_GLOBAL_LOAD_SSHORT,"GLOBAL_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_GLOBAL_LOAD_DWORD,"GLOBAL_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX2,"GLOBAL_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX3,"GLOBAL_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX4,"GLOBAL_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_GLOBAL_STORE_BYTE,"GLOBAL_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_GLOBAL_STORE_BYTE_D16_HI,"GLOBAL_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_GLOBAL_STORE_SHORT,"GLOBAL_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_GLOBAL_STORE_SHORT_D16_HI,"GLOBAL_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_GLOBAL_STORE_DWORD,"GLOBAL_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_GLOBAL_STORE_DWORDX2,"GLOBAL_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_GLOBAL_STORE_DWORDX3,"GLOBAL_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_GLOBAL_STORE_DWORDX4,"GLOBAL_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16,"GLOBAL_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16_HI,"GLOBAL_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16,"GLOBAL_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16_HI,"GLOBAL_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16,"GLOBAL_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16_HI,"GLOBAL_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP,"GLOBAL_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP,"GLOBAL_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD,"GLOBAL_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB,"GLOBAL_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN,"GLOBAL_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN,"GLOBAL_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX,"GLOBAL_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX,"GLOBAL_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_AND,"GLOBAL_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_OR,"GLOBAL_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR,"GLOBAL_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_INC,"GLOBAL_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC,"GLOBAL_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F32,"GLOBAL_ATOMIC_ADD_F32",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_PK_ADD_F16,"GLOBAL_ATOMIC_PK_ADD_F16",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F64,"GLOBAL_ATOMIC_ADD_F64",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_MIN_F64,"GLOBAL_ATOMIC_MIN_F64",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_MAX_F64,"GLOBAL_ATOMIC_MAX_F64",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP_X2,"GLOBAL_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP_X2,"GLOBAL_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_X2,"GLOBAL_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB_X2,"GLOBAL_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN_X2,"GLOBAL_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN_X2,"GLOBAL_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX_X2,"GLOBAL_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX_X2,"GLOBAL_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_AND_X2,"GLOBAL_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_OR_X2,"GLOBAL_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR_X2,"GLOBAL_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_INC_X2,"GLOBAL_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC_X2,"GLOBAL_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +}; // end ENC_FLAT_GLBL_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE,"SCRATCH_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE,"SCRATCH_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_SCRATCH_LOAD_USHORT,"SCRATCH_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_SCRATCH_LOAD_SSHORT,"SCRATCH_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_SCRATCH_LOAD_DWORD,"SCRATCH_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX2,"SCRATCH_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX3,"SCRATCH_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX4,"SCRATCH_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_SCRATCH_STORE_BYTE,"SCRATCH_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_SCRATCH_STORE_BYTE_D16_HI,"SCRATCH_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_SCRATCH_STORE_SHORT,"SCRATCH_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_SCRATCH_STORE_SHORT_D16_HI,"SCRATCH_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_SCRATCH_STORE_DWORD,"SCRATCH_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_SCRATCH_STORE_DWORDX2,"SCRATCH_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_SCRATCH_STORE_DWORDX3,"SCRATCH_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_SCRATCH_STORE_DWORDX4,"SCRATCH_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16,"SCRATCH_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16_HI,"SCRATCH_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16,"SCRATCH_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16_HI,"SCRATCH_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16,"SCRATCH_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16_HI,"SCRATCH_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +}; // end ENC_FLAT_SCRATCH_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table = { +{amdgpu_cdna2_op_IMAGE_LOAD,"IMAGE_LOAD",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_IMAGE_LOAD_MIP,"IMAGE_LOAD_MIP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_IMAGE_LOAD_PCK,"IMAGE_LOAD_PCK",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_IMAGE_LOAD_PCK_SGN,"IMAGE_LOAD_PCK_SGN",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK,"IMAGE_LOAD_MIP_PCK",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK_SGN,"IMAGE_LOAD_MIP_PCK_SGN",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_IMAGE_STORE,"IMAGE_STORE",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_IMAGE_STORE_MIP,"IMAGE_STORE_MIP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_IMAGE_STORE_PCK,"IMAGE_STORE_PCK",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_IMAGE_STORE_MIP_PCK,"IMAGE_STORE_MIP_PCK",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_IMAGE_GET_RESINFO,"IMAGE_GET_RESINFO",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_IMAGE_ATOMIC_SWAP,"IMAGE_ATOMIC_SWAP",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_IMAGE_ATOMIC_CMPSWAP,"IMAGE_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_IMAGE_ATOMIC_ADD,"IMAGE_ATOMIC_ADD",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_IMAGE_ATOMIC_SUB,"IMAGE_ATOMIC_SUB",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_IMAGE_ATOMIC_SMIN,"IMAGE_ATOMIC_SMIN",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_IMAGE_ATOMIC_UMIN,"IMAGE_ATOMIC_UMIN",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_IMAGE_ATOMIC_SMAX,"IMAGE_ATOMIC_SMAX",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_IMAGE_ATOMIC_UMAX,"IMAGE_ATOMIC_UMAX",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_IMAGE_ATOMIC_AND,"IMAGE_ATOMIC_AND",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_IMAGE_ATOMIC_OR,"IMAGE_ATOMIC_OR",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_IMAGE_ATOMIC_XOR,"IMAGE_ATOMIC_XOR",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_IMAGE_ATOMIC_INC,"IMAGE_ATOMIC_INC",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_IMAGE_ATOMIC_DEC,"IMAGE_ATOMIC_DEC",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_IMAGE_SAMPLE,"IMAGE_SAMPLE",0,&operandTable[0]} ,//32 +}; // end ENC_MIMG_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table = { +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_X,"TBUFFER_LOAD_FORMAT_X",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XY,"TBUFFER_LOAD_FORMAT_XY",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZ,"TBUFFER_LOAD_FORMAT_XYZ",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZW,"TBUFFER_LOAD_FORMAT_XYZW",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_X,"TBUFFER_STORE_FORMAT_X",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XY,"TBUFFER_STORE_FORMAT_XY",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZ,"TBUFFER_STORE_FORMAT_XYZ",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZW,"TBUFFER_STORE_FORMAT_XYZW",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_X,"TBUFFER_LOAD_FORMAT_D16_X",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XY,"TBUFFER_LOAD_FORMAT_D16_XY",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZ,"TBUFFER_LOAD_FORMAT_D16_XYZ",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZW,"TBUFFER_LOAD_FORMAT_D16_XYZW",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_X,"TBUFFER_STORE_FORMAT_D16_X",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XY,"TBUFFER_STORE_FORMAT_D16_XY",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZ,"TBUFFER_STORE_FORMAT_D16_XYZ",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZW,"TBUFFER_STORE_FORMAT_D16_XYZW",0,&operandTable[0]} ,//15 +}; // end ENC_MTBUF_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table = { +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_X,"BUFFER_LOAD_FORMAT_X",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XY,"BUFFER_LOAD_FORMAT_XY",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZ,"BUFFER_LOAD_FORMAT_XYZ",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZW,"BUFFER_LOAD_FORMAT_XYZW",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_X,"BUFFER_STORE_FORMAT_X",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XY,"BUFFER_STORE_FORMAT_XY",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZ,"BUFFER_STORE_FORMAT_XYZ",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZW,"BUFFER_STORE_FORMAT_XYZW",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_X,"BUFFER_LOAD_FORMAT_D16_X",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XY,"BUFFER_LOAD_FORMAT_D16_XY",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZ,"BUFFER_LOAD_FORMAT_D16_XYZ",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZW,"BUFFER_LOAD_FORMAT_D16_XYZW",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_X,"BUFFER_STORE_FORMAT_D16_X",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XY,"BUFFER_STORE_FORMAT_D16_XY",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZ,"BUFFER_STORE_FORMAT_D16_XYZ",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZW,"BUFFER_STORE_FORMAT_D16_XYZW",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_BUFFER_LOAD_UBYTE,"BUFFER_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_BUFFER_LOAD_SBYTE,"BUFFER_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_BUFFER_LOAD_USHORT,"BUFFER_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_BUFFER_LOAD_SSHORT,"BUFFER_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_BUFFER_LOAD_DWORD,"BUFFER_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_BUFFER_LOAD_DWORDX2,"BUFFER_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_BUFFER_LOAD_DWORDX3,"BUFFER_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_BUFFER_LOAD_DWORDX4,"BUFFER_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_BUFFER_STORE_BYTE,"BUFFER_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_BUFFER_STORE_BYTE_D16_HI,"BUFFER_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_BUFFER_STORE_SHORT,"BUFFER_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_BUFFER_STORE_SHORT_D16_HI,"BUFFER_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_BUFFER_STORE_DWORD,"BUFFER_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_BUFFER_STORE_DWORDX2,"BUFFER_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_BUFFER_STORE_DWORDX3,"BUFFER_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_BUFFER_STORE_DWORDX4,"BUFFER_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16,"BUFFER_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16_HI,"BUFFER_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16,"BUFFER_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16_HI,"BUFFER_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16,"BUFFER_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16_HI,"BUFFER_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_HI_X,"BUFFER_LOAD_FORMAT_D16_HI_X",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_HI_X,"BUFFER_STORE_FORMAT_D16_HI_X",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_BUFFER_WBL2,"BUFFER_WBL2",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_BUFFER_INVL2,"BUFFER_INVL2",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_BUFFER_STORE_LDS_DWORD,"BUFFER_STORE_LDS_DWORD",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_BUFFER_WBINVL1,"BUFFER_WBINVL1",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_BUFFER_WBINVL1_VOL,"BUFFER_WBINVL1_VOL",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP,"BUFFER_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP,"BUFFER_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_BUFFER_ATOMIC_ADD,"BUFFER_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SUB,"BUFFER_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN,"BUFFER_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN,"BUFFER_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX,"BUFFER_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX,"BUFFER_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_BUFFER_ATOMIC_AND,"BUFFER_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_BUFFER_ATOMIC_OR,"BUFFER_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_BUFFER_ATOMIC_XOR,"BUFFER_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_BUFFER_ATOMIC_INC,"BUFFER_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_BUFFER_ATOMIC_DEC,"BUFFER_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F32,"BUFFER_ATOMIC_ADD_F32",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_BUFFER_ATOMIC_PK_ADD_F16,"BUFFER_ATOMIC_PK_ADD_F16",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F64,"BUFFER_ATOMIC_ADD_F64",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_BUFFER_ATOMIC_MIN_F64,"BUFFER_ATOMIC_MIN_F64",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_BUFFER_ATOMIC_MAX_F64,"BUFFER_ATOMIC_MAX_F64",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP_X2,"BUFFER_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP_X2,"BUFFER_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_X2,"BUFFER_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SUB_X2,"BUFFER_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN_X2,"BUFFER_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN_X2,"BUFFER_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX_X2,"BUFFER_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX_X2,"BUFFER_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_BUFFER_ATOMIC_AND_X2,"BUFFER_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_BUFFER_ATOMIC_OR_X2,"BUFFER_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_BUFFER_ATOMIC_XOR_X2,"BUFFER_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_BUFFER_ATOMIC_INC_X2,"BUFFER_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_BUFFER_ATOMIC_DEC_X2,"BUFFER_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +}; // end ENC_MUBUF_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table = { +{amdgpu_cdna2_op_S_LOAD_DWORD,"S_LOAD_DWORD",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_LOAD_DWORDX2,"S_LOAD_DWORDX2",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_LOAD_DWORDX4,"S_LOAD_DWORDX4",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_LOAD_DWORDX8,"S_LOAD_DWORDX8",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_LOAD_DWORDX16,"S_LOAD_DWORDX16",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORD,"S_SCRATCH_LOAD_DWORD",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX2,"S_SCRATCH_LOAD_DWORDX2",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX4,"S_SCRATCH_LOAD_DWORDX4",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_BUFFER_LOAD_DWORD,"S_BUFFER_LOAD_DWORD",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX2,"S_BUFFER_LOAD_DWORDX2",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX4,"S_BUFFER_LOAD_DWORDX4",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX8,"S_BUFFER_LOAD_DWORDX8",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX16,"S_BUFFER_LOAD_DWORDX16",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_STORE_DWORD,"S_STORE_DWORD",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_STORE_DWORDX2,"S_STORE_DWORDX2",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_STORE_DWORDX4,"S_STORE_DWORDX4",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_SCRATCH_STORE_DWORD,"S_SCRATCH_STORE_DWORD",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX2,"S_SCRATCH_STORE_DWORDX2",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX4,"S_SCRATCH_STORE_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_BUFFER_STORE_DWORD,"S_BUFFER_STORE_DWORD",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX2,"S_BUFFER_STORE_DWORDX2",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX4,"S_BUFFER_STORE_DWORDX4",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_S_DCACHE_INV,"S_DCACHE_INV",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_S_DCACHE_WB,"S_DCACHE_WB",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_S_DCACHE_INV_VOL,"S_DCACHE_INV_VOL",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_S_DCACHE_WB_VOL,"S_DCACHE_WB_VOL",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_MEMTIME,"S_MEMTIME",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_MEMREALTIME,"S_MEMREALTIME",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_ATC_PROBE,"S_ATC_PROBE",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_ATC_PROBE_BUFFER,"S_ATC_PROBE_BUFFER",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_DCACHE_DISCARD,"S_DCACHE_DISCARD",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_DCACHE_DISCARD_X2,"S_DCACHE_DISCARD_X2",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP,"S_BUFFER_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP,"S_BUFFER_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD,"S_BUFFER_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB,"S_BUFFER_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN,"S_BUFFER_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN,"S_BUFFER_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX,"S_BUFFER_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX,"S_BUFFER_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND,"S_BUFFER_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR,"S_BUFFER_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR,"S_BUFFER_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC,"S_BUFFER_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC,"S_BUFFER_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP_X2,"S_BUFFER_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP_X2,"S_BUFFER_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD_X2,"S_BUFFER_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB_X2,"S_BUFFER_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN_X2,"S_BUFFER_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN_X2,"S_BUFFER_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX_X2,"S_BUFFER_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX_X2,"S_BUFFER_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND_X2,"S_BUFFER_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR_X2,"S_BUFFER_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR_X2,"S_BUFFER_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC_X2,"S_BUFFER_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC_X2,"S_BUFFER_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//109 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//110 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//111 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//112 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//113 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//114 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//115 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//116 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//117 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//118 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//119 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//120 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//121 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//122 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//123 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//124 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//125 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//126 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//127 +{amdgpu_cdna2_op_S_ATOMIC_SWAP,"S_ATOMIC_SWAP",0,&operandTable[0]} ,//128 +{amdgpu_cdna2_op_S_ATOMIC_CMPSWAP,"S_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//129 +{amdgpu_cdna2_op_S_ATOMIC_ADD,"S_ATOMIC_ADD",0,&operandTable[0]} ,//130 +{amdgpu_cdna2_op_S_ATOMIC_SUB,"S_ATOMIC_SUB",0,&operandTable[0]} ,//131 +{amdgpu_cdna2_op_S_ATOMIC_SMIN,"S_ATOMIC_SMIN",0,&operandTable[0]} ,//132 +{amdgpu_cdna2_op_S_ATOMIC_UMIN,"S_ATOMIC_UMIN",0,&operandTable[0]} ,//133 +{amdgpu_cdna2_op_S_ATOMIC_SMAX,"S_ATOMIC_SMAX",0,&operandTable[0]} ,//134 +{amdgpu_cdna2_op_S_ATOMIC_UMAX,"S_ATOMIC_UMAX",0,&operandTable[0]} ,//135 +{amdgpu_cdna2_op_S_ATOMIC_AND,"S_ATOMIC_AND",0,&operandTable[0]} ,//136 +{amdgpu_cdna2_op_S_ATOMIC_OR,"S_ATOMIC_OR",0,&operandTable[0]} ,//137 +{amdgpu_cdna2_op_S_ATOMIC_XOR,"S_ATOMIC_XOR",0,&operandTable[0]} ,//138 +{amdgpu_cdna2_op_S_ATOMIC_INC,"S_ATOMIC_INC",0,&operandTable[0]} ,//139 +{amdgpu_cdna2_op_S_ATOMIC_DEC,"S_ATOMIC_DEC",0,&operandTable[0]} ,//140 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_cdna2_op_S_ATOMIC_SWAP_X2,"S_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//160 +{amdgpu_cdna2_op_S_ATOMIC_CMPSWAP_X2,"S_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//161 +{amdgpu_cdna2_op_S_ATOMIC_ADD_X2,"S_ATOMIC_ADD_X2",0,&operandTable[0]} ,//162 +{amdgpu_cdna2_op_S_ATOMIC_SUB_X2,"S_ATOMIC_SUB_X2",0,&operandTable[0]} ,//163 +{amdgpu_cdna2_op_S_ATOMIC_SMIN_X2,"S_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//164 +{amdgpu_cdna2_op_S_ATOMIC_UMIN_X2,"S_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//165 +{amdgpu_cdna2_op_S_ATOMIC_SMAX_X2,"S_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//166 +{amdgpu_cdna2_op_S_ATOMIC_UMAX_X2,"S_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//167 +{amdgpu_cdna2_op_S_ATOMIC_AND_X2,"S_ATOMIC_AND_X2",0,&operandTable[0]} ,//168 +{amdgpu_cdna2_op_S_ATOMIC_OR_X2,"S_ATOMIC_OR_X2",0,&operandTable[0]} ,//169 +{amdgpu_cdna2_op_S_ATOMIC_XOR_X2,"S_ATOMIC_XOR_X2",0,&operandTable[0]} ,//170 +{amdgpu_cdna2_op_S_ATOMIC_INC_X2,"S_ATOMIC_INC_X2",0,&operandTable[0]} ,//171 +{amdgpu_cdna2_op_S_ATOMIC_DEC_X2,"S_ATOMIC_DEC_X2",0,&operandTable[0]} ,//172 +}; // end ENC_SMEM_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table = { +{amdgpu_cdna2_op_S_MOV_B32,"S_MOV_B32",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_MOV_B64,"S_MOV_B64",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_CMOV_B32,"S_CMOV_B32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_CMOV_B64,"S_CMOV_B64",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOT_B32,"S_NOT_B32",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOT_B64,"S_NOT_B64",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_WQM_B32,"S_WQM_B32",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_WQM_B64,"S_WQM_B64",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_BREV_B32,"S_BREV_B32",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_BREV_B64,"S_BREV_B64",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_BCNT0_I32_B32,"S_BCNT0_I32_B32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_BCNT0_I32_B64,"S_BCNT0_I32_B64",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_BCNT1_I32_B32,"S_BCNT1_I32_B32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_BCNT1_I32_B64,"S_BCNT1_I32_B64",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_FF0_I32_B32,"S_FF0_I32_B32",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_FF0_I32_B64,"S_FF0_I32_B64",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_FF1_I32_B32,"S_FF1_I32_B32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_FF1_I32_B64,"S_FF1_I32_B64",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_FLBIT_I32_B32,"S_FLBIT_I32_B32",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_FLBIT_I32_B64,"S_FLBIT_I32_B64",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_FLBIT_I32,"S_FLBIT_I32",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_FLBIT_I32_I64,"S_FLBIT_I32_I64",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_SEXT_I32_I8,"S_SEXT_I32_I8",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_SEXT_I32_I16,"S_SEXT_I32_I16",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_BITSET0_B32,"S_BITSET0_B32",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_BITSET0_B64,"S_BITSET0_B64",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_BITSET1_B32,"S_BITSET1_B32",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_BITSET1_B64,"S_BITSET1_B64",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_GETPC_B64,"S_GETPC_B64",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_SETPC_B64,"S_SETPC_B64",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_SWAPPC_B64,"S_SWAPPC_B64",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_RFE_B64,"S_RFE_B64",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_S_AND_SAVEEXEC_B64,"S_AND_SAVEEXEC_B64",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_S_OR_SAVEEXEC_B64,"S_OR_SAVEEXEC_B64",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_S_XOR_SAVEEXEC_B64,"S_XOR_SAVEEXEC_B64",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_S_ANDN2_SAVEEXEC_B64,"S_ANDN2_SAVEEXEC_B64",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_ORN2_SAVEEXEC_B64,"S_ORN2_SAVEEXEC_B64",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_NAND_SAVEEXEC_B64,"S_NAND_SAVEEXEC_B64",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_NOR_SAVEEXEC_B64,"S_NOR_SAVEEXEC_B64",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_XNOR_SAVEEXEC_B64,"S_XNOR_SAVEEXEC_B64",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_QUADMASK_B32,"S_QUADMASK_B32",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_QUADMASK_B64,"S_QUADMASK_B64",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_MOVRELS_B32,"S_MOVRELS_B32",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_MOVRELS_B64,"S_MOVRELS_B64",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_MOVRELD_B32,"S_MOVRELD_B32",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_MOVRELD_B64,"S_MOVRELD_B64",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_CBRANCH_JOIN,"S_CBRANCH_JOIN",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_ABS_I32,"S_ABS_I32",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_SET_GPR_IDX_IDX,"S_SET_GPR_IDX_IDX",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_ANDN1_SAVEEXEC_B64,"S_ANDN1_SAVEEXEC_B64",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_ORN1_SAVEEXEC_B64,"S_ORN1_SAVEEXEC_B64",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_ANDN1_WREXEC_B64,"S_ANDN1_WREXEC_B64",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_ANDN2_WREXEC_B64,"S_ANDN2_WREXEC_B64",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_BITREPLICATE_B64_B32,"S_BITREPLICATE_B64_B32",0,&operandTable[0]} ,//55 +}; // end ENC_SOP1_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table = { +{amdgpu_cdna2_op_S_ADD_U32,"S_ADD_U32",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_SUB_U32,"S_SUB_U32",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_ADD_I32,"S_ADD_I32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_SUB_I32,"S_SUB_I32",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_ADDC_U32,"S_ADDC_U32",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_SUBB_U32,"S_SUBB_U32",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_MIN_I32,"S_MIN_I32",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_MIN_U32,"S_MIN_U32",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_MAX_I32,"S_MAX_I32",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_MAX_U32,"S_MAX_U32",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_CSELECT_B32,"S_CSELECT_B32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_CSELECT_B64,"S_CSELECT_B64",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_AND_B32,"S_AND_B32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_AND_B64,"S_AND_B64",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_OR_B32,"S_OR_B32",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_OR_B64,"S_OR_B64",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_XOR_B32,"S_XOR_B32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_XOR_B64,"S_XOR_B64",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_ANDN2_B32,"S_ANDN2_B32",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_ANDN2_B64,"S_ANDN2_B64",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_ORN2_B32,"S_ORN2_B32",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_ORN2_B64,"S_ORN2_B64",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NAND_B32,"S_NAND_B32",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NAND_B64,"S_NAND_B64",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOR_B32,"S_NOR_B32",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOR_B64,"S_NOR_B64",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_XNOR_B32,"S_XNOR_B32",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_XNOR_B64,"S_XNOR_B64",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_LSHL_B32,"S_LSHL_B32",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_LSHL_B64,"S_LSHL_B64",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_LSHR_B32,"S_LSHR_B32",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_LSHR_B64,"S_LSHR_B64",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_S_ASHR_I32,"S_ASHR_I32",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_S_ASHR_I64,"S_ASHR_I64",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_S_BFM_B32,"S_BFM_B32",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_S_BFM_B64,"S_BFM_B64",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_MUL_I32,"S_MUL_I32",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_BFE_U32,"S_BFE_U32",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_BFE_I32,"S_BFE_I32",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_BFE_U64,"S_BFE_U64",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_BFE_I64,"S_BFE_I64",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_CBRANCH_G_FORK,"S_CBRANCH_G_FORK",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_ABSDIFF_I32,"S_ABSDIFF_I32",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_RFE_RESTORE_B64,"S_RFE_RESTORE_B64",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_MUL_HI_U32,"S_MUL_HI_U32",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_MUL_HI_I32,"S_MUL_HI_I32",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_LSHL1_ADD_U32,"S_LSHL1_ADD_U32",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_LSHL2_ADD_U32,"S_LSHL2_ADD_U32",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_LSHL3_ADD_U32,"S_LSHL3_ADD_U32",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_LSHL4_ADD_U32,"S_LSHL4_ADD_U32",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_PACK_LL_B32_B16,"S_PACK_LL_B32_B16",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_PACK_LH_B32_B16,"S_PACK_LH_B32_B16",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_PACK_HH_B32_B16,"S_PACK_HH_B32_B16",0,&operandTable[0]} ,//52 +}; // end ENC_SOP2_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table = { +{amdgpu_cdna2_op_S_CMP_EQ_I32,"S_CMP_EQ_I32",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_CMP_LG_I32,"S_CMP_LG_I32",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_CMP_GT_I32,"S_CMP_GT_I32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_CMP_GE_I32,"S_CMP_GE_I32",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_CMP_LT_I32,"S_CMP_LT_I32",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_CMP_LE_I32,"S_CMP_LE_I32",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_CMP_EQ_U32,"S_CMP_EQ_U32",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_CMP_LG_U32,"S_CMP_LG_U32",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_CMP_GT_U32,"S_CMP_GT_U32",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_CMP_GE_U32,"S_CMP_GE_U32",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_CMP_LT_U32,"S_CMP_LT_U32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_CMP_LE_U32,"S_CMP_LE_U32",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_BITCMP0_B32,"S_BITCMP0_B32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_BITCMP1_B32,"S_BITCMP1_B32",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_BITCMP0_B64,"S_BITCMP0_B64",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_BITCMP1_B64,"S_BITCMP1_B64",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_SETVSKIP,"S_SETVSKIP",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_SET_GPR_IDX_ON,"S_SET_GPR_IDX_ON",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_CMP_EQ_U64,"S_CMP_EQ_U64",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_CMP_LG_U64,"S_CMP_LG_U64",0,&operandTable[0]} ,//19 +}; // end ENC_SOPC_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table = { +{amdgpu_cdna2_op_S_MOVK_I32,"S_MOVK_I32",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_CMOVK_I32,"S_CMOVK_I32",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_CMPK_EQ_I32,"S_CMPK_EQ_I32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_CMPK_LG_I32,"S_CMPK_LG_I32",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_CMPK_GT_I32,"S_CMPK_GT_I32",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_CMPK_GE_I32,"S_CMPK_GE_I32",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_CMPK_LT_I32,"S_CMPK_LT_I32",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_CMPK_LE_I32,"S_CMPK_LE_I32",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_CMPK_EQ_U32,"S_CMPK_EQ_U32",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_CMPK_LG_U32,"S_CMPK_LG_U32",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_CMPK_GT_U32,"S_CMPK_GT_U32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_CMPK_GE_U32,"S_CMPK_GE_U32",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_CMPK_LT_U32,"S_CMPK_LT_U32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_CMPK_LE_U32,"S_CMPK_LE_U32",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_ADDK_I32,"S_ADDK_I32",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_MULK_I32,"S_MULK_I32",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_CBRANCH_I_FORK,"S_CBRANCH_I_FORK",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_GETREG_B32,"S_GETREG_B32",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_SETREG_B32,"S_SETREG_B32",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_SETREG_IMM32_B32,"S_SETREG_IMM32_B32",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_CALL_B64,"S_CALL_B64",0,&operandTable[0]} ,//21 +}; // end ENC_SOPK_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_ENDPGM,"S_ENDPGM",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_BRANCH,"S_BRANCH",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_WAKEUP,"S_WAKEUP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_CBRANCH_SCC0,"S_CBRANCH_SCC0",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_CBRANCH_SCC1,"S_CBRANCH_SCC1",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_CBRANCH_VCCZ,"S_CBRANCH_VCCZ",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_CBRANCH_VCCNZ,"S_CBRANCH_VCCNZ",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_CBRANCH_EXECZ,"S_CBRANCH_EXECZ",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_CBRANCH_EXECNZ,"S_CBRANCH_EXECNZ",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_BARRIER,"S_BARRIER",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_SETKILL,"S_SETKILL",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_WAITCNT,"S_WAITCNT",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_SETHALT,"S_SETHALT",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_SLEEP,"S_SLEEP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_SETPRIO,"S_SETPRIO",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_SENDMSG,"S_SENDMSG",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_SENDMSGHALT,"S_SENDMSGHALT",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_TRAP,"S_TRAP",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_ICACHE_INV,"S_ICACHE_INV",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_INCPERFLEVEL,"S_INCPERFLEVEL",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_DECPERFLEVEL,"S_DECPERFLEVEL",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_TTRACEDATA,"S_TTRACEDATA",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_CBRANCH_CDBGSYS,"S_CBRANCH_CDBGSYS",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_CBRANCH_CDBGUSER,"S_CBRANCH_CDBGUSER",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_OR_USER,"S_CBRANCH_CDBGSYS_OR_USER",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_AND_USER,"S_CBRANCH_CDBGSYS_AND_USER",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_ENDPGM_SAVED,"S_ENDPGM_SAVED",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_SET_GPR_IDX_OFF,"S_SET_GPR_IDX_OFF",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_SET_GPR_IDX_MODE,"S_SET_GPR_IDX_MODE",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_ENDPGM_ORDERED_PS_DONE,"S_ENDPGM_ORDERED_PS_DONE",0,&operandTable[0]} ,//30 +}; // end ENC_SOPP_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table = { +{amdgpu_cdna2_op_V_NOP,"V_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_V_MOV_B32,"V_MOV_B32",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_V_READFIRSTLANE_B32,"V_READFIRSTLANE_B32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_V_CVT_I32_F64,"V_CVT_I32_F64",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_V_CVT_F64_I32,"V_CVT_F64_I32",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_V_CVT_F32_I32,"V_CVT_F32_I32",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_V_CVT_F32_U32,"V_CVT_F32_U32",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_V_CVT_U32_F32,"V_CVT_U32_F32",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_V_CVT_I32_F32,"V_CVT_I32_F32",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_V_CVT_F16_F32,"V_CVT_F16_F32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_V_CVT_F32_F16,"V_CVT_F32_F16",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_V_CVT_RPI_I32_F32,"V_CVT_RPI_I32_F32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_V_CVT_FLR_I32_F32,"V_CVT_FLR_I32_F32",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_V_CVT_OFF_F32_I4,"V_CVT_OFF_F32_I4",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_V_CVT_F32_F64,"V_CVT_F32_F64",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_V_CVT_F64_F32,"V_CVT_F64_F32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE0,"V_CVT_F32_UBYTE0",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE1,"V_CVT_F32_UBYTE1",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE2,"V_CVT_F32_UBYTE2",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE3,"V_CVT_F32_UBYTE3",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_V_CVT_U32_F64,"V_CVT_U32_F64",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_V_CVT_F64_U32,"V_CVT_F64_U32",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_V_TRUNC_F64,"V_TRUNC_F64",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_V_CEIL_F64,"V_CEIL_F64",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_V_RNDNE_F64,"V_RNDNE_F64",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_V_FLOOR_F64,"V_FLOOR_F64",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_V_FRACT_F32,"V_FRACT_F32",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_V_TRUNC_F32,"V_TRUNC_F32",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_V_CEIL_F32,"V_CEIL_F32",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_V_RNDNE_F32,"V_RNDNE_F32",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_V_FLOOR_F32,"V_FLOOR_F32",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_V_EXP_F32,"V_EXP_F32",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_V_LOG_F32,"V_LOG_F32",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_V_RCP_F32,"V_RCP_F32",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_V_RCP_IFLAG_F32,"V_RCP_IFLAG_F32",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_V_RSQ_F32,"V_RSQ_F32",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_V_RCP_F64,"V_RCP_F64",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_V_RSQ_F64,"V_RSQ_F64",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_V_SQRT_F32,"V_SQRT_F32",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_V_SQRT_F64,"V_SQRT_F64",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_V_SIN_F32,"V_SIN_F32",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_V_COS_F32,"V_COS_F32",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_V_NOT_B32,"V_NOT_B32",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_V_BFREV_B32,"V_BFREV_B32",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_V_FFBH_U32,"V_FFBH_U32",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_V_FFBL_B32,"V_FFBL_B32",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_V_FFBH_I32,"V_FFBH_I32",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_V_FREXP_EXP_I32_F64,"V_FREXP_EXP_I32_F64",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_V_FREXP_MANT_F64,"V_FREXP_MANT_F64",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_V_FRACT_F64,"V_FRACT_F64",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_V_FREXP_EXP_I32_F32,"V_FREXP_EXP_I32_F32",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_V_FREXP_MANT_F32,"V_FREXP_MANT_F32",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_V_CLREXCP,"V_CLREXCP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_V_SCREEN_PARTITION_4SE_B32,"V_SCREEN_PARTITION_4SE_B32",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_V_CVT_F16_U16,"V_CVT_F16_U16",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_V_CVT_F16_I16,"V_CVT_F16_I16",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_V_CVT_U16_F16,"V_CVT_U16_F16",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_V_CVT_I16_F16,"V_CVT_I16_F16",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_V_RCP_F16,"V_RCP_F16",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_V_SQRT_F16,"V_SQRT_F16",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_V_RSQ_F16,"V_RSQ_F16",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_V_LOG_F16,"V_LOG_F16",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_V_EXP_F16,"V_EXP_F16",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_V_FREXP_MANT_F16,"V_FREXP_MANT_F16",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_V_FREXP_EXP_I16_F16,"V_FREXP_EXP_I16_F16",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_V_FLOOR_F16,"V_FLOOR_F16",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_V_CEIL_F16,"V_CEIL_F16",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_V_TRUNC_F16,"V_TRUNC_F16",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_V_RNDNE_F16,"V_RNDNE_F16",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_V_FRACT_F16,"V_FRACT_F16",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_V_SIN_F16,"V_SIN_F16",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_V_COS_F16,"V_COS_F16",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_V_EXP_LEGACY_F32,"V_EXP_LEGACY_F32",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_V_LOG_LEGACY_F32,"V_LOG_LEGACY_F32",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_V_CVT_NORM_I16_F16,"V_CVT_NORM_I16_F16",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_V_CVT_NORM_U16_F16,"V_CVT_NORM_U16_F16",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_V_SAT_PK_U8_I16,"V_SAT_PK_U8_I16",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_V_SWAP_B32,"V_SWAP_B32",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_V_ACCVGPR_MOV_B32,"V_ACCVGPR_MOV_B32",0,&operandTable[0]} ,//82 +}; // end ENC_VOP1_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_V_CMP_CLASS_F32,"V_CMP_CLASS_F32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_V_CMPX_CLASS_F32,"V_CMPX_CLASS_F32",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_V_CMP_CLASS_F64,"V_CMP_CLASS_F64",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_V_CMPX_CLASS_F64,"V_CMPX_CLASS_F64",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_V_CMP_CLASS_F16,"V_CMP_CLASS_F16",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_V_CMPX_CLASS_F16,"V_CMPX_CLASS_F16",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_V_CMP_F_F16,"V_CMP_F_F16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_V_CMP_LT_F16,"V_CMP_LT_F16",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_V_CMP_EQ_F16,"V_CMP_EQ_F16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_V_CMP_LE_F16,"V_CMP_LE_F16",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_V_CMP_GT_F16,"V_CMP_GT_F16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_V_CMP_LG_F16,"V_CMP_LG_F16",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_V_CMP_GE_F16,"V_CMP_GE_F16",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_V_CMP_O_F16,"V_CMP_O_F16",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_V_CMP_U_F16,"V_CMP_U_F16",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_V_CMP_NGE_F16,"V_CMP_NGE_F16",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_V_CMP_NLG_F16,"V_CMP_NLG_F16",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_V_CMP_NGT_F16,"V_CMP_NGT_F16",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_V_CMP_NLE_F16,"V_CMP_NLE_F16",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_V_CMP_NEQ_F16,"V_CMP_NEQ_F16",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_V_CMP_NLT_F16,"V_CMP_NLT_F16",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_V_CMP_TRU_F16,"V_CMP_TRU_F16",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_V_CMPX_F_F16,"V_CMPX_F_F16",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_V_CMPX_LT_F16,"V_CMPX_LT_F16",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_V_CMPX_EQ_F16,"V_CMPX_EQ_F16",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_V_CMPX_LE_F16,"V_CMPX_LE_F16",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_V_CMPX_GT_F16,"V_CMPX_GT_F16",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_V_CMPX_LG_F16,"V_CMPX_LG_F16",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_V_CMPX_GE_F16,"V_CMPX_GE_F16",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_V_CMPX_O_F16,"V_CMPX_O_F16",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_V_CMPX_U_F16,"V_CMPX_U_F16",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_V_CMPX_NGE_F16,"V_CMPX_NGE_F16",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_V_CMPX_NLG_F16,"V_CMPX_NLG_F16",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_V_CMPX_NGT_F16,"V_CMPX_NGT_F16",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_V_CMPX_NLE_F16,"V_CMPX_NLE_F16",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_V_CMPX_NEQ_F16,"V_CMPX_NEQ_F16",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_V_CMPX_NLT_F16,"V_CMPX_NLT_F16",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_V_CMPX_TRU_F16,"V_CMPX_TRU_F16",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_V_CMP_F_F32,"V_CMP_F_F32",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_V_CMP_LT_F32,"V_CMP_LT_F32",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_V_CMP_EQ_F32,"V_CMP_EQ_F32",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_V_CMP_LE_F32,"V_CMP_LE_F32",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_V_CMP_GT_F32,"V_CMP_GT_F32",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_V_CMP_LG_F32,"V_CMP_LG_F32",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_V_CMP_GE_F32,"V_CMP_GE_F32",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_V_CMP_O_F32,"V_CMP_O_F32",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_V_CMP_U_F32,"V_CMP_U_F32",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_V_CMP_NGE_F32,"V_CMP_NGE_F32",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_V_CMP_NLG_F32,"V_CMP_NLG_F32",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_V_CMP_NGT_F32,"V_CMP_NGT_F32",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_V_CMP_NLE_F32,"V_CMP_NLE_F32",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_V_CMP_NEQ_F32,"V_CMP_NEQ_F32",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_V_CMP_NLT_F32,"V_CMP_NLT_F32",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_V_CMP_TRU_F32,"V_CMP_TRU_F32",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_V_CMPX_F_F32,"V_CMPX_F_F32",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_V_CMPX_LT_F32,"V_CMPX_LT_F32",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_V_CMPX_EQ_F32,"V_CMPX_EQ_F32",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_V_CMPX_LE_F32,"V_CMPX_LE_F32",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_V_CMPX_GT_F32,"V_CMPX_GT_F32",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_V_CMPX_LG_F32,"V_CMPX_LG_F32",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_V_CMPX_GE_F32,"V_CMPX_GE_F32",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_V_CMPX_O_F32,"V_CMPX_O_F32",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_V_CMPX_U_F32,"V_CMPX_U_F32",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_V_CMPX_NGE_F32,"V_CMPX_NGE_F32",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_V_CMPX_NLG_F32,"V_CMPX_NLG_F32",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_V_CMPX_NGT_F32,"V_CMPX_NGT_F32",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_V_CMPX_NLE_F32,"V_CMPX_NLE_F32",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_V_CMPX_NEQ_F32,"V_CMPX_NEQ_F32",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_V_CMPX_NLT_F32,"V_CMPX_NLT_F32",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_V_CMPX_TRU_F32,"V_CMPX_TRU_F32",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_V_CMP_F_F64,"V_CMP_F_F64",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_V_CMP_LT_F64,"V_CMP_LT_F64",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_V_CMP_EQ_F64,"V_CMP_EQ_F64",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_V_CMP_LE_F64,"V_CMP_LE_F64",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_V_CMP_GT_F64,"V_CMP_GT_F64",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_V_CMP_LG_F64,"V_CMP_LG_F64",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_V_CMP_GE_F64,"V_CMP_GE_F64",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_V_CMP_O_F64,"V_CMP_O_F64",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_V_CMP_U_F64,"V_CMP_U_F64",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_V_CMP_NGE_F64,"V_CMP_NGE_F64",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_V_CMP_NLG_F64,"V_CMP_NLG_F64",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_V_CMP_NGT_F64,"V_CMP_NGT_F64",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_V_CMP_NLE_F64,"V_CMP_NLE_F64",0,&operandTable[0]} ,//108 +{amdgpu_cdna2_op_V_CMP_NEQ_F64,"V_CMP_NEQ_F64",0,&operandTable[0]} ,//109 +{amdgpu_cdna2_op_V_CMP_NLT_F64,"V_CMP_NLT_F64",0,&operandTable[0]} ,//110 +{amdgpu_cdna2_op_V_CMP_TRU_F64,"V_CMP_TRU_F64",0,&operandTable[0]} ,//111 +{amdgpu_cdna2_op_V_CMPX_F_F64,"V_CMPX_F_F64",0,&operandTable[0]} ,//112 +{amdgpu_cdna2_op_V_CMPX_LT_F64,"V_CMPX_LT_F64",0,&operandTable[0]} ,//113 +{amdgpu_cdna2_op_V_CMPX_EQ_F64,"V_CMPX_EQ_F64",0,&operandTable[0]} ,//114 +{amdgpu_cdna2_op_V_CMPX_LE_F64,"V_CMPX_LE_F64",0,&operandTable[0]} ,//115 +{amdgpu_cdna2_op_V_CMPX_GT_F64,"V_CMPX_GT_F64",0,&operandTable[0]} ,//116 +{amdgpu_cdna2_op_V_CMPX_LG_F64,"V_CMPX_LG_F64",0,&operandTable[0]} ,//117 +{amdgpu_cdna2_op_V_CMPX_GE_F64,"V_CMPX_GE_F64",0,&operandTable[0]} ,//118 +{amdgpu_cdna2_op_V_CMPX_O_F64,"V_CMPX_O_F64",0,&operandTable[0]} ,//119 +{amdgpu_cdna2_op_V_CMPX_U_F64,"V_CMPX_U_F64",0,&operandTable[0]} ,//120 +{amdgpu_cdna2_op_V_CMPX_NGE_F64,"V_CMPX_NGE_F64",0,&operandTable[0]} ,//121 +{amdgpu_cdna2_op_V_CMPX_NLG_F64,"V_CMPX_NLG_F64",0,&operandTable[0]} ,//122 +{amdgpu_cdna2_op_V_CMPX_NGT_F64,"V_CMPX_NGT_F64",0,&operandTable[0]} ,//123 +{amdgpu_cdna2_op_V_CMPX_NLE_F64,"V_CMPX_NLE_F64",0,&operandTable[0]} ,//124 +{amdgpu_cdna2_op_V_CMPX_NEQ_F64,"V_CMPX_NEQ_F64",0,&operandTable[0]} ,//125 +{amdgpu_cdna2_op_V_CMPX_NLT_F64,"V_CMPX_NLT_F64",0,&operandTable[0]} ,//126 +{amdgpu_cdna2_op_V_CMPX_TRU_F64,"V_CMPX_TRU_F64",0,&operandTable[0]} ,//127 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_cdna2_op_V_CMP_F_I16,"V_CMP_F_I16",0,&operandTable[0]} ,//160 +{amdgpu_cdna2_op_V_CMP_LT_I16,"V_CMP_LT_I16",0,&operandTable[0]} ,//161 +{amdgpu_cdna2_op_V_CMP_EQ_I16,"V_CMP_EQ_I16",0,&operandTable[0]} ,//162 +{amdgpu_cdna2_op_V_CMP_LE_I16,"V_CMP_LE_I16",0,&operandTable[0]} ,//163 +{amdgpu_cdna2_op_V_CMP_GT_I16,"V_CMP_GT_I16",0,&operandTable[0]} ,//164 +{amdgpu_cdna2_op_V_CMP_NE_I16,"V_CMP_NE_I16",0,&operandTable[0]} ,//165 +{amdgpu_cdna2_op_V_CMP_GE_I16,"V_CMP_GE_I16",0,&operandTable[0]} ,//166 +{amdgpu_cdna2_op_V_CMP_T_I16,"V_CMP_T_I16",0,&operandTable[0]} ,//167 +{amdgpu_cdna2_op_V_CMP_F_U16,"V_CMP_F_U16",0,&operandTable[0]} ,//168 +{amdgpu_cdna2_op_V_CMP_LT_U16,"V_CMP_LT_U16",0,&operandTable[0]} ,//169 +{amdgpu_cdna2_op_V_CMP_EQ_U16,"V_CMP_EQ_U16",0,&operandTable[0]} ,//170 +{amdgpu_cdna2_op_V_CMP_LE_U16,"V_CMP_LE_U16",0,&operandTable[0]} ,//171 +{amdgpu_cdna2_op_V_CMP_GT_U16,"V_CMP_GT_U16",0,&operandTable[0]} ,//172 +{amdgpu_cdna2_op_V_CMP_NE_U16,"V_CMP_NE_U16",0,&operandTable[0]} ,//173 +{amdgpu_cdna2_op_V_CMP_GE_U16,"V_CMP_GE_U16",0,&operandTable[0]} ,//174 +{amdgpu_cdna2_op_V_CMP_T_U16,"V_CMP_T_U16",0,&operandTable[0]} ,//175 +{amdgpu_cdna2_op_V_CMPX_F_I16,"V_CMPX_F_I16",0,&operandTable[0]} ,//176 +{amdgpu_cdna2_op_V_CMPX_LT_I16,"V_CMPX_LT_I16",0,&operandTable[0]} ,//177 +{amdgpu_cdna2_op_V_CMPX_EQ_I16,"V_CMPX_EQ_I16",0,&operandTable[0]} ,//178 +{amdgpu_cdna2_op_V_CMPX_LE_I16,"V_CMPX_LE_I16",0,&operandTable[0]} ,//179 +{amdgpu_cdna2_op_V_CMPX_GT_I16,"V_CMPX_GT_I16",0,&operandTable[0]} ,//180 +{amdgpu_cdna2_op_V_CMPX_NE_I16,"V_CMPX_NE_I16",0,&operandTable[0]} ,//181 +{amdgpu_cdna2_op_V_CMPX_GE_I16,"V_CMPX_GE_I16",0,&operandTable[0]} ,//182 +{amdgpu_cdna2_op_V_CMPX_T_I16,"V_CMPX_T_I16",0,&operandTable[0]} ,//183 +{amdgpu_cdna2_op_V_CMPX_F_U16,"V_CMPX_F_U16",0,&operandTable[0]} ,//184 +{amdgpu_cdna2_op_V_CMPX_LT_U16,"V_CMPX_LT_U16",0,&operandTable[0]} ,//185 +{amdgpu_cdna2_op_V_CMPX_EQ_U16,"V_CMPX_EQ_U16",0,&operandTable[0]} ,//186 +{amdgpu_cdna2_op_V_CMPX_LE_U16,"V_CMPX_LE_U16",0,&operandTable[0]} ,//187 +{amdgpu_cdna2_op_V_CMPX_GT_U16,"V_CMPX_GT_U16",0,&operandTable[0]} ,//188 +{amdgpu_cdna2_op_V_CMPX_NE_U16,"V_CMPX_NE_U16",0,&operandTable[0]} ,//189 +{amdgpu_cdna2_op_V_CMPX_GE_U16,"V_CMPX_GE_U16",0,&operandTable[0]} ,//190 +{amdgpu_cdna2_op_V_CMPX_T_U16,"V_CMPX_T_U16",0,&operandTable[0]} ,//191 +{amdgpu_cdna2_op_V_CMP_F_I32,"V_CMP_F_I32",0,&operandTable[0]} ,//192 +{amdgpu_cdna2_op_V_CMP_LT_I32,"V_CMP_LT_I32",0,&operandTable[0]} ,//193 +{amdgpu_cdna2_op_V_CMP_EQ_I32,"V_CMP_EQ_I32",0,&operandTable[0]} ,//194 +{amdgpu_cdna2_op_V_CMP_LE_I32,"V_CMP_LE_I32",0,&operandTable[0]} ,//195 +{amdgpu_cdna2_op_V_CMP_GT_I32,"V_CMP_GT_I32",0,&operandTable[0]} ,//196 +{amdgpu_cdna2_op_V_CMP_NE_I32,"V_CMP_NE_I32",0,&operandTable[0]} ,//197 +{amdgpu_cdna2_op_V_CMP_GE_I32,"V_CMP_GE_I32",0,&operandTable[0]} ,//198 +{amdgpu_cdna2_op_V_CMP_T_I32,"V_CMP_T_I32",0,&operandTable[0]} ,//199 +{amdgpu_cdna2_op_V_CMP_F_U32,"V_CMP_F_U32",0,&operandTable[0]} ,//200 +{amdgpu_cdna2_op_V_CMP_LT_U32,"V_CMP_LT_U32",0,&operandTable[0]} ,//201 +{amdgpu_cdna2_op_V_CMP_EQ_U32,"V_CMP_EQ_U32",0,&operandTable[0]} ,//202 +{amdgpu_cdna2_op_V_CMP_LE_U32,"V_CMP_LE_U32",0,&operandTable[0]} ,//203 +{amdgpu_cdna2_op_V_CMP_GT_U32,"V_CMP_GT_U32",0,&operandTable[0]} ,//204 +{amdgpu_cdna2_op_V_CMP_NE_U32,"V_CMP_NE_U32",0,&operandTable[0]} ,//205 +{amdgpu_cdna2_op_V_CMP_GE_U32,"V_CMP_GE_U32",0,&operandTable[0]} ,//206 +{amdgpu_cdna2_op_V_CMP_T_U32,"V_CMP_T_U32",0,&operandTable[0]} ,//207 +{amdgpu_cdna2_op_V_CMPX_F_I32,"V_CMPX_F_I32",0,&operandTable[0]} ,//208 +{amdgpu_cdna2_op_V_CMPX_LT_I32,"V_CMPX_LT_I32",0,&operandTable[0]} ,//209 +{amdgpu_cdna2_op_V_CMPX_EQ_I32,"V_CMPX_EQ_I32",0,&operandTable[0]} ,//210 +{amdgpu_cdna2_op_V_CMPX_LE_I32,"V_CMPX_LE_I32",0,&operandTable[0]} ,//211 +{amdgpu_cdna2_op_V_CMPX_GT_I32,"V_CMPX_GT_I32",0,&operandTable[0]} ,//212 +{amdgpu_cdna2_op_V_CMPX_NE_I32,"V_CMPX_NE_I32",0,&operandTable[0]} ,//213 +{amdgpu_cdna2_op_V_CMPX_GE_I32,"V_CMPX_GE_I32",0,&operandTable[0]} ,//214 +{amdgpu_cdna2_op_V_CMPX_T_I32,"V_CMPX_T_I32",0,&operandTable[0]} ,//215 +{amdgpu_cdna2_op_V_CMPX_F_U32,"V_CMPX_F_U32",0,&operandTable[0]} ,//216 +{amdgpu_cdna2_op_V_CMPX_LT_U32,"V_CMPX_LT_U32",0,&operandTable[0]} ,//217 +{amdgpu_cdna2_op_V_CMPX_EQ_U32,"V_CMPX_EQ_U32",0,&operandTable[0]} ,//218 +{amdgpu_cdna2_op_V_CMPX_LE_U32,"V_CMPX_LE_U32",0,&operandTable[0]} ,//219 +{amdgpu_cdna2_op_V_CMPX_GT_U32,"V_CMPX_GT_U32",0,&operandTable[0]} ,//220 +{amdgpu_cdna2_op_V_CMPX_NE_U32,"V_CMPX_NE_U32",0,&operandTable[0]} ,//221 +{amdgpu_cdna2_op_V_CMPX_GE_U32,"V_CMPX_GE_U32",0,&operandTable[0]} ,//222 +{amdgpu_cdna2_op_V_CMPX_T_U32,"V_CMPX_T_U32",0,&operandTable[0]} ,//223 +{amdgpu_cdna2_op_V_CMP_F_I64,"V_CMP_F_I64",0,&operandTable[0]} ,//224 +{amdgpu_cdna2_op_V_CMP_LT_I64,"V_CMP_LT_I64",0,&operandTable[0]} ,//225 +{amdgpu_cdna2_op_V_CMP_EQ_I64,"V_CMP_EQ_I64",0,&operandTable[0]} ,//226 +{amdgpu_cdna2_op_V_CMP_LE_I64,"V_CMP_LE_I64",0,&operandTable[0]} ,//227 +{amdgpu_cdna2_op_V_CMP_GT_I64,"V_CMP_GT_I64",0,&operandTable[0]} ,//228 +{amdgpu_cdna2_op_V_CMP_NE_I64,"V_CMP_NE_I64",0,&operandTable[0]} ,//229 +{amdgpu_cdna2_op_V_CMP_GE_I64,"V_CMP_GE_I64",0,&operandTable[0]} ,//230 +{amdgpu_cdna2_op_V_CMP_T_I64,"V_CMP_T_I64",0,&operandTable[0]} ,//231 +{amdgpu_cdna2_op_V_CMP_F_U64,"V_CMP_F_U64",0,&operandTable[0]} ,//232 +{amdgpu_cdna2_op_V_CMP_LT_U64,"V_CMP_LT_U64",0,&operandTable[0]} ,//233 +{amdgpu_cdna2_op_V_CMP_EQ_U64,"V_CMP_EQ_U64",0,&operandTable[0]} ,//234 +{amdgpu_cdna2_op_V_CMP_LE_U64,"V_CMP_LE_U64",0,&operandTable[0]} ,//235 +{amdgpu_cdna2_op_V_CMP_GT_U64,"V_CMP_GT_U64",0,&operandTable[0]} ,//236 +{amdgpu_cdna2_op_V_CMP_NE_U64,"V_CMP_NE_U64",0,&operandTable[0]} ,//237 +{amdgpu_cdna2_op_V_CMP_GE_U64,"V_CMP_GE_U64",0,&operandTable[0]} ,//238 +{amdgpu_cdna2_op_V_CMP_T_U64,"V_CMP_T_U64",0,&operandTable[0]} ,//239 +{amdgpu_cdna2_op_V_CMPX_F_I64,"V_CMPX_F_I64",0,&operandTable[0]} ,//240 +{amdgpu_cdna2_op_V_CMPX_LT_I64,"V_CMPX_LT_I64",0,&operandTable[0]} ,//241 +{amdgpu_cdna2_op_V_CMPX_EQ_I64,"V_CMPX_EQ_I64",0,&operandTable[0]} ,//242 +{amdgpu_cdna2_op_V_CMPX_LE_I64,"V_CMPX_LE_I64",0,&operandTable[0]} ,//243 +{amdgpu_cdna2_op_V_CMPX_GT_I64,"V_CMPX_GT_I64",0,&operandTable[0]} ,//244 +{amdgpu_cdna2_op_V_CMPX_NE_I64,"V_CMPX_NE_I64",0,&operandTable[0]} ,//245 +{amdgpu_cdna2_op_V_CMPX_GE_I64,"V_CMPX_GE_I64",0,&operandTable[0]} ,//246 +{amdgpu_cdna2_op_V_CMPX_T_I64,"V_CMPX_T_I64",0,&operandTable[0]} ,//247 +{amdgpu_cdna2_op_V_CMPX_F_U64,"V_CMPX_F_U64",0,&operandTable[0]} ,//248 +{amdgpu_cdna2_op_V_CMPX_LT_U64,"V_CMPX_LT_U64",0,&operandTable[0]} ,//249 +{amdgpu_cdna2_op_V_CMPX_EQ_U64,"V_CMPX_EQ_U64",0,&operandTable[0]} ,//250 +{amdgpu_cdna2_op_V_CMPX_LE_U64,"V_CMPX_LE_U64",0,&operandTable[0]} ,//251 +{amdgpu_cdna2_op_V_CMPX_GT_U64,"V_CMPX_GT_U64",0,&operandTable[0]} ,//252 +{amdgpu_cdna2_op_V_CMPX_NE_U64,"V_CMPX_NE_U64",0,&operandTable[0]} ,//253 +{amdgpu_cdna2_op_V_CMPX_GE_U64,"V_CMPX_GE_U64",0,&operandTable[0]} ,//254 +{amdgpu_cdna2_op_V_CMPX_T_U64,"V_CMPX_T_U64",0,&operandTable[0]} ,//255 +{amdgpu_cdna2_op_V_CNDMASK_B32,"V_CNDMASK_B32",0,&operandTable[0]} ,//256 +{amdgpu_cdna2_op_V_ADD_F32,"V_ADD_F32",0,&operandTable[0]} ,//257 +{amdgpu_cdna2_op_V_SUB_F32,"V_SUB_F32",0,&operandTable[0]} ,//258 +{amdgpu_cdna2_op_V_SUBREV_F32,"V_SUBREV_F32",0,&operandTable[0]} ,//259 +{amdgpu_cdna2_op_V_FMAC_F64,"V_FMAC_F64",0,&operandTable[0]} ,//260 +{amdgpu_cdna2_op_V_MUL_F32,"V_MUL_F32",0,&operandTable[0]} ,//261 +{amdgpu_cdna2_op_V_MUL_I32_I24,"V_MUL_I32_I24",0,&operandTable[0]} ,//262 +{amdgpu_cdna2_op_V_MUL_HI_I32_I24,"V_MUL_HI_I32_I24",0,&operandTable[0]} ,//263 +{amdgpu_cdna2_op_V_MUL_U32_U24,"V_MUL_U32_U24",0,&operandTable[0]} ,//264 +{amdgpu_cdna2_op_V_MUL_HI_U32_U24,"V_MUL_HI_U32_U24",0,&operandTable[0]} ,//265 +{amdgpu_cdna2_op_V_MIN_F32,"V_MIN_F32",0,&operandTable[0]} ,//266 +{amdgpu_cdna2_op_V_MAX_F32,"V_MAX_F32",0,&operandTable[0]} ,//267 +{amdgpu_cdna2_op_V_MIN_I32,"V_MIN_I32",0,&operandTable[0]} ,//268 +{amdgpu_cdna2_op_V_MAX_I32,"V_MAX_I32",0,&operandTable[0]} ,//269 +{amdgpu_cdna2_op_V_MIN_U32,"V_MIN_U32",0,&operandTable[0]} ,//270 +{amdgpu_cdna2_op_V_MAX_U32,"V_MAX_U32",0,&operandTable[0]} ,//271 +{amdgpu_cdna2_op_V_LSHRREV_B32,"V_LSHRREV_B32",0,&operandTable[0]} ,//272 +{amdgpu_cdna2_op_V_ASHRREV_I32,"V_ASHRREV_I32",0,&operandTable[0]} ,//273 +{amdgpu_cdna2_op_V_LSHLREV_B32,"V_LSHLREV_B32",0,&operandTable[0]} ,//274 +{amdgpu_cdna2_op_V_AND_B32,"V_AND_B32",0,&operandTable[0]} ,//275 +{amdgpu_cdna2_op_V_OR_B32,"V_OR_B32",0,&operandTable[0]} ,//276 +{amdgpu_cdna2_op_V_XOR_B32,"V_XOR_B32",0,&operandTable[0]} ,//277 +{amdgpu_cdna2_op_V_MAC_F32,"V_MAC_F32",0,&operandTable[0]} ,//278 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//279 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//280 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//281 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//282 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//283 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//284 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//285 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//286 +{amdgpu_cdna2_op_V_ADD_F16,"V_ADD_F16",0,&operandTable[0]} ,//287 +{amdgpu_cdna2_op_V_SUB_F16,"V_SUB_F16",0,&operandTable[0]} ,//288 +{amdgpu_cdna2_op_V_SUBREV_F16,"V_SUBREV_F16",0,&operandTable[0]} ,//289 +{amdgpu_cdna2_op_V_MUL_F16,"V_MUL_F16",0,&operandTable[0]} ,//290 +{amdgpu_cdna2_op_V_MAC_F16,"V_MAC_F16",0,&operandTable[0]} ,//291 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//292 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//293 +{amdgpu_cdna2_op_V_ADD_U16,"V_ADD_U16",0,&operandTable[0]} ,//294 +{amdgpu_cdna2_op_V_SUB_U16,"V_SUB_U16",0,&operandTable[0]} ,//295 +{amdgpu_cdna2_op_V_SUBREV_U16,"V_SUBREV_U16",0,&operandTable[0]} ,//296 +{amdgpu_cdna2_op_V_MUL_LO_U16,"V_MUL_LO_U16",0,&operandTable[0]} ,//297 +{amdgpu_cdna2_op_V_LSHLREV_B16,"V_LSHLREV_B16",0,&operandTable[0]} ,//298 +{amdgpu_cdna2_op_V_LSHRREV_B16,"V_LSHRREV_B16",0,&operandTable[0]} ,//299 +{amdgpu_cdna2_op_V_ASHRREV_I16,"V_ASHRREV_I16",0,&operandTable[0]} ,//300 +{amdgpu_cdna2_op_V_MAX_F16,"V_MAX_F16",0,&operandTable[0]} ,//301 +{amdgpu_cdna2_op_V_MIN_F16,"V_MIN_F16",0,&operandTable[0]} ,//302 +{amdgpu_cdna2_op_V_MAX_U16,"V_MAX_U16",0,&operandTable[0]} ,//303 +{amdgpu_cdna2_op_V_MAX_I16,"V_MAX_I16",0,&operandTable[0]} ,//304 +{amdgpu_cdna2_op_V_MIN_U16,"V_MIN_U16",0,&operandTable[0]} ,//305 +{amdgpu_cdna2_op_V_MIN_I16,"V_MIN_I16",0,&operandTable[0]} ,//306 +{amdgpu_cdna2_op_V_LDEXP_F16,"V_LDEXP_F16",0,&operandTable[0]} ,//307 +{amdgpu_cdna2_op_V_ADD_U32,"V_ADD_U32",0,&operandTable[0]} ,//308 +{amdgpu_cdna2_op_V_SUB_U32,"V_SUB_U32",0,&operandTable[0]} ,//309 +{amdgpu_cdna2_op_V_SUBREV_U32,"V_SUBREV_U32",0,&operandTable[0]} ,//310 +{amdgpu_cdna2_op_V_DOT2C_F32_F16,"V_DOT2C_F32_F16",0,&operandTable[0]} ,//311 +{amdgpu_cdna2_op_V_DOT2C_I32_I16,"V_DOT2C_I32_I16",0,&operandTable[0]} ,//312 +{amdgpu_cdna2_op_V_DOT4C_I32_I8,"V_DOT4C_I32_I8",0,&operandTable[0]} ,//313 +{amdgpu_cdna2_op_V_DOT8C_I32_I4,"V_DOT8C_I32_I4",0,&operandTable[0]} ,//314 +{amdgpu_cdna2_op_V_FMAC_F32,"V_FMAC_F32",0,&operandTable[0]} ,//315 +{amdgpu_cdna2_op_V_PK_FMAC_F16,"V_PK_FMAC_F16",0,&operandTable[0]} ,//316 +{amdgpu_cdna2_op_V_XNOR_B32,"V_XNOR_B32",0,&operandTable[0]} ,//317 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//318 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//319 +{amdgpu_cdna2_op_V_NOP,"V_NOP",0,&operandTable[0]} ,//320 +{amdgpu_cdna2_op_V_MOV_B32,"V_MOV_B32",0,&operandTable[0]} ,//321 +{amdgpu_cdna2_op_V_READFIRSTLANE_B32,"V_READFIRSTLANE_B32",0,&operandTable[0]} ,//322 +{amdgpu_cdna2_op_V_CVT_I32_F64,"V_CVT_I32_F64",0,&operandTable[0]} ,//323 +{amdgpu_cdna2_op_V_CVT_F64_I32,"V_CVT_F64_I32",0,&operandTable[0]} ,//324 +{amdgpu_cdna2_op_V_CVT_F32_I32,"V_CVT_F32_I32",0,&operandTable[0]} ,//325 +{amdgpu_cdna2_op_V_CVT_F32_U32,"V_CVT_F32_U32",0,&operandTable[0]} ,//326 +{amdgpu_cdna2_op_V_CVT_U32_F32,"V_CVT_U32_F32",0,&operandTable[0]} ,//327 +{amdgpu_cdna2_op_V_CVT_I32_F32,"V_CVT_I32_F32",0,&operandTable[0]} ,//328 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//329 +{amdgpu_cdna2_op_V_CVT_F16_F32,"V_CVT_F16_F32",0,&operandTable[0]} ,//330 +{amdgpu_cdna2_op_V_CVT_F32_F16,"V_CVT_F32_F16",0,&operandTable[0]} ,//331 +{amdgpu_cdna2_op_V_CVT_RPI_I32_F32,"V_CVT_RPI_I32_F32",0,&operandTable[0]} ,//332 +{amdgpu_cdna2_op_V_CVT_FLR_I32_F32,"V_CVT_FLR_I32_F32",0,&operandTable[0]} ,//333 +{amdgpu_cdna2_op_V_CVT_OFF_F32_I4,"V_CVT_OFF_F32_I4",0,&operandTable[0]} ,//334 +{amdgpu_cdna2_op_V_CVT_F32_F64,"V_CVT_F32_F64",0,&operandTable[0]} ,//335 +{amdgpu_cdna2_op_V_CVT_F64_F32,"V_CVT_F64_F32",0,&operandTable[0]} ,//336 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE0,"V_CVT_F32_UBYTE0",0,&operandTable[0]} ,//337 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE1,"V_CVT_F32_UBYTE1",0,&operandTable[0]} ,//338 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE2,"V_CVT_F32_UBYTE2",0,&operandTable[0]} ,//339 +{amdgpu_cdna2_op_V_CVT_F32_UBYTE3,"V_CVT_F32_UBYTE3",0,&operandTable[0]} ,//340 +{amdgpu_cdna2_op_V_CVT_U32_F64,"V_CVT_U32_F64",0,&operandTable[0]} ,//341 +{amdgpu_cdna2_op_V_CVT_F64_U32,"V_CVT_F64_U32",0,&operandTable[0]} ,//342 +{amdgpu_cdna2_op_V_TRUNC_F64,"V_TRUNC_F64",0,&operandTable[0]} ,//343 +{amdgpu_cdna2_op_V_CEIL_F64,"V_CEIL_F64",0,&operandTable[0]} ,//344 +{amdgpu_cdna2_op_V_RNDNE_F64,"V_RNDNE_F64",0,&operandTable[0]} ,//345 +{amdgpu_cdna2_op_V_FLOOR_F64,"V_FLOOR_F64",0,&operandTable[0]} ,//346 +{amdgpu_cdna2_op_V_FRACT_F32,"V_FRACT_F32",0,&operandTable[0]} ,//347 +{amdgpu_cdna2_op_V_TRUNC_F32,"V_TRUNC_F32",0,&operandTable[0]} ,//348 +{amdgpu_cdna2_op_V_CEIL_F32,"V_CEIL_F32",0,&operandTable[0]} ,//349 +{amdgpu_cdna2_op_V_RNDNE_F32,"V_RNDNE_F32",0,&operandTable[0]} ,//350 +{amdgpu_cdna2_op_V_FLOOR_F32,"V_FLOOR_F32",0,&operandTable[0]} ,//351 +{amdgpu_cdna2_op_V_EXP_F32,"V_EXP_F32",0,&operandTable[0]} ,//352 +{amdgpu_cdna2_op_V_LOG_F32,"V_LOG_F32",0,&operandTable[0]} ,//353 +{amdgpu_cdna2_op_V_RCP_F32,"V_RCP_F32",0,&operandTable[0]} ,//354 +{amdgpu_cdna2_op_V_RCP_IFLAG_F32,"V_RCP_IFLAG_F32",0,&operandTable[0]} ,//355 +{amdgpu_cdna2_op_V_RSQ_F32,"V_RSQ_F32",0,&operandTable[0]} ,//356 +{amdgpu_cdna2_op_V_RCP_F64,"V_RCP_F64",0,&operandTable[0]} ,//357 +{amdgpu_cdna2_op_V_RSQ_F64,"V_RSQ_F64",0,&operandTable[0]} ,//358 +{amdgpu_cdna2_op_V_SQRT_F32,"V_SQRT_F32",0,&operandTable[0]} ,//359 +{amdgpu_cdna2_op_V_SQRT_F64,"V_SQRT_F64",0,&operandTable[0]} ,//360 +{amdgpu_cdna2_op_V_SIN_F32,"V_SIN_F32",0,&operandTable[0]} ,//361 +{amdgpu_cdna2_op_V_COS_F32,"V_COS_F32",0,&operandTable[0]} ,//362 +{amdgpu_cdna2_op_V_NOT_B32,"V_NOT_B32",0,&operandTable[0]} ,//363 +{amdgpu_cdna2_op_V_BFREV_B32,"V_BFREV_B32",0,&operandTable[0]} ,//364 +{amdgpu_cdna2_op_V_FFBH_U32,"V_FFBH_U32",0,&operandTable[0]} ,//365 +{amdgpu_cdna2_op_V_FFBL_B32,"V_FFBL_B32",0,&operandTable[0]} ,//366 +{amdgpu_cdna2_op_V_FFBH_I32,"V_FFBH_I32",0,&operandTable[0]} ,//367 +{amdgpu_cdna2_op_V_FREXP_EXP_I32_F64,"V_FREXP_EXP_I32_F64",0,&operandTable[0]} ,//368 +{amdgpu_cdna2_op_V_FREXP_MANT_F64,"V_FREXP_MANT_F64",0,&operandTable[0]} ,//369 +{amdgpu_cdna2_op_V_FRACT_F64,"V_FRACT_F64",0,&operandTable[0]} ,//370 +{amdgpu_cdna2_op_V_FREXP_EXP_I32_F32,"V_FREXP_EXP_I32_F32",0,&operandTable[0]} ,//371 +{amdgpu_cdna2_op_V_FREXP_MANT_F32,"V_FREXP_MANT_F32",0,&operandTable[0]} ,//372 +{amdgpu_cdna2_op_V_CLREXCP,"V_CLREXCP",0,&operandTable[0]} ,//373 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//374 +{amdgpu_cdna2_op_V_SCREEN_PARTITION_4SE_B32,"V_SCREEN_PARTITION_4SE_B32",0,&operandTable[0]} ,//375 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//376 +{amdgpu_cdna2_op_V_CVT_F16_U16,"V_CVT_F16_U16",0,&operandTable[0]} ,//377 +{amdgpu_cdna2_op_V_CVT_F16_I16,"V_CVT_F16_I16",0,&operandTable[0]} ,//378 +{amdgpu_cdna2_op_V_CVT_U16_F16,"V_CVT_U16_F16",0,&operandTable[0]} ,//379 +{amdgpu_cdna2_op_V_CVT_I16_F16,"V_CVT_I16_F16",0,&operandTable[0]} ,//380 +{amdgpu_cdna2_op_V_RCP_F16,"V_RCP_F16",0,&operandTable[0]} ,//381 +{amdgpu_cdna2_op_V_SQRT_F16,"V_SQRT_F16",0,&operandTable[0]} ,//382 +{amdgpu_cdna2_op_V_RSQ_F16,"V_RSQ_F16",0,&operandTable[0]} ,//383 +{amdgpu_cdna2_op_V_LOG_F16,"V_LOG_F16",0,&operandTable[0]} ,//384 +{amdgpu_cdna2_op_V_EXP_F16,"V_EXP_F16",0,&operandTable[0]} ,//385 +{amdgpu_cdna2_op_V_FREXP_MANT_F16,"V_FREXP_MANT_F16",0,&operandTable[0]} ,//386 +{amdgpu_cdna2_op_V_FREXP_EXP_I16_F16,"V_FREXP_EXP_I16_F16",0,&operandTable[0]} ,//387 +{amdgpu_cdna2_op_V_FLOOR_F16,"V_FLOOR_F16",0,&operandTable[0]} ,//388 +{amdgpu_cdna2_op_V_CEIL_F16,"V_CEIL_F16",0,&operandTable[0]} ,//389 +{amdgpu_cdna2_op_V_TRUNC_F16,"V_TRUNC_F16",0,&operandTable[0]} ,//390 +{amdgpu_cdna2_op_V_RNDNE_F16,"V_RNDNE_F16",0,&operandTable[0]} ,//391 +{amdgpu_cdna2_op_V_FRACT_F16,"V_FRACT_F16",0,&operandTable[0]} ,//392 +{amdgpu_cdna2_op_V_SIN_F16,"V_SIN_F16",0,&operandTable[0]} ,//393 +{amdgpu_cdna2_op_V_COS_F16,"V_COS_F16",0,&operandTable[0]} ,//394 +{amdgpu_cdna2_op_V_EXP_LEGACY_F32,"V_EXP_LEGACY_F32",0,&operandTable[0]} ,//395 +{amdgpu_cdna2_op_V_LOG_LEGACY_F32,"V_LOG_LEGACY_F32",0,&operandTable[0]} ,//396 +{amdgpu_cdna2_op_V_CVT_NORM_I16_F16,"V_CVT_NORM_I16_F16",0,&operandTable[0]} ,//397 +{amdgpu_cdna2_op_V_CVT_NORM_U16_F16,"V_CVT_NORM_U16_F16",0,&operandTable[0]} ,//398 +{amdgpu_cdna2_op_V_SAT_PK_U8_I16,"V_SAT_PK_U8_I16",0,&operandTable[0]} ,//399 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//400 +{amdgpu_cdna2_op_V_SWAP_B32,"V_SWAP_B32",0,&operandTable[0]} ,//401 +{amdgpu_cdna2_op_V_ACCVGPR_MOV_B32,"V_ACCVGPR_MOV_B32",0,&operandTable[0]} ,//402 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//403 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//404 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//405 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//406 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//407 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//408 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//409 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//410 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//411 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//412 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//413 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//414 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//415 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//416 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//417 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//418 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//419 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//420 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//421 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//422 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//423 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//424 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//425 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//426 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//427 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//428 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//429 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//430 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//431 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//432 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//433 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//434 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//435 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//436 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//437 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//438 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//439 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//440 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//441 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//442 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//443 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//444 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//445 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//446 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//447 +{amdgpu_cdna2_op_V_MAD_LEGACY_F32,"V_MAD_LEGACY_F32",0,&operandTable[0]} ,//448 +{amdgpu_cdna2_op_V_MAD_F32,"V_MAD_F32",0,&operandTable[0]} ,//449 +{amdgpu_cdna2_op_V_MAD_I32_I24,"V_MAD_I32_I24",0,&operandTable[0]} ,//450 +{amdgpu_cdna2_op_V_MAD_U32_U24,"V_MAD_U32_U24",0,&operandTable[0]} ,//451 +{amdgpu_cdna2_op_V_CUBEID_F32,"V_CUBEID_F32",0,&operandTable[0]} ,//452 +{amdgpu_cdna2_op_V_CUBESC_F32,"V_CUBESC_F32",0,&operandTable[0]} ,//453 +{amdgpu_cdna2_op_V_CUBETC_F32,"V_CUBETC_F32",0,&operandTable[0]} ,//454 +{amdgpu_cdna2_op_V_CUBEMA_F32,"V_CUBEMA_F32",0,&operandTable[0]} ,//455 +{amdgpu_cdna2_op_V_BFE_U32,"V_BFE_U32",0,&operandTable[0]} ,//456 +{amdgpu_cdna2_op_V_BFE_I32,"V_BFE_I32",0,&operandTable[0]} ,//457 +{amdgpu_cdna2_op_V_BFI_B32,"V_BFI_B32",0,&operandTable[0]} ,//458 +{amdgpu_cdna2_op_V_FMA_F32,"V_FMA_F32",0,&operandTable[0]} ,//459 +{amdgpu_cdna2_op_V_FMA_F64,"V_FMA_F64",0,&operandTable[0]} ,//460 +{amdgpu_cdna2_op_V_LERP_U8,"V_LERP_U8",0,&operandTable[0]} ,//461 +{amdgpu_cdna2_op_V_ALIGNBIT_B32,"V_ALIGNBIT_B32",0,&operandTable[0]} ,//462 +{amdgpu_cdna2_op_V_ALIGNBYTE_B32,"V_ALIGNBYTE_B32",0,&operandTable[0]} ,//463 +{amdgpu_cdna2_op_V_MIN3_F32,"V_MIN3_F32",0,&operandTable[0]} ,//464 +{amdgpu_cdna2_op_V_MIN3_I32,"V_MIN3_I32",0,&operandTable[0]} ,//465 +{amdgpu_cdna2_op_V_MIN3_U32,"V_MIN3_U32",0,&operandTable[0]} ,//466 +{amdgpu_cdna2_op_V_MAX3_F32,"V_MAX3_F32",0,&operandTable[0]} ,//467 +{amdgpu_cdna2_op_V_MAX3_I32,"V_MAX3_I32",0,&operandTable[0]} ,//468 +{amdgpu_cdna2_op_V_MAX3_U32,"V_MAX3_U32",0,&operandTable[0]} ,//469 +{amdgpu_cdna2_op_V_MED3_F32,"V_MED3_F32",0,&operandTable[0]} ,//470 +{amdgpu_cdna2_op_V_MED3_I32,"V_MED3_I32",0,&operandTable[0]} ,//471 +{amdgpu_cdna2_op_V_MED3_U32,"V_MED3_U32",0,&operandTable[0]} ,//472 +{amdgpu_cdna2_op_V_SAD_U8,"V_SAD_U8",0,&operandTable[0]} ,//473 +{amdgpu_cdna2_op_V_SAD_HI_U8,"V_SAD_HI_U8",0,&operandTable[0]} ,//474 +{amdgpu_cdna2_op_V_SAD_U16,"V_SAD_U16",0,&operandTable[0]} ,//475 +{amdgpu_cdna2_op_V_SAD_U32,"V_SAD_U32",0,&operandTable[0]} ,//476 +{amdgpu_cdna2_op_V_CVT_PK_U8_F32,"V_CVT_PK_U8_F32",0,&operandTable[0]} ,//477 +{amdgpu_cdna2_op_V_DIV_FIXUP_F32,"V_DIV_FIXUP_F32",0,&operandTable[0]} ,//478 +{amdgpu_cdna2_op_V_DIV_FIXUP_F64,"V_DIV_FIXUP_F64",0,&operandTable[0]} ,//479 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//480 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//481 +{amdgpu_cdna2_op_V_DIV_FMAS_F32,"V_DIV_FMAS_F32",0,&operandTable[0]} ,//482 +{amdgpu_cdna2_op_V_DIV_FMAS_F64,"V_DIV_FMAS_F64",0,&operandTable[0]} ,//483 +{amdgpu_cdna2_op_V_MSAD_U8,"V_MSAD_U8",0,&operandTable[0]} ,//484 +{amdgpu_cdna2_op_V_QSAD_PK_U16_U8,"V_QSAD_PK_U16_U8",0,&operandTable[0]} ,//485 +{amdgpu_cdna2_op_V_MQSAD_PK_U16_U8,"V_MQSAD_PK_U16_U8",0,&operandTable[0]} ,//486 +{amdgpu_cdna2_op_V_MQSAD_U32_U8,"V_MQSAD_U32_U8",0,&operandTable[0]} ,//487 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//488 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//489 +{amdgpu_cdna2_op_V_MAD_LEGACY_F16,"V_MAD_LEGACY_F16",0,&operandTable[0]} ,//490 +{amdgpu_cdna2_op_V_MAD_LEGACY_U16,"V_MAD_LEGACY_U16",0,&operandTable[0]} ,//491 +{amdgpu_cdna2_op_V_MAD_LEGACY_I16,"V_MAD_LEGACY_I16",0,&operandTable[0]} ,//492 +{amdgpu_cdna2_op_V_PERM_B32,"V_PERM_B32",0,&operandTable[0]} ,//493 +{amdgpu_cdna2_op_V_FMA_LEGACY_F16,"V_FMA_LEGACY_F16",0,&operandTable[0]} ,//494 +{amdgpu_cdna2_op_V_DIV_FIXUP_LEGACY_F16,"V_DIV_FIXUP_LEGACY_F16",0,&operandTable[0]} ,//495 +{amdgpu_cdna2_op_V_CVT_PKACCUM_U8_F32,"V_CVT_PKACCUM_U8_F32",0,&operandTable[0]} ,//496 +{amdgpu_cdna2_op_V_MAD_U32_U16,"V_MAD_U32_U16",0,&operandTable[0]} ,//497 +{amdgpu_cdna2_op_V_MAD_I32_I16,"V_MAD_I32_I16",0,&operandTable[0]} ,//498 +{amdgpu_cdna2_op_V_XAD_U32,"V_XAD_U32",0,&operandTable[0]} ,//499 +{amdgpu_cdna2_op_V_MIN3_F16,"V_MIN3_F16",0,&operandTable[0]} ,//500 +{amdgpu_cdna2_op_V_MIN3_I16,"V_MIN3_I16",0,&operandTable[0]} ,//501 +{amdgpu_cdna2_op_V_MIN3_U16,"V_MIN3_U16",0,&operandTable[0]} ,//502 +{amdgpu_cdna2_op_V_MAX3_F16,"V_MAX3_F16",0,&operandTable[0]} ,//503 +{amdgpu_cdna2_op_V_MAX3_I16,"V_MAX3_I16",0,&operandTable[0]} ,//504 +{amdgpu_cdna2_op_V_MAX3_U16,"V_MAX3_U16",0,&operandTable[0]} ,//505 +{amdgpu_cdna2_op_V_MED3_F16,"V_MED3_F16",0,&operandTable[0]} ,//506 +{amdgpu_cdna2_op_V_MED3_I16,"V_MED3_I16",0,&operandTable[0]} ,//507 +{amdgpu_cdna2_op_V_MED3_U16,"V_MED3_U16",0,&operandTable[0]} ,//508 +{amdgpu_cdna2_op_V_LSHL_ADD_U32,"V_LSHL_ADD_U32",0,&operandTable[0]} ,//509 +{amdgpu_cdna2_op_V_ADD_LSHL_U32,"V_ADD_LSHL_U32",0,&operandTable[0]} ,//510 +{amdgpu_cdna2_op_V_ADD3_U32,"V_ADD3_U32",0,&operandTable[0]} ,//511 +{amdgpu_cdna2_op_V_LSHL_OR_B32,"V_LSHL_OR_B32",0,&operandTable[0]} ,//512 +{amdgpu_cdna2_op_V_AND_OR_B32,"V_AND_OR_B32",0,&operandTable[0]} ,//513 +{amdgpu_cdna2_op_V_OR3_B32,"V_OR3_B32",0,&operandTable[0]} ,//514 +{amdgpu_cdna2_op_V_MAD_F16,"V_MAD_F16",0,&operandTable[0]} ,//515 +{amdgpu_cdna2_op_V_MAD_U16,"V_MAD_U16",0,&operandTable[0]} ,//516 +{amdgpu_cdna2_op_V_MAD_I16,"V_MAD_I16",0,&operandTable[0]} ,//517 +{amdgpu_cdna2_op_V_FMA_F16,"V_FMA_F16",0,&operandTable[0]} ,//518 +{amdgpu_cdna2_op_V_DIV_FIXUP_F16,"V_DIV_FIXUP_F16",0,&operandTable[0]} ,//519 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//520 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//521 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//522 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//523 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//524 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//525 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//526 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//527 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//528 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//529 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//530 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//531 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//532 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//533 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//534 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//535 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//536 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//537 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//538 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//539 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//540 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//541 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//542 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//543 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//544 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//545 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//546 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//547 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//548 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//549 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//550 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//551 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//552 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//553 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//554 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//555 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//556 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//557 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//558 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//559 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//560 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//561 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//562 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//563 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//564 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//565 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//566 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//567 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//568 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//569 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//570 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//571 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//572 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//573 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//574 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//575 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//576 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//577 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//578 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//579 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//580 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//581 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//582 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//583 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//584 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//585 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//586 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//587 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//588 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//589 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//590 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//591 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//592 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//593 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//594 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//595 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//596 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//597 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//598 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//599 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//600 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//601 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//602 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//603 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//604 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//605 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//606 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//607 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//608 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//609 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//610 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//611 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//612 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//613 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//614 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//615 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//616 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//617 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//618 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//619 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//620 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//621 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//622 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//623 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//624 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//625 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//626 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//627 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//628 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//629 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//630 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//631 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//632 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//633 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//634 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//635 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//636 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//637 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//638 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//639 +{amdgpu_cdna2_op_V_ADD_F64,"V_ADD_F64",0,&operandTable[0]} ,//640 +{amdgpu_cdna2_op_V_MUL_F64,"V_MUL_F64",0,&operandTable[0]} ,//641 +{amdgpu_cdna2_op_V_MIN_F64,"V_MIN_F64",0,&operandTable[0]} ,//642 +{amdgpu_cdna2_op_V_MAX_F64,"V_MAX_F64",0,&operandTable[0]} ,//643 +{amdgpu_cdna2_op_V_LDEXP_F64,"V_LDEXP_F64",0,&operandTable[0]} ,//644 +{amdgpu_cdna2_op_V_MUL_LO_U32,"V_MUL_LO_U32",0,&operandTable[0]} ,//645 +{amdgpu_cdna2_op_V_MUL_HI_U32,"V_MUL_HI_U32",0,&operandTable[0]} ,//646 +{amdgpu_cdna2_op_V_MUL_HI_I32,"V_MUL_HI_I32",0,&operandTable[0]} ,//647 +{amdgpu_cdna2_op_V_LDEXP_F32,"V_LDEXP_F32",0,&operandTable[0]} ,//648 +{amdgpu_cdna2_op_V_READLANE_B32,"V_READLANE_B32",0,&operandTable[0]} ,//649 +{amdgpu_cdna2_op_V_WRITELANE_B32,"V_WRITELANE_B32",0,&operandTable[0]} ,//650 +{amdgpu_cdna2_op_V_BCNT_U32_B32,"V_BCNT_U32_B32",0,&operandTable[0]} ,//651 +{amdgpu_cdna2_op_V_MBCNT_LO_U32_B32,"V_MBCNT_LO_U32_B32",0,&operandTable[0]} ,//652 +{amdgpu_cdna2_op_V_MBCNT_HI_U32_B32,"V_MBCNT_HI_U32_B32",0,&operandTable[0]} ,//653 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//654 +{amdgpu_cdna2_op_V_LSHLREV_B64,"V_LSHLREV_B64",0,&operandTable[0]} ,//655 +{amdgpu_cdna2_op_V_LSHRREV_B64,"V_LSHRREV_B64",0,&operandTable[0]} ,//656 +{amdgpu_cdna2_op_V_ASHRREV_I64,"V_ASHRREV_I64",0,&operandTable[0]} ,//657 +{amdgpu_cdna2_op_V_TRIG_PREOP_F64,"V_TRIG_PREOP_F64",0,&operandTable[0]} ,//658 +{amdgpu_cdna2_op_V_BFM_B32,"V_BFM_B32",0,&operandTable[0]} ,//659 +{amdgpu_cdna2_op_V_CVT_PKNORM_I16_F32,"V_CVT_PKNORM_I16_F32",0,&operandTable[0]} ,//660 +{amdgpu_cdna2_op_V_CVT_PKNORM_U16_F32,"V_CVT_PKNORM_U16_F32",0,&operandTable[0]} ,//661 +{amdgpu_cdna2_op_V_CVT_PKRTZ_F16_F32,"V_CVT_PKRTZ_F16_F32",0,&operandTable[0]} ,//662 +{amdgpu_cdna2_op_V_CVT_PK_U16_U32,"V_CVT_PK_U16_U32",0,&operandTable[0]} ,//663 +{amdgpu_cdna2_op_V_CVT_PK_I16_I32,"V_CVT_PK_I16_I32",0,&operandTable[0]} ,//664 +{amdgpu_cdna2_op_V_CVT_PKNORM_I16_F16,"V_CVT_PKNORM_I16_F16",0,&operandTable[0]} ,//665 +{amdgpu_cdna2_op_V_CVT_PKNORM_U16_F16,"V_CVT_PKNORM_U16_F16",0,&operandTable[0]} ,//666 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//667 +{amdgpu_cdna2_op_V_ADD_I32,"V_ADD_I32",0,&operandTable[0]} ,//668 +{amdgpu_cdna2_op_V_SUB_I32,"V_SUB_I32",0,&operandTable[0]} ,//669 +{amdgpu_cdna2_op_V_ADD_I16,"V_ADD_I16",0,&operandTable[0]} ,//670 +{amdgpu_cdna2_op_V_SUB_I16,"V_SUB_I16",0,&operandTable[0]} ,//671 +{amdgpu_cdna2_op_V_PACK_B32_F16,"V_PACK_B32_F16",0,&operandTable[0]} ,//672 +{amdgpu_cdna2_op_V_MUL_LEGACY_F32,"V_MUL_LEGACY_F32",0,&operandTable[0]} ,//673 +}; // end ENC_VOP3_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table = { +{amdgpu_cdna2_op_V_CNDMASK_B32,"V_CNDMASK_B32",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_V_ADD_F32,"V_ADD_F32",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_V_SUB_F32,"V_SUB_F32",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_V_SUBREV_F32,"V_SUBREV_F32",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_V_FMAC_F64,"V_FMAC_F64",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_V_MUL_F32,"V_MUL_F32",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_V_MUL_I32_I24,"V_MUL_I32_I24",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_V_MUL_HI_I32_I24,"V_MUL_HI_I32_I24",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_V_MUL_U32_U24,"V_MUL_U32_U24",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_V_MUL_HI_U32_U24,"V_MUL_HI_U32_U24",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_V_MIN_F32,"V_MIN_F32",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_V_MAX_F32,"V_MAX_F32",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_V_MIN_I32,"V_MIN_I32",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_V_MAX_I32,"V_MAX_I32",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_V_MIN_U32,"V_MIN_U32",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_V_MAX_U32,"V_MAX_U32",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_V_LSHRREV_B32,"V_LSHRREV_B32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_V_ASHRREV_I32,"V_ASHRREV_I32",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_V_LSHLREV_B32,"V_LSHLREV_B32",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_V_AND_B32,"V_AND_B32",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_V_OR_B32,"V_OR_B32",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_V_XOR_B32,"V_XOR_B32",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_V_MAC_F32,"V_MAC_F32",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_V_ADD_CO_U32,"V_ADD_CO_U32",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_V_SUB_CO_U32,"V_SUB_CO_U32",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_V_SUBREV_CO_U32,"V_SUBREV_CO_U32",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_V_ADDC_CO_U32,"V_ADDC_CO_U32",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_V_SUBB_CO_U32,"V_SUBB_CO_U32",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_V_SUBBREV_CO_U32,"V_SUBBREV_CO_U32",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_V_ADD_F16,"V_ADD_F16",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_V_SUB_F16,"V_SUB_F16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_V_SUBREV_F16,"V_SUBREV_F16",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_V_MUL_F16,"V_MUL_F16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_V_MAC_F16,"V_MAC_F16",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_V_ADD_U16,"V_ADD_U16",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_V_SUB_U16,"V_SUB_U16",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_V_SUBREV_U16,"V_SUBREV_U16",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_V_MUL_LO_U16,"V_MUL_LO_U16",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_V_LSHLREV_B16,"V_LSHLREV_B16",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_V_LSHRREV_B16,"V_LSHRREV_B16",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_V_ASHRREV_I16,"V_ASHRREV_I16",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_V_MAX_F16,"V_MAX_F16",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_V_MIN_F16,"V_MIN_F16",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_V_MAX_U16,"V_MAX_U16",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_V_MAX_I16,"V_MAX_I16",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_V_MIN_U16,"V_MIN_U16",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_V_MIN_I16,"V_MIN_I16",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_V_LDEXP_F16,"V_LDEXP_F16",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_V_ADD_U32,"V_ADD_U32",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_V_SUB_U32,"V_SUB_U32",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_V_SUBREV_U32,"V_SUBREV_U32",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_V_DOT2C_F32_F16,"V_DOT2C_F32_F16",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_V_DOT2C_I32_I16,"V_DOT2C_I32_I16",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_V_DOT4C_I32_I8,"V_DOT4C_I32_I8",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_V_DOT8C_I32_I4,"V_DOT8C_I32_I4",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_V_FMAC_F32,"V_FMAC_F32",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_V_PK_FMAC_F16,"V_PK_FMAC_F16",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_V_XNOR_B32,"V_XNOR_B32",0,&operandTable[0]} ,//61 +}; // end ENC_VOP2_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_V_MADMK_F32,"V_MADMK_F32",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_V_MADAK_F32,"V_MADAK_F32",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_V_MADMK_F16,"V_MADMK_F16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_V_MADAK_F16,"V_MADAK_F16",0,&operandTable[0]} ,//37 +}; // end ENC_VOP2_LITERAL_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//108 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//109 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//110 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//111 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//112 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//113 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//114 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//115 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//116 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//117 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//118 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//119 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//120 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//121 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//122 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//123 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//124 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//125 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//126 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//127 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//160 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//161 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//162 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//163 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//164 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//165 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//166 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//167 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//168 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//169 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//170 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//171 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//172 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//173 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//174 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//175 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//176 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//177 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//178 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//179 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//180 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//181 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//182 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//183 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//184 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//185 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//186 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//187 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//188 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//189 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//190 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//191 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//192 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//193 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//194 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//195 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//196 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//197 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//198 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//199 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//200 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//201 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//202 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//203 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//204 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//205 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//206 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//207 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//208 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//209 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//210 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//211 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//212 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//213 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//214 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//215 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//216 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//217 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//218 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//219 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//220 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//221 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//222 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//223 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//224 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//225 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//226 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//227 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//228 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//229 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//230 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//231 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//232 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//233 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//234 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//235 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//236 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//237 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//238 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//239 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//240 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//241 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//242 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//243 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//244 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//245 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//246 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//247 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//248 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//249 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//250 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//251 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//252 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//253 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//254 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//255 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//256 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//257 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//258 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//259 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//260 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//261 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//262 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//263 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//264 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//265 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//266 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//267 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//268 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//269 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//270 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//271 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//272 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//273 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//274 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//275 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//276 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//277 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//278 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//279 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//280 +{amdgpu_cdna2_op_V_ADD_CO_U32,"V_ADD_CO_U32",0,&operandTable[0]} ,//281 +{amdgpu_cdna2_op_V_SUB_CO_U32,"V_SUB_CO_U32",0,&operandTable[0]} ,//282 +{amdgpu_cdna2_op_V_SUBREV_CO_U32,"V_SUBREV_CO_U32",0,&operandTable[0]} ,//283 +{amdgpu_cdna2_op_V_ADDC_CO_U32,"V_ADDC_CO_U32",0,&operandTable[0]} ,//284 +{amdgpu_cdna2_op_V_SUBB_CO_U32,"V_SUBB_CO_U32",0,&operandTable[0]} ,//285 +{amdgpu_cdna2_op_V_SUBBREV_CO_U32,"V_SUBBREV_CO_U32",0,&operandTable[0]} ,//286 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//287 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//288 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//289 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//290 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//291 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//292 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//293 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//294 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//295 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//296 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//297 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//298 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//299 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//300 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//301 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//302 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//303 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//304 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//305 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//306 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//307 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//308 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//309 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//310 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//311 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//312 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//313 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//314 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//315 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//316 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//317 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//318 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//319 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//320 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//321 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//322 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//323 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//324 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//325 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//326 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//327 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//328 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//329 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//330 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//331 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//332 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//333 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//334 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//335 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//336 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//337 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//338 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//339 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//340 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//341 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//342 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//343 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//344 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//345 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//346 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//347 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//348 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//349 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//350 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//351 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//352 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//353 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//354 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//355 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//356 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//357 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//358 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//359 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//360 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//361 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//362 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//363 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//364 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//365 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//366 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//367 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//368 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//369 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//370 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//371 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//372 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//373 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//374 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//375 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//376 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//377 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//378 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//379 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//380 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//381 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//382 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//383 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//384 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//385 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//386 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//387 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//388 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//389 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//390 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//391 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//392 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//393 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//394 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//395 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//396 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//397 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//398 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//399 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//400 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//401 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//402 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//403 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//404 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//405 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//406 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//407 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//408 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//409 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//410 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//411 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//412 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//413 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//414 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//415 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//416 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//417 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//418 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//419 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//420 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//421 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//422 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//423 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//424 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//425 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//426 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//427 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//428 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//429 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//430 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//431 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//432 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//433 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//434 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//435 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//436 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//437 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//438 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//439 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//440 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//441 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//442 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//443 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//444 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//445 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//446 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//447 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//448 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//449 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//450 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//451 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//452 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//453 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//454 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//455 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//456 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//457 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//458 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//459 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//460 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//461 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//462 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//463 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//464 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//465 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//466 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//467 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//468 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//469 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//470 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//471 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//472 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//473 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//474 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//475 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//476 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//477 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//478 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//479 +{amdgpu_cdna2_op_V_DIV_SCALE_F32,"V_DIV_SCALE_F32",0,&operandTable[0]} ,//480 +{amdgpu_cdna2_op_V_DIV_SCALE_F64,"V_DIV_SCALE_F64",0,&operandTable[0]} ,//481 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//482 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//483 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//484 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//485 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//486 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//487 +{amdgpu_cdna2_op_V_MAD_U64_U32,"V_MAD_U64_U32",0,&operandTable[0]} ,//488 +{amdgpu_cdna2_op_V_MAD_I64_I32,"V_MAD_I64_I32",0,&operandTable[0]} ,//489 +}; // end ENC_VOP3B_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table = { +{amdgpu_cdna2_op_V_PK_MAD_I16,"V_PK_MAD_I16",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_V_PK_MUL_LO_U16,"V_PK_MUL_LO_U16",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_V_PK_ADD_I16,"V_PK_ADD_I16",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_V_PK_SUB_I16,"V_PK_SUB_I16",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_V_PK_LSHLREV_B16,"V_PK_LSHLREV_B16",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_V_PK_LSHRREV_B16,"V_PK_LSHRREV_B16",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_V_PK_ASHRREV_I16,"V_PK_ASHRREV_I16",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_V_PK_MAX_I16,"V_PK_MAX_I16",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_V_PK_MIN_I16,"V_PK_MIN_I16",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_V_PK_MAD_U16,"V_PK_MAD_U16",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_V_PK_ADD_U16,"V_PK_ADD_U16",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_V_PK_SUB_U16,"V_PK_SUB_U16",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_V_PK_MAX_U16,"V_PK_MAX_U16",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_V_PK_MIN_U16,"V_PK_MIN_U16",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_V_PK_FMA_F16,"V_PK_FMA_F16",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_V_PK_ADD_F16,"V_PK_ADD_F16",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_V_PK_MUL_F16,"V_PK_MUL_F16",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_V_PK_MIN_F16,"V_PK_MIN_F16",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_V_PK_MAX_F16,"V_PK_MAX_F16",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_V_MAD_MIX_F32,"V_MAD_MIX_F32",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_V_MAD_MIXLO_F16,"V_MAD_MIXLO_F16",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_V_MAD_MIXHI_F16,"V_MAD_MIXHI_F16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_V_DOT2_F32_F16,"V_DOT2_F32_F16",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_V_DOT2_I32_I16,"V_DOT2_I32_I16",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_V_DOT2_U32_U16,"V_DOT2_U32_U16",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_V_DOT4_I32_I8,"V_DOT4_I32_I8",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_V_DOT4_U32_U8,"V_DOT4_U32_U8",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_V_DOT8_I32_I4,"V_DOT8_I32_I4",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_V_DOT8_U32_U4,"V_DOT8_U32_U4",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_V_PK_FMA_F32,"V_PK_FMA_F32",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_V_PK_MUL_F32,"V_PK_MUL_F32",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_V_PK_ADD_F32,"V_PK_ADD_F32",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_V_PK_MOV_B32,"V_PK_MOV_B32",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_V_ACCVGPR_READ,"V_ACCVGPR_READ",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_V_ACCVGPR_WRITE,"V_ACCVGPR_WRITE",0,&operandTable[0]} ,//89 +}; // end ENC_VOP3P_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X1F32,"V_MFMA_F32_32X32X1F32",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X1F32,"V_MFMA_F32_16X16X1F32",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_V_MFMA_F32_4X4X1F32,"V_MFMA_F32_4X4X1F32",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X2F32,"V_MFMA_F32_32X32X2F32",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X4F32,"V_MFMA_F32_16X16X4F32",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X4F16,"V_MFMA_F32_32X32X4F16",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X4F16,"V_MFMA_F32_16X16X4F16",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_V_MFMA_F32_4X4X4F16,"V_MFMA_F32_4X4X4F16",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X8F16,"V_MFMA_F32_32X32X8F16",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X16F16,"V_MFMA_F32_16X16X16F16",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_V_MFMA_I32_32X32X4I8,"V_MFMA_I32_32X32X4I8",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_V_MFMA_I32_16X16X4I8,"V_MFMA_I32_16X16X4I8",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_V_MFMA_I32_4X4X4I8,"V_MFMA_I32_4X4X4I8",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_V_MFMA_I32_32X32X8I8,"V_MFMA_I32_32X32X8I8",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_V_MFMA_I32_16X16X16I8,"V_MFMA_I32_16X16X16I8",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16_1K,"V_MFMA_F32_32X32X4BF16_1K",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X4BF16_1K,"V_MFMA_F32_16X16X4BF16_1K",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_V_MFMA_F32_4X4X4BF16_1K,"V_MFMA_F32_4X4X4BF16_1K",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X8BF16_1K,"V_MFMA_F32_32X32X8BF16_1K",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X16BF16_1K,"V_MFMA_F32_16X16X16BF16_1K",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X2BF16,"V_MFMA_F32_32X32X2BF16",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X2BF16,"V_MFMA_F32_16X16X2BF16",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_V_MFMA_F32_4X4X2BF16,"V_MFMA_F32_4X4X2BF16",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16,"V_MFMA_F32_32X32X4BF16",0,&operandTable[0]} ,//108 +{amdgpu_cdna2_op_V_MFMA_F32_16X16X8BF16,"V_MFMA_F32_16X16X8BF16",0,&operandTable[0]} ,//109 +{amdgpu_cdna2_op_V_MFMA_F64_16X16X4F64,"V_MFMA_F64_16X16X4F64",0,&operandTable[0]} ,//110 +{amdgpu_cdna2_op_V_MFMA_F64_4X4X4F64,"V_MFMA_F64_4X4X4F64",0,&operandTable[0]} ,//111 +}; // end ENC_VOP3P_MFMA_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_cdna2_op_V_CMP_CLASS_F32,"V_CMP_CLASS_F32",0,&operandTable[0]} ,//16 +{amdgpu_cdna2_op_V_CMPX_CLASS_F32,"V_CMPX_CLASS_F32",0,&operandTable[0]} ,//17 +{amdgpu_cdna2_op_V_CMP_CLASS_F64,"V_CMP_CLASS_F64",0,&operandTable[0]} ,//18 +{amdgpu_cdna2_op_V_CMPX_CLASS_F64,"V_CMPX_CLASS_F64",0,&operandTable[0]} ,//19 +{amdgpu_cdna2_op_V_CMP_CLASS_F16,"V_CMP_CLASS_F16",0,&operandTable[0]} ,//20 +{amdgpu_cdna2_op_V_CMPX_CLASS_F16,"V_CMPX_CLASS_F16",0,&operandTable[0]} ,//21 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_cdna2_op_V_CMP_F_F16,"V_CMP_F_F16",0,&operandTable[0]} ,//32 +{amdgpu_cdna2_op_V_CMP_LT_F16,"V_CMP_LT_F16",0,&operandTable[0]} ,//33 +{amdgpu_cdna2_op_V_CMP_EQ_F16,"V_CMP_EQ_F16",0,&operandTable[0]} ,//34 +{amdgpu_cdna2_op_V_CMP_LE_F16,"V_CMP_LE_F16",0,&operandTable[0]} ,//35 +{amdgpu_cdna2_op_V_CMP_GT_F16,"V_CMP_GT_F16",0,&operandTable[0]} ,//36 +{amdgpu_cdna2_op_V_CMP_LG_F16,"V_CMP_LG_F16",0,&operandTable[0]} ,//37 +{amdgpu_cdna2_op_V_CMP_GE_F16,"V_CMP_GE_F16",0,&operandTable[0]} ,//38 +{amdgpu_cdna2_op_V_CMP_O_F16,"V_CMP_O_F16",0,&operandTable[0]} ,//39 +{amdgpu_cdna2_op_V_CMP_U_F16,"V_CMP_U_F16",0,&operandTable[0]} ,//40 +{amdgpu_cdna2_op_V_CMP_NGE_F16,"V_CMP_NGE_F16",0,&operandTable[0]} ,//41 +{amdgpu_cdna2_op_V_CMP_NLG_F16,"V_CMP_NLG_F16",0,&operandTable[0]} ,//42 +{amdgpu_cdna2_op_V_CMP_NGT_F16,"V_CMP_NGT_F16",0,&operandTable[0]} ,//43 +{amdgpu_cdna2_op_V_CMP_NLE_F16,"V_CMP_NLE_F16",0,&operandTable[0]} ,//44 +{amdgpu_cdna2_op_V_CMP_NEQ_F16,"V_CMP_NEQ_F16",0,&operandTable[0]} ,//45 +{amdgpu_cdna2_op_V_CMP_NLT_F16,"V_CMP_NLT_F16",0,&operandTable[0]} ,//46 +{amdgpu_cdna2_op_V_CMP_TRU_F16,"V_CMP_TRU_F16",0,&operandTable[0]} ,//47 +{amdgpu_cdna2_op_V_CMPX_F_F16,"V_CMPX_F_F16",0,&operandTable[0]} ,//48 +{amdgpu_cdna2_op_V_CMPX_LT_F16,"V_CMPX_LT_F16",0,&operandTable[0]} ,//49 +{amdgpu_cdna2_op_V_CMPX_EQ_F16,"V_CMPX_EQ_F16",0,&operandTable[0]} ,//50 +{amdgpu_cdna2_op_V_CMPX_LE_F16,"V_CMPX_LE_F16",0,&operandTable[0]} ,//51 +{amdgpu_cdna2_op_V_CMPX_GT_F16,"V_CMPX_GT_F16",0,&operandTable[0]} ,//52 +{amdgpu_cdna2_op_V_CMPX_LG_F16,"V_CMPX_LG_F16",0,&operandTable[0]} ,//53 +{amdgpu_cdna2_op_V_CMPX_GE_F16,"V_CMPX_GE_F16",0,&operandTable[0]} ,//54 +{amdgpu_cdna2_op_V_CMPX_O_F16,"V_CMPX_O_F16",0,&operandTable[0]} ,//55 +{amdgpu_cdna2_op_V_CMPX_U_F16,"V_CMPX_U_F16",0,&operandTable[0]} ,//56 +{amdgpu_cdna2_op_V_CMPX_NGE_F16,"V_CMPX_NGE_F16",0,&operandTable[0]} ,//57 +{amdgpu_cdna2_op_V_CMPX_NLG_F16,"V_CMPX_NLG_F16",0,&operandTable[0]} ,//58 +{amdgpu_cdna2_op_V_CMPX_NGT_F16,"V_CMPX_NGT_F16",0,&operandTable[0]} ,//59 +{amdgpu_cdna2_op_V_CMPX_NLE_F16,"V_CMPX_NLE_F16",0,&operandTable[0]} ,//60 +{amdgpu_cdna2_op_V_CMPX_NEQ_F16,"V_CMPX_NEQ_F16",0,&operandTable[0]} ,//61 +{amdgpu_cdna2_op_V_CMPX_NLT_F16,"V_CMPX_NLT_F16",0,&operandTable[0]} ,//62 +{amdgpu_cdna2_op_V_CMPX_TRU_F16,"V_CMPX_TRU_F16",0,&operandTable[0]} ,//63 +{amdgpu_cdna2_op_V_CMP_F_F32,"V_CMP_F_F32",0,&operandTable[0]} ,//64 +{amdgpu_cdna2_op_V_CMP_LT_F32,"V_CMP_LT_F32",0,&operandTable[0]} ,//65 +{amdgpu_cdna2_op_V_CMP_EQ_F32,"V_CMP_EQ_F32",0,&operandTable[0]} ,//66 +{amdgpu_cdna2_op_V_CMP_LE_F32,"V_CMP_LE_F32",0,&operandTable[0]} ,//67 +{amdgpu_cdna2_op_V_CMP_GT_F32,"V_CMP_GT_F32",0,&operandTable[0]} ,//68 +{amdgpu_cdna2_op_V_CMP_LG_F32,"V_CMP_LG_F32",0,&operandTable[0]} ,//69 +{amdgpu_cdna2_op_V_CMP_GE_F32,"V_CMP_GE_F32",0,&operandTable[0]} ,//70 +{amdgpu_cdna2_op_V_CMP_O_F32,"V_CMP_O_F32",0,&operandTable[0]} ,//71 +{amdgpu_cdna2_op_V_CMP_U_F32,"V_CMP_U_F32",0,&operandTable[0]} ,//72 +{amdgpu_cdna2_op_V_CMP_NGE_F32,"V_CMP_NGE_F32",0,&operandTable[0]} ,//73 +{amdgpu_cdna2_op_V_CMP_NLG_F32,"V_CMP_NLG_F32",0,&operandTable[0]} ,//74 +{amdgpu_cdna2_op_V_CMP_NGT_F32,"V_CMP_NGT_F32",0,&operandTable[0]} ,//75 +{amdgpu_cdna2_op_V_CMP_NLE_F32,"V_CMP_NLE_F32",0,&operandTable[0]} ,//76 +{amdgpu_cdna2_op_V_CMP_NEQ_F32,"V_CMP_NEQ_F32",0,&operandTable[0]} ,//77 +{amdgpu_cdna2_op_V_CMP_NLT_F32,"V_CMP_NLT_F32",0,&operandTable[0]} ,//78 +{amdgpu_cdna2_op_V_CMP_TRU_F32,"V_CMP_TRU_F32",0,&operandTable[0]} ,//79 +{amdgpu_cdna2_op_V_CMPX_F_F32,"V_CMPX_F_F32",0,&operandTable[0]} ,//80 +{amdgpu_cdna2_op_V_CMPX_LT_F32,"V_CMPX_LT_F32",0,&operandTable[0]} ,//81 +{amdgpu_cdna2_op_V_CMPX_EQ_F32,"V_CMPX_EQ_F32",0,&operandTable[0]} ,//82 +{amdgpu_cdna2_op_V_CMPX_LE_F32,"V_CMPX_LE_F32",0,&operandTable[0]} ,//83 +{amdgpu_cdna2_op_V_CMPX_GT_F32,"V_CMPX_GT_F32",0,&operandTable[0]} ,//84 +{amdgpu_cdna2_op_V_CMPX_LG_F32,"V_CMPX_LG_F32",0,&operandTable[0]} ,//85 +{amdgpu_cdna2_op_V_CMPX_GE_F32,"V_CMPX_GE_F32",0,&operandTable[0]} ,//86 +{amdgpu_cdna2_op_V_CMPX_O_F32,"V_CMPX_O_F32",0,&operandTable[0]} ,//87 +{amdgpu_cdna2_op_V_CMPX_U_F32,"V_CMPX_U_F32",0,&operandTable[0]} ,//88 +{amdgpu_cdna2_op_V_CMPX_NGE_F32,"V_CMPX_NGE_F32",0,&operandTable[0]} ,//89 +{amdgpu_cdna2_op_V_CMPX_NLG_F32,"V_CMPX_NLG_F32",0,&operandTable[0]} ,//90 +{amdgpu_cdna2_op_V_CMPX_NGT_F32,"V_CMPX_NGT_F32",0,&operandTable[0]} ,//91 +{amdgpu_cdna2_op_V_CMPX_NLE_F32,"V_CMPX_NLE_F32",0,&operandTable[0]} ,//92 +{amdgpu_cdna2_op_V_CMPX_NEQ_F32,"V_CMPX_NEQ_F32",0,&operandTable[0]} ,//93 +{amdgpu_cdna2_op_V_CMPX_NLT_F32,"V_CMPX_NLT_F32",0,&operandTable[0]} ,//94 +{amdgpu_cdna2_op_V_CMPX_TRU_F32,"V_CMPX_TRU_F32",0,&operandTable[0]} ,//95 +{amdgpu_cdna2_op_V_CMP_F_F64,"V_CMP_F_F64",0,&operandTable[0]} ,//96 +{amdgpu_cdna2_op_V_CMP_LT_F64,"V_CMP_LT_F64",0,&operandTable[0]} ,//97 +{amdgpu_cdna2_op_V_CMP_EQ_F64,"V_CMP_EQ_F64",0,&operandTable[0]} ,//98 +{amdgpu_cdna2_op_V_CMP_LE_F64,"V_CMP_LE_F64",0,&operandTable[0]} ,//99 +{amdgpu_cdna2_op_V_CMP_GT_F64,"V_CMP_GT_F64",0,&operandTable[0]} ,//100 +{amdgpu_cdna2_op_V_CMP_LG_F64,"V_CMP_LG_F64",0,&operandTable[0]} ,//101 +{amdgpu_cdna2_op_V_CMP_GE_F64,"V_CMP_GE_F64",0,&operandTable[0]} ,//102 +{amdgpu_cdna2_op_V_CMP_O_F64,"V_CMP_O_F64",0,&operandTable[0]} ,//103 +{amdgpu_cdna2_op_V_CMP_U_F64,"V_CMP_U_F64",0,&operandTable[0]} ,//104 +{amdgpu_cdna2_op_V_CMP_NGE_F64,"V_CMP_NGE_F64",0,&operandTable[0]} ,//105 +{amdgpu_cdna2_op_V_CMP_NLG_F64,"V_CMP_NLG_F64",0,&operandTable[0]} ,//106 +{amdgpu_cdna2_op_V_CMP_NGT_F64,"V_CMP_NGT_F64",0,&operandTable[0]} ,//107 +{amdgpu_cdna2_op_V_CMP_NLE_F64,"V_CMP_NLE_F64",0,&operandTable[0]} ,//108 +{amdgpu_cdna2_op_V_CMP_NEQ_F64,"V_CMP_NEQ_F64",0,&operandTable[0]} ,//109 +{amdgpu_cdna2_op_V_CMP_NLT_F64,"V_CMP_NLT_F64",0,&operandTable[0]} ,//110 +{amdgpu_cdna2_op_V_CMP_TRU_F64,"V_CMP_TRU_F64",0,&operandTable[0]} ,//111 +{amdgpu_cdna2_op_V_CMPX_F_F64,"V_CMPX_F_F64",0,&operandTable[0]} ,//112 +{amdgpu_cdna2_op_V_CMPX_LT_F64,"V_CMPX_LT_F64",0,&operandTable[0]} ,//113 +{amdgpu_cdna2_op_V_CMPX_EQ_F64,"V_CMPX_EQ_F64",0,&operandTable[0]} ,//114 +{amdgpu_cdna2_op_V_CMPX_LE_F64,"V_CMPX_LE_F64",0,&operandTable[0]} ,//115 +{amdgpu_cdna2_op_V_CMPX_GT_F64,"V_CMPX_GT_F64",0,&operandTable[0]} ,//116 +{amdgpu_cdna2_op_V_CMPX_LG_F64,"V_CMPX_LG_F64",0,&operandTable[0]} ,//117 +{amdgpu_cdna2_op_V_CMPX_GE_F64,"V_CMPX_GE_F64",0,&operandTable[0]} ,//118 +{amdgpu_cdna2_op_V_CMPX_O_F64,"V_CMPX_O_F64",0,&operandTable[0]} ,//119 +{amdgpu_cdna2_op_V_CMPX_U_F64,"V_CMPX_U_F64",0,&operandTable[0]} ,//120 +{amdgpu_cdna2_op_V_CMPX_NGE_F64,"V_CMPX_NGE_F64",0,&operandTable[0]} ,//121 +{amdgpu_cdna2_op_V_CMPX_NLG_F64,"V_CMPX_NLG_F64",0,&operandTable[0]} ,//122 +{amdgpu_cdna2_op_V_CMPX_NGT_F64,"V_CMPX_NGT_F64",0,&operandTable[0]} ,//123 +{amdgpu_cdna2_op_V_CMPX_NLE_F64,"V_CMPX_NLE_F64",0,&operandTable[0]} ,//124 +{amdgpu_cdna2_op_V_CMPX_NEQ_F64,"V_CMPX_NEQ_F64",0,&operandTable[0]} ,//125 +{amdgpu_cdna2_op_V_CMPX_NLT_F64,"V_CMPX_NLT_F64",0,&operandTable[0]} ,//126 +{amdgpu_cdna2_op_V_CMPX_TRU_F64,"V_CMPX_TRU_F64",0,&operandTable[0]} ,//127 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_cdna2_op_V_CMP_F_I16,"V_CMP_F_I16",0,&operandTable[0]} ,//160 +{amdgpu_cdna2_op_V_CMP_LT_I16,"V_CMP_LT_I16",0,&operandTable[0]} ,//161 +{amdgpu_cdna2_op_V_CMP_EQ_I16,"V_CMP_EQ_I16",0,&operandTable[0]} ,//162 +{amdgpu_cdna2_op_V_CMP_LE_I16,"V_CMP_LE_I16",0,&operandTable[0]} ,//163 +{amdgpu_cdna2_op_V_CMP_GT_I16,"V_CMP_GT_I16",0,&operandTable[0]} ,//164 +{amdgpu_cdna2_op_V_CMP_NE_I16,"V_CMP_NE_I16",0,&operandTable[0]} ,//165 +{amdgpu_cdna2_op_V_CMP_GE_I16,"V_CMP_GE_I16",0,&operandTable[0]} ,//166 +{amdgpu_cdna2_op_V_CMP_T_I16,"V_CMP_T_I16",0,&operandTable[0]} ,//167 +{amdgpu_cdna2_op_V_CMP_F_U16,"V_CMP_F_U16",0,&operandTable[0]} ,//168 +{amdgpu_cdna2_op_V_CMP_LT_U16,"V_CMP_LT_U16",0,&operandTable[0]} ,//169 +{amdgpu_cdna2_op_V_CMP_EQ_U16,"V_CMP_EQ_U16",0,&operandTable[0]} ,//170 +{amdgpu_cdna2_op_V_CMP_LE_U16,"V_CMP_LE_U16",0,&operandTable[0]} ,//171 +{amdgpu_cdna2_op_V_CMP_GT_U16,"V_CMP_GT_U16",0,&operandTable[0]} ,//172 +{amdgpu_cdna2_op_V_CMP_NE_U16,"V_CMP_NE_U16",0,&operandTable[0]} ,//173 +{amdgpu_cdna2_op_V_CMP_GE_U16,"V_CMP_GE_U16",0,&operandTable[0]} ,//174 +{amdgpu_cdna2_op_V_CMP_T_U16,"V_CMP_T_U16",0,&operandTable[0]} ,//175 +{amdgpu_cdna2_op_V_CMPX_F_I16,"V_CMPX_F_I16",0,&operandTable[0]} ,//176 +{amdgpu_cdna2_op_V_CMPX_LT_I16,"V_CMPX_LT_I16",0,&operandTable[0]} ,//177 +{amdgpu_cdna2_op_V_CMPX_EQ_I16,"V_CMPX_EQ_I16",0,&operandTable[0]} ,//178 +{amdgpu_cdna2_op_V_CMPX_LE_I16,"V_CMPX_LE_I16",0,&operandTable[0]} ,//179 +{amdgpu_cdna2_op_V_CMPX_GT_I16,"V_CMPX_GT_I16",0,&operandTable[0]} ,//180 +{amdgpu_cdna2_op_V_CMPX_NE_I16,"V_CMPX_NE_I16",0,&operandTable[0]} ,//181 +{amdgpu_cdna2_op_V_CMPX_GE_I16,"V_CMPX_GE_I16",0,&operandTable[0]} ,//182 +{amdgpu_cdna2_op_V_CMPX_T_I16,"V_CMPX_T_I16",0,&operandTable[0]} ,//183 +{amdgpu_cdna2_op_V_CMPX_F_U16,"V_CMPX_F_U16",0,&operandTable[0]} ,//184 +{amdgpu_cdna2_op_V_CMPX_LT_U16,"V_CMPX_LT_U16",0,&operandTable[0]} ,//185 +{amdgpu_cdna2_op_V_CMPX_EQ_U16,"V_CMPX_EQ_U16",0,&operandTable[0]} ,//186 +{amdgpu_cdna2_op_V_CMPX_LE_U16,"V_CMPX_LE_U16",0,&operandTable[0]} ,//187 +{amdgpu_cdna2_op_V_CMPX_GT_U16,"V_CMPX_GT_U16",0,&operandTable[0]} ,//188 +{amdgpu_cdna2_op_V_CMPX_NE_U16,"V_CMPX_NE_U16",0,&operandTable[0]} ,//189 +{amdgpu_cdna2_op_V_CMPX_GE_U16,"V_CMPX_GE_U16",0,&operandTable[0]} ,//190 +{amdgpu_cdna2_op_V_CMPX_T_U16,"V_CMPX_T_U16",0,&operandTable[0]} ,//191 +{amdgpu_cdna2_op_V_CMP_F_I32,"V_CMP_F_I32",0,&operandTable[0]} ,//192 +{amdgpu_cdna2_op_V_CMP_LT_I32,"V_CMP_LT_I32",0,&operandTable[0]} ,//193 +{amdgpu_cdna2_op_V_CMP_EQ_I32,"V_CMP_EQ_I32",0,&operandTable[0]} ,//194 +{amdgpu_cdna2_op_V_CMP_LE_I32,"V_CMP_LE_I32",0,&operandTable[0]} ,//195 +{amdgpu_cdna2_op_V_CMP_GT_I32,"V_CMP_GT_I32",0,&operandTable[0]} ,//196 +{amdgpu_cdna2_op_V_CMP_NE_I32,"V_CMP_NE_I32",0,&operandTable[0]} ,//197 +{amdgpu_cdna2_op_V_CMP_GE_I32,"V_CMP_GE_I32",0,&operandTable[0]} ,//198 +{amdgpu_cdna2_op_V_CMP_T_I32,"V_CMP_T_I32",0,&operandTable[0]} ,//199 +{amdgpu_cdna2_op_V_CMP_F_U32,"V_CMP_F_U32",0,&operandTable[0]} ,//200 +{amdgpu_cdna2_op_V_CMP_LT_U32,"V_CMP_LT_U32",0,&operandTable[0]} ,//201 +{amdgpu_cdna2_op_V_CMP_EQ_U32,"V_CMP_EQ_U32",0,&operandTable[0]} ,//202 +{amdgpu_cdna2_op_V_CMP_LE_U32,"V_CMP_LE_U32",0,&operandTable[0]} ,//203 +{amdgpu_cdna2_op_V_CMP_GT_U32,"V_CMP_GT_U32",0,&operandTable[0]} ,//204 +{amdgpu_cdna2_op_V_CMP_NE_U32,"V_CMP_NE_U32",0,&operandTable[0]} ,//205 +{amdgpu_cdna2_op_V_CMP_GE_U32,"V_CMP_GE_U32",0,&operandTable[0]} ,//206 +{amdgpu_cdna2_op_V_CMP_T_U32,"V_CMP_T_U32",0,&operandTable[0]} ,//207 +{amdgpu_cdna2_op_V_CMPX_F_I32,"V_CMPX_F_I32",0,&operandTable[0]} ,//208 +{amdgpu_cdna2_op_V_CMPX_LT_I32,"V_CMPX_LT_I32",0,&operandTable[0]} ,//209 +{amdgpu_cdna2_op_V_CMPX_EQ_I32,"V_CMPX_EQ_I32",0,&operandTable[0]} ,//210 +{amdgpu_cdna2_op_V_CMPX_LE_I32,"V_CMPX_LE_I32",0,&operandTable[0]} ,//211 +{amdgpu_cdna2_op_V_CMPX_GT_I32,"V_CMPX_GT_I32",0,&operandTable[0]} ,//212 +{amdgpu_cdna2_op_V_CMPX_NE_I32,"V_CMPX_NE_I32",0,&operandTable[0]} ,//213 +{amdgpu_cdna2_op_V_CMPX_GE_I32,"V_CMPX_GE_I32",0,&operandTable[0]} ,//214 +{amdgpu_cdna2_op_V_CMPX_T_I32,"V_CMPX_T_I32",0,&operandTable[0]} ,//215 +{amdgpu_cdna2_op_V_CMPX_F_U32,"V_CMPX_F_U32",0,&operandTable[0]} ,//216 +{amdgpu_cdna2_op_V_CMPX_LT_U32,"V_CMPX_LT_U32",0,&operandTable[0]} ,//217 +{amdgpu_cdna2_op_V_CMPX_EQ_U32,"V_CMPX_EQ_U32",0,&operandTable[0]} ,//218 +{amdgpu_cdna2_op_V_CMPX_LE_U32,"V_CMPX_LE_U32",0,&operandTable[0]} ,//219 +{amdgpu_cdna2_op_V_CMPX_GT_U32,"V_CMPX_GT_U32",0,&operandTable[0]} ,//220 +{amdgpu_cdna2_op_V_CMPX_NE_U32,"V_CMPX_NE_U32",0,&operandTable[0]} ,//221 +{amdgpu_cdna2_op_V_CMPX_GE_U32,"V_CMPX_GE_U32",0,&operandTable[0]} ,//222 +{amdgpu_cdna2_op_V_CMPX_T_U32,"V_CMPX_T_U32",0,&operandTable[0]} ,//223 +{amdgpu_cdna2_op_V_CMP_F_I64,"V_CMP_F_I64",0,&operandTable[0]} ,//224 +{amdgpu_cdna2_op_V_CMP_LT_I64,"V_CMP_LT_I64",0,&operandTable[0]} ,//225 +{amdgpu_cdna2_op_V_CMP_EQ_I64,"V_CMP_EQ_I64",0,&operandTable[0]} ,//226 +{amdgpu_cdna2_op_V_CMP_LE_I64,"V_CMP_LE_I64",0,&operandTable[0]} ,//227 +{amdgpu_cdna2_op_V_CMP_GT_I64,"V_CMP_GT_I64",0,&operandTable[0]} ,//228 +{amdgpu_cdna2_op_V_CMP_NE_I64,"V_CMP_NE_I64",0,&operandTable[0]} ,//229 +{amdgpu_cdna2_op_V_CMP_GE_I64,"V_CMP_GE_I64",0,&operandTable[0]} ,//230 +{amdgpu_cdna2_op_V_CMP_T_I64,"V_CMP_T_I64",0,&operandTable[0]} ,//231 +{amdgpu_cdna2_op_V_CMP_F_U64,"V_CMP_F_U64",0,&operandTable[0]} ,//232 +{amdgpu_cdna2_op_V_CMP_LT_U64,"V_CMP_LT_U64",0,&operandTable[0]} ,//233 +{amdgpu_cdna2_op_V_CMP_EQ_U64,"V_CMP_EQ_U64",0,&operandTable[0]} ,//234 +{amdgpu_cdna2_op_V_CMP_LE_U64,"V_CMP_LE_U64",0,&operandTable[0]} ,//235 +{amdgpu_cdna2_op_V_CMP_GT_U64,"V_CMP_GT_U64",0,&operandTable[0]} ,//236 +{amdgpu_cdna2_op_V_CMP_NE_U64,"V_CMP_NE_U64",0,&operandTable[0]} ,//237 +{amdgpu_cdna2_op_V_CMP_GE_U64,"V_CMP_GE_U64",0,&operandTable[0]} ,//238 +{amdgpu_cdna2_op_V_CMP_T_U64,"V_CMP_T_U64",0,&operandTable[0]} ,//239 +{amdgpu_cdna2_op_V_CMPX_F_I64,"V_CMPX_F_I64",0,&operandTable[0]} ,//240 +{amdgpu_cdna2_op_V_CMPX_LT_I64,"V_CMPX_LT_I64",0,&operandTable[0]} ,//241 +{amdgpu_cdna2_op_V_CMPX_EQ_I64,"V_CMPX_EQ_I64",0,&operandTable[0]} ,//242 +{amdgpu_cdna2_op_V_CMPX_LE_I64,"V_CMPX_LE_I64",0,&operandTable[0]} ,//243 +{amdgpu_cdna2_op_V_CMPX_GT_I64,"V_CMPX_GT_I64",0,&operandTable[0]} ,//244 +{amdgpu_cdna2_op_V_CMPX_NE_I64,"V_CMPX_NE_I64",0,&operandTable[0]} ,//245 +{amdgpu_cdna2_op_V_CMPX_GE_I64,"V_CMPX_GE_I64",0,&operandTable[0]} ,//246 +{amdgpu_cdna2_op_V_CMPX_T_I64,"V_CMPX_T_I64",0,&operandTable[0]} ,//247 +{amdgpu_cdna2_op_V_CMPX_F_U64,"V_CMPX_F_U64",0,&operandTable[0]} ,//248 +{amdgpu_cdna2_op_V_CMPX_LT_U64,"V_CMPX_LT_U64",0,&operandTable[0]} ,//249 +{amdgpu_cdna2_op_V_CMPX_EQ_U64,"V_CMPX_EQ_U64",0,&operandTable[0]} ,//250 +{amdgpu_cdna2_op_V_CMPX_LE_U64,"V_CMPX_LE_U64",0,&operandTable[0]} ,//251 +{amdgpu_cdna2_op_V_CMPX_GT_U64,"V_CMPX_GT_U64",0,&operandTable[0]} ,//252 +{amdgpu_cdna2_op_V_CMPX_NE_U64,"V_CMPX_NE_U64",0,&operandTable[0]} ,//253 +{amdgpu_cdna2_op_V_CMPX_GE_U64,"V_CMPX_GE_U64",0,&operandTable[0]} ,//254 +{amdgpu_cdna2_op_V_CMPX_T_U64,"V_CMPX_T_U64",0,&operandTable[0]} ,//255 +}; // end ENC_VOPC_insn_table +const amdgpu_cdna2_insn_table amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table = { +{amdgpu_cdna2_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +}; // end ENC_VINTRP_insn_table diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h new file mode 100644 index 0000000000..8515f8630b --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h @@ -0,0 +1,617 @@ +#ifndef DYNINST_AMDGPU_CDNA2_SYS_REGS_H +#define DYNINST_AMDGPU_CDNA2_SYS_REGS_H +DEF_REGISTER(s0, Arch_amdgpu_cdna2| SGPR | BITS_32 | 0 , "amdgpu_cdna2"); +DEF_REGISTER(s1, Arch_amdgpu_cdna2| SGPR | BITS_32 | 1 , "amdgpu_cdna2"); +DEF_REGISTER(s2, Arch_amdgpu_cdna2| SGPR | BITS_32 | 2 , "amdgpu_cdna2"); +DEF_REGISTER(s3, Arch_amdgpu_cdna2| SGPR | BITS_32 | 3 , "amdgpu_cdna2"); +DEF_REGISTER(s4, Arch_amdgpu_cdna2| SGPR | BITS_32 | 4 , "amdgpu_cdna2"); +DEF_REGISTER(s5, Arch_amdgpu_cdna2| SGPR | BITS_32 | 5 , "amdgpu_cdna2"); +DEF_REGISTER(s6, Arch_amdgpu_cdna2| SGPR | BITS_32 | 6 , "amdgpu_cdna2"); +DEF_REGISTER(s7, Arch_amdgpu_cdna2| SGPR | BITS_32 | 7 , "amdgpu_cdna2"); +DEF_REGISTER(s8, Arch_amdgpu_cdna2| SGPR | BITS_32 | 8 , "amdgpu_cdna2"); +DEF_REGISTER(s9, Arch_amdgpu_cdna2| SGPR | BITS_32 | 9 , "amdgpu_cdna2"); +DEF_REGISTER(s10, Arch_amdgpu_cdna2| SGPR | BITS_32 | 10 , "amdgpu_cdna2"); +DEF_REGISTER(s11, Arch_amdgpu_cdna2| SGPR | BITS_32 | 11 , "amdgpu_cdna2"); +DEF_REGISTER(s12, Arch_amdgpu_cdna2| SGPR | BITS_32 | 12 , "amdgpu_cdna2"); +DEF_REGISTER(s13, Arch_amdgpu_cdna2| SGPR | BITS_32 | 13 , "amdgpu_cdna2"); +DEF_REGISTER(s14, Arch_amdgpu_cdna2| SGPR | BITS_32 | 14 , "amdgpu_cdna2"); +DEF_REGISTER(s15, Arch_amdgpu_cdna2| SGPR | BITS_32 | 15 , "amdgpu_cdna2"); +DEF_REGISTER(s16, Arch_amdgpu_cdna2| SGPR | BITS_32 | 16 , "amdgpu_cdna2"); +DEF_REGISTER(s17, Arch_amdgpu_cdna2| SGPR | BITS_32 | 17 , "amdgpu_cdna2"); +DEF_REGISTER(s18, Arch_amdgpu_cdna2| SGPR | BITS_32 | 18 , "amdgpu_cdna2"); +DEF_REGISTER(s19, Arch_amdgpu_cdna2| SGPR | BITS_32 | 19 , "amdgpu_cdna2"); +DEF_REGISTER(s20, Arch_amdgpu_cdna2| SGPR | BITS_32 | 20 , "amdgpu_cdna2"); +DEF_REGISTER(s21, Arch_amdgpu_cdna2| SGPR | BITS_32 | 21 , "amdgpu_cdna2"); +DEF_REGISTER(s22, Arch_amdgpu_cdna2| SGPR | BITS_32 | 22 , "amdgpu_cdna2"); +DEF_REGISTER(s23, Arch_amdgpu_cdna2| SGPR | BITS_32 | 23 , "amdgpu_cdna2"); +DEF_REGISTER(s24, Arch_amdgpu_cdna2| SGPR | BITS_32 | 24 , "amdgpu_cdna2"); +DEF_REGISTER(s25, Arch_amdgpu_cdna2| SGPR | BITS_32 | 25 , "amdgpu_cdna2"); +DEF_REGISTER(s26, Arch_amdgpu_cdna2| SGPR | BITS_32 | 26 , "amdgpu_cdna2"); +DEF_REGISTER(s27, Arch_amdgpu_cdna2| SGPR | BITS_32 | 27 , "amdgpu_cdna2"); +DEF_REGISTER(s28, Arch_amdgpu_cdna2| SGPR | BITS_32 | 28 , "amdgpu_cdna2"); +DEF_REGISTER(s29, Arch_amdgpu_cdna2| SGPR | BITS_32 | 29 , "amdgpu_cdna2"); +DEF_REGISTER(s30, Arch_amdgpu_cdna2| SGPR | BITS_32 | 30 , "amdgpu_cdna2"); +DEF_REGISTER(s31, Arch_amdgpu_cdna2| SGPR | BITS_32 | 31 , "amdgpu_cdna2"); +DEF_REGISTER(s32, Arch_amdgpu_cdna2| SGPR | BITS_32 | 32 , "amdgpu_cdna2"); +DEF_REGISTER(s33, Arch_amdgpu_cdna2| SGPR | BITS_32 | 33 , "amdgpu_cdna2"); +DEF_REGISTER(s34, Arch_amdgpu_cdna2| SGPR | BITS_32 | 34 , "amdgpu_cdna2"); +DEF_REGISTER(s35, Arch_amdgpu_cdna2| SGPR | BITS_32 | 35 , "amdgpu_cdna2"); +DEF_REGISTER(s36, Arch_amdgpu_cdna2| SGPR | BITS_32 | 36 , "amdgpu_cdna2"); +DEF_REGISTER(s37, Arch_amdgpu_cdna2| SGPR | BITS_32 | 37 , "amdgpu_cdna2"); +DEF_REGISTER(s38, Arch_amdgpu_cdna2| SGPR | BITS_32 | 38 , "amdgpu_cdna2"); +DEF_REGISTER(s39, Arch_amdgpu_cdna2| SGPR | BITS_32 | 39 , "amdgpu_cdna2"); +DEF_REGISTER(s40, Arch_amdgpu_cdna2| SGPR | BITS_32 | 40 , "amdgpu_cdna2"); +DEF_REGISTER(s41, Arch_amdgpu_cdna2| SGPR | BITS_32 | 41 , "amdgpu_cdna2"); +DEF_REGISTER(s42, Arch_amdgpu_cdna2| SGPR | BITS_32 | 42 , "amdgpu_cdna2"); +DEF_REGISTER(s43, Arch_amdgpu_cdna2| SGPR | BITS_32 | 43 , "amdgpu_cdna2"); +DEF_REGISTER(s44, Arch_amdgpu_cdna2| SGPR | BITS_32 | 44 , "amdgpu_cdna2"); +DEF_REGISTER(s45, Arch_amdgpu_cdna2| SGPR | BITS_32 | 45 , "amdgpu_cdna2"); +DEF_REGISTER(s46, Arch_amdgpu_cdna2| SGPR | BITS_32 | 46 , "amdgpu_cdna2"); +DEF_REGISTER(s47, Arch_amdgpu_cdna2| SGPR | BITS_32 | 47 , "amdgpu_cdna2"); +DEF_REGISTER(s48, Arch_amdgpu_cdna2| SGPR | BITS_32 | 48 , "amdgpu_cdna2"); +DEF_REGISTER(s49, Arch_amdgpu_cdna2| SGPR | BITS_32 | 49 , "amdgpu_cdna2"); +DEF_REGISTER(s50, Arch_amdgpu_cdna2| SGPR | BITS_32 | 50 , "amdgpu_cdna2"); +DEF_REGISTER(s51, Arch_amdgpu_cdna2| SGPR | BITS_32 | 51 , "amdgpu_cdna2"); +DEF_REGISTER(s52, Arch_amdgpu_cdna2| SGPR | BITS_32 | 52 , "amdgpu_cdna2"); +DEF_REGISTER(s53, Arch_amdgpu_cdna2| SGPR | BITS_32 | 53 , "amdgpu_cdna2"); +DEF_REGISTER(s54, Arch_amdgpu_cdna2| SGPR | BITS_32 | 54 , "amdgpu_cdna2"); +DEF_REGISTER(s55, Arch_amdgpu_cdna2| SGPR | BITS_32 | 55 , "amdgpu_cdna2"); +DEF_REGISTER(s56, Arch_amdgpu_cdna2| SGPR | BITS_32 | 56 , "amdgpu_cdna2"); +DEF_REGISTER(s57, Arch_amdgpu_cdna2| SGPR | BITS_32 | 57 , "amdgpu_cdna2"); +DEF_REGISTER(s58, Arch_amdgpu_cdna2| SGPR | BITS_32 | 58 , "amdgpu_cdna2"); +DEF_REGISTER(s59, Arch_amdgpu_cdna2| SGPR | BITS_32 | 59 , "amdgpu_cdna2"); +DEF_REGISTER(s60, Arch_amdgpu_cdna2| SGPR | BITS_32 | 60 , "amdgpu_cdna2"); +DEF_REGISTER(s61, Arch_amdgpu_cdna2| SGPR | BITS_32 | 61 , "amdgpu_cdna2"); +DEF_REGISTER(s62, Arch_amdgpu_cdna2| SGPR | BITS_32 | 62 , "amdgpu_cdna2"); +DEF_REGISTER(s63, Arch_amdgpu_cdna2| SGPR | BITS_32 | 63 , "amdgpu_cdna2"); +DEF_REGISTER(s64, Arch_amdgpu_cdna2| SGPR | BITS_32 | 64 , "amdgpu_cdna2"); +DEF_REGISTER(s65, Arch_amdgpu_cdna2| SGPR | BITS_32 | 65 , "amdgpu_cdna2"); +DEF_REGISTER(s66, Arch_amdgpu_cdna2| SGPR | BITS_32 | 66 , "amdgpu_cdna2"); +DEF_REGISTER(s67, Arch_amdgpu_cdna2| SGPR | BITS_32 | 67 , "amdgpu_cdna2"); +DEF_REGISTER(s68, Arch_amdgpu_cdna2| SGPR | BITS_32 | 68 , "amdgpu_cdna2"); +DEF_REGISTER(s69, Arch_amdgpu_cdna2| SGPR | BITS_32 | 69 , "amdgpu_cdna2"); +DEF_REGISTER(s70, Arch_amdgpu_cdna2| SGPR | BITS_32 | 70 , "amdgpu_cdna2"); +DEF_REGISTER(s71, Arch_amdgpu_cdna2| SGPR | BITS_32 | 71 , "amdgpu_cdna2"); +DEF_REGISTER(s72, Arch_amdgpu_cdna2| SGPR | BITS_32 | 72 , "amdgpu_cdna2"); +DEF_REGISTER(s73, Arch_amdgpu_cdna2| SGPR | BITS_32 | 73 , "amdgpu_cdna2"); +DEF_REGISTER(s74, Arch_amdgpu_cdna2| SGPR | BITS_32 | 74 , "amdgpu_cdna2"); +DEF_REGISTER(s75, Arch_amdgpu_cdna2| SGPR | BITS_32 | 75 , "amdgpu_cdna2"); +DEF_REGISTER(s76, Arch_amdgpu_cdna2| SGPR | BITS_32 | 76 , "amdgpu_cdna2"); +DEF_REGISTER(s77, Arch_amdgpu_cdna2| SGPR | BITS_32 | 77 , "amdgpu_cdna2"); +DEF_REGISTER(s78, Arch_amdgpu_cdna2| SGPR | BITS_32 | 78 , "amdgpu_cdna2"); +DEF_REGISTER(s79, Arch_amdgpu_cdna2| SGPR | BITS_32 | 79 , "amdgpu_cdna2"); +DEF_REGISTER(s80, Arch_amdgpu_cdna2| SGPR | BITS_32 | 80 , "amdgpu_cdna2"); +DEF_REGISTER(s81, Arch_amdgpu_cdna2| SGPR | BITS_32 | 81 , "amdgpu_cdna2"); +DEF_REGISTER(s82, Arch_amdgpu_cdna2| SGPR | BITS_32 | 82 , "amdgpu_cdna2"); +DEF_REGISTER(s83, Arch_amdgpu_cdna2| SGPR | BITS_32 | 83 , "amdgpu_cdna2"); +DEF_REGISTER(s84, Arch_amdgpu_cdna2| SGPR | BITS_32 | 84 , "amdgpu_cdna2"); +DEF_REGISTER(s85, Arch_amdgpu_cdna2| SGPR | BITS_32 | 85 , "amdgpu_cdna2"); +DEF_REGISTER(s86, Arch_amdgpu_cdna2| SGPR | BITS_32 | 86 , "amdgpu_cdna2"); +DEF_REGISTER(s87, Arch_amdgpu_cdna2| SGPR | BITS_32 | 87 , "amdgpu_cdna2"); +DEF_REGISTER(s88, Arch_amdgpu_cdna2| SGPR | BITS_32 | 88 , "amdgpu_cdna2"); +DEF_REGISTER(s89, Arch_amdgpu_cdna2| SGPR | BITS_32 | 89 , "amdgpu_cdna2"); +DEF_REGISTER(s90, Arch_amdgpu_cdna2| SGPR | BITS_32 | 90 , "amdgpu_cdna2"); +DEF_REGISTER(s91, Arch_amdgpu_cdna2| SGPR | BITS_32 | 91 , "amdgpu_cdna2"); +DEF_REGISTER(s92, Arch_amdgpu_cdna2| SGPR | BITS_32 | 92 , "amdgpu_cdna2"); +DEF_REGISTER(s93, Arch_amdgpu_cdna2| SGPR | BITS_32 | 93 , "amdgpu_cdna2"); +DEF_REGISTER(s94, Arch_amdgpu_cdna2| SGPR | BITS_32 | 94 , "amdgpu_cdna2"); +DEF_REGISTER(s95, Arch_amdgpu_cdna2| SGPR | BITS_32 | 95 , "amdgpu_cdna2"); +DEF_REGISTER(s96, Arch_amdgpu_cdna2| SGPR | BITS_32 | 96 , "amdgpu_cdna2"); +DEF_REGISTER(s97, Arch_amdgpu_cdna2| SGPR | BITS_32 | 97 , "amdgpu_cdna2"); +DEF_REGISTER(s98, Arch_amdgpu_cdna2| SGPR | BITS_32 | 98 , "amdgpu_cdna2"); +DEF_REGISTER(s99, Arch_amdgpu_cdna2| SGPR | BITS_32 | 99 , "amdgpu_cdna2"); +DEF_REGISTER(s100, Arch_amdgpu_cdna2| SGPR | BITS_32 | 100 , "amdgpu_cdna2"); +DEF_REGISTER(s101, Arch_amdgpu_cdna2| SGPR | BITS_32 | 101 , "amdgpu_cdna2"); +DEF_REGISTER(v0, Arch_amdgpu_cdna2| VGPR | BITS_32 | 0 , "amdgpu_cdna2"); +DEF_REGISTER(v1, Arch_amdgpu_cdna2| VGPR | BITS_32 | 1 , "amdgpu_cdna2"); +DEF_REGISTER(v2, Arch_amdgpu_cdna2| VGPR | BITS_32 | 2 , "amdgpu_cdna2"); +DEF_REGISTER(v3, Arch_amdgpu_cdna2| VGPR | BITS_32 | 3 , "amdgpu_cdna2"); +DEF_REGISTER(v4, Arch_amdgpu_cdna2| VGPR | BITS_32 | 4 , "amdgpu_cdna2"); +DEF_REGISTER(v5, Arch_amdgpu_cdna2| VGPR | BITS_32 | 5 , "amdgpu_cdna2"); +DEF_REGISTER(v6, Arch_amdgpu_cdna2| VGPR | BITS_32 | 6 , "amdgpu_cdna2"); +DEF_REGISTER(v7, Arch_amdgpu_cdna2| VGPR | BITS_32 | 7 , "amdgpu_cdna2"); +DEF_REGISTER(v8, Arch_amdgpu_cdna2| VGPR | BITS_32 | 8 , "amdgpu_cdna2"); +DEF_REGISTER(v9, Arch_amdgpu_cdna2| VGPR | BITS_32 | 9 , "amdgpu_cdna2"); +DEF_REGISTER(v10, Arch_amdgpu_cdna2| VGPR | BITS_32 | 10 , "amdgpu_cdna2"); +DEF_REGISTER(v11, Arch_amdgpu_cdna2| VGPR | BITS_32 | 11 , "amdgpu_cdna2"); +DEF_REGISTER(v12, Arch_amdgpu_cdna2| VGPR | BITS_32 | 12 , "amdgpu_cdna2"); +DEF_REGISTER(v13, Arch_amdgpu_cdna2| VGPR | BITS_32 | 13 , "amdgpu_cdna2"); +DEF_REGISTER(v14, Arch_amdgpu_cdna2| VGPR | BITS_32 | 14 , "amdgpu_cdna2"); +DEF_REGISTER(v15, Arch_amdgpu_cdna2| VGPR | BITS_32 | 15 , "amdgpu_cdna2"); +DEF_REGISTER(v16, Arch_amdgpu_cdna2| VGPR | BITS_32 | 16 , "amdgpu_cdna2"); +DEF_REGISTER(v17, Arch_amdgpu_cdna2| VGPR | BITS_32 | 17 , "amdgpu_cdna2"); +DEF_REGISTER(v18, Arch_amdgpu_cdna2| VGPR | BITS_32 | 18 , "amdgpu_cdna2"); +DEF_REGISTER(v19, Arch_amdgpu_cdna2| VGPR | BITS_32 | 19 , "amdgpu_cdna2"); +DEF_REGISTER(v20, Arch_amdgpu_cdna2| VGPR | BITS_32 | 20 , "amdgpu_cdna2"); +DEF_REGISTER(v21, Arch_amdgpu_cdna2| VGPR | BITS_32 | 21 , "amdgpu_cdna2"); +DEF_REGISTER(v22, Arch_amdgpu_cdna2| VGPR | BITS_32 | 22 , "amdgpu_cdna2"); +DEF_REGISTER(v23, Arch_amdgpu_cdna2| VGPR | BITS_32 | 23 , "amdgpu_cdna2"); +DEF_REGISTER(v24, Arch_amdgpu_cdna2| VGPR | BITS_32 | 24 , "amdgpu_cdna2"); +DEF_REGISTER(v25, Arch_amdgpu_cdna2| VGPR | BITS_32 | 25 , "amdgpu_cdna2"); +DEF_REGISTER(v26, Arch_amdgpu_cdna2| VGPR | BITS_32 | 26 , "amdgpu_cdna2"); +DEF_REGISTER(v27, Arch_amdgpu_cdna2| VGPR | BITS_32 | 27 , "amdgpu_cdna2"); +DEF_REGISTER(v28, Arch_amdgpu_cdna2| VGPR | BITS_32 | 28 , "amdgpu_cdna2"); +DEF_REGISTER(v29, Arch_amdgpu_cdna2| VGPR | BITS_32 | 29 , "amdgpu_cdna2"); +DEF_REGISTER(v30, Arch_amdgpu_cdna2| VGPR | BITS_32 | 30 , "amdgpu_cdna2"); +DEF_REGISTER(v31, Arch_amdgpu_cdna2| VGPR | BITS_32 | 31 , "amdgpu_cdna2"); +DEF_REGISTER(v32, Arch_amdgpu_cdna2| VGPR | BITS_32 | 32 , "amdgpu_cdna2"); +DEF_REGISTER(v33, Arch_amdgpu_cdna2| VGPR | BITS_32 | 33 , "amdgpu_cdna2"); +DEF_REGISTER(v34, Arch_amdgpu_cdna2| VGPR | BITS_32 | 34 , "amdgpu_cdna2"); +DEF_REGISTER(v35, Arch_amdgpu_cdna2| VGPR | BITS_32 | 35 , "amdgpu_cdna2"); +DEF_REGISTER(v36, Arch_amdgpu_cdna2| VGPR | BITS_32 | 36 , "amdgpu_cdna2"); +DEF_REGISTER(v37, Arch_amdgpu_cdna2| VGPR | BITS_32 | 37 , "amdgpu_cdna2"); +DEF_REGISTER(v38, Arch_amdgpu_cdna2| VGPR | BITS_32 | 38 , "amdgpu_cdna2"); +DEF_REGISTER(v39, Arch_amdgpu_cdna2| VGPR | BITS_32 | 39 , "amdgpu_cdna2"); +DEF_REGISTER(v40, Arch_amdgpu_cdna2| VGPR | BITS_32 | 40 , "amdgpu_cdna2"); +DEF_REGISTER(v41, Arch_amdgpu_cdna2| VGPR | BITS_32 | 41 , "amdgpu_cdna2"); +DEF_REGISTER(v42, Arch_amdgpu_cdna2| VGPR | BITS_32 | 42 , "amdgpu_cdna2"); +DEF_REGISTER(v43, Arch_amdgpu_cdna2| VGPR | BITS_32 | 43 , "amdgpu_cdna2"); +DEF_REGISTER(v44, Arch_amdgpu_cdna2| VGPR | BITS_32 | 44 , "amdgpu_cdna2"); +DEF_REGISTER(v45, Arch_amdgpu_cdna2| VGPR | BITS_32 | 45 , "amdgpu_cdna2"); +DEF_REGISTER(v46, Arch_amdgpu_cdna2| VGPR | BITS_32 | 46 , "amdgpu_cdna2"); +DEF_REGISTER(v47, Arch_amdgpu_cdna2| VGPR | BITS_32 | 47 , "amdgpu_cdna2"); +DEF_REGISTER(v48, Arch_amdgpu_cdna2| VGPR | BITS_32 | 48 , "amdgpu_cdna2"); +DEF_REGISTER(v49, Arch_amdgpu_cdna2| VGPR | BITS_32 | 49 , "amdgpu_cdna2"); +DEF_REGISTER(v50, Arch_amdgpu_cdna2| VGPR | BITS_32 | 50 , "amdgpu_cdna2"); +DEF_REGISTER(v51, Arch_amdgpu_cdna2| VGPR | BITS_32 | 51 , "amdgpu_cdna2"); +DEF_REGISTER(v52, Arch_amdgpu_cdna2| VGPR | BITS_32 | 52 , "amdgpu_cdna2"); +DEF_REGISTER(v53, Arch_amdgpu_cdna2| VGPR | BITS_32 | 53 , "amdgpu_cdna2"); +DEF_REGISTER(v54, Arch_amdgpu_cdna2| VGPR | BITS_32 | 54 , "amdgpu_cdna2"); +DEF_REGISTER(v55, Arch_amdgpu_cdna2| VGPR | BITS_32 | 55 , "amdgpu_cdna2"); +DEF_REGISTER(v56, Arch_amdgpu_cdna2| VGPR | BITS_32 | 56 , "amdgpu_cdna2"); +DEF_REGISTER(v57, Arch_amdgpu_cdna2| VGPR | BITS_32 | 57 , "amdgpu_cdna2"); +DEF_REGISTER(v58, Arch_amdgpu_cdna2| VGPR | BITS_32 | 58 , "amdgpu_cdna2"); +DEF_REGISTER(v59, Arch_amdgpu_cdna2| VGPR | BITS_32 | 59 , "amdgpu_cdna2"); +DEF_REGISTER(v60, Arch_amdgpu_cdna2| VGPR | BITS_32 | 60 , "amdgpu_cdna2"); +DEF_REGISTER(v61, Arch_amdgpu_cdna2| VGPR | BITS_32 | 61 , "amdgpu_cdna2"); +DEF_REGISTER(v62, Arch_amdgpu_cdna2| VGPR | BITS_32 | 62 , "amdgpu_cdna2"); +DEF_REGISTER(v63, Arch_amdgpu_cdna2| VGPR | BITS_32 | 63 , "amdgpu_cdna2"); +DEF_REGISTER(v64, Arch_amdgpu_cdna2| VGPR | BITS_32 | 64 , "amdgpu_cdna2"); +DEF_REGISTER(v65, Arch_amdgpu_cdna2| VGPR | BITS_32 | 65 , "amdgpu_cdna2"); +DEF_REGISTER(v66, Arch_amdgpu_cdna2| VGPR | BITS_32 | 66 , "amdgpu_cdna2"); +DEF_REGISTER(v67, Arch_amdgpu_cdna2| VGPR | BITS_32 | 67 , "amdgpu_cdna2"); +DEF_REGISTER(v68, Arch_amdgpu_cdna2| VGPR | BITS_32 | 68 , "amdgpu_cdna2"); +DEF_REGISTER(v69, Arch_amdgpu_cdna2| VGPR | BITS_32 | 69 , "amdgpu_cdna2"); +DEF_REGISTER(v70, Arch_amdgpu_cdna2| VGPR | BITS_32 | 70 , "amdgpu_cdna2"); +DEF_REGISTER(v71, Arch_amdgpu_cdna2| VGPR | BITS_32 | 71 , "amdgpu_cdna2"); +DEF_REGISTER(v72, Arch_amdgpu_cdna2| VGPR | BITS_32 | 72 , "amdgpu_cdna2"); +DEF_REGISTER(v73, Arch_amdgpu_cdna2| VGPR | BITS_32 | 73 , "amdgpu_cdna2"); +DEF_REGISTER(v74, Arch_amdgpu_cdna2| VGPR | BITS_32 | 74 , "amdgpu_cdna2"); +DEF_REGISTER(v75, Arch_amdgpu_cdna2| VGPR | BITS_32 | 75 , "amdgpu_cdna2"); +DEF_REGISTER(v76, Arch_amdgpu_cdna2| VGPR | BITS_32 | 76 , "amdgpu_cdna2"); +DEF_REGISTER(v77, Arch_amdgpu_cdna2| VGPR | BITS_32 | 77 , "amdgpu_cdna2"); +DEF_REGISTER(v78, Arch_amdgpu_cdna2| VGPR | BITS_32 | 78 , "amdgpu_cdna2"); +DEF_REGISTER(v79, Arch_amdgpu_cdna2| VGPR | BITS_32 | 79 , "amdgpu_cdna2"); +DEF_REGISTER(v80, Arch_amdgpu_cdna2| VGPR | BITS_32 | 80 , "amdgpu_cdna2"); +DEF_REGISTER(v81, Arch_amdgpu_cdna2| VGPR | BITS_32 | 81 , "amdgpu_cdna2"); +DEF_REGISTER(v82, Arch_amdgpu_cdna2| VGPR | BITS_32 | 82 , "amdgpu_cdna2"); +DEF_REGISTER(v83, Arch_amdgpu_cdna2| VGPR | BITS_32 | 83 , "amdgpu_cdna2"); +DEF_REGISTER(v84, Arch_amdgpu_cdna2| VGPR | BITS_32 | 84 , "amdgpu_cdna2"); +DEF_REGISTER(v85, Arch_amdgpu_cdna2| VGPR | BITS_32 | 85 , "amdgpu_cdna2"); +DEF_REGISTER(v86, Arch_amdgpu_cdna2| VGPR | BITS_32 | 86 , "amdgpu_cdna2"); +DEF_REGISTER(v87, Arch_amdgpu_cdna2| VGPR | BITS_32 | 87 , "amdgpu_cdna2"); +DEF_REGISTER(v88, Arch_amdgpu_cdna2| VGPR | BITS_32 | 88 , "amdgpu_cdna2"); +DEF_REGISTER(v89, Arch_amdgpu_cdna2| VGPR | BITS_32 | 89 , "amdgpu_cdna2"); +DEF_REGISTER(v90, Arch_amdgpu_cdna2| VGPR | BITS_32 | 90 , "amdgpu_cdna2"); +DEF_REGISTER(v91, Arch_amdgpu_cdna2| VGPR | BITS_32 | 91 , "amdgpu_cdna2"); +DEF_REGISTER(v92, Arch_amdgpu_cdna2| VGPR | BITS_32 | 92 , "amdgpu_cdna2"); +DEF_REGISTER(v93, Arch_amdgpu_cdna2| VGPR | BITS_32 | 93 , "amdgpu_cdna2"); +DEF_REGISTER(v94, Arch_amdgpu_cdna2| VGPR | BITS_32 | 94 , "amdgpu_cdna2"); +DEF_REGISTER(v95, Arch_amdgpu_cdna2| VGPR | BITS_32 | 95 , "amdgpu_cdna2"); +DEF_REGISTER(v96, Arch_amdgpu_cdna2| VGPR | BITS_32 | 96 , "amdgpu_cdna2"); +DEF_REGISTER(v97, Arch_amdgpu_cdna2| VGPR | BITS_32 | 97 , "amdgpu_cdna2"); +DEF_REGISTER(v98, Arch_amdgpu_cdna2| VGPR | BITS_32 | 98 , "amdgpu_cdna2"); +DEF_REGISTER(v99, Arch_amdgpu_cdna2| VGPR | BITS_32 | 99 , "amdgpu_cdna2"); +DEF_REGISTER(v100, Arch_amdgpu_cdna2| VGPR | BITS_32 | 100 , "amdgpu_cdna2"); +DEF_REGISTER(v101, Arch_amdgpu_cdna2| VGPR | BITS_32 | 101 , "amdgpu_cdna2"); +DEF_REGISTER(v102, Arch_amdgpu_cdna2| VGPR | BITS_32 | 102 , "amdgpu_cdna2"); +DEF_REGISTER(v103, Arch_amdgpu_cdna2| VGPR | BITS_32 | 103 , "amdgpu_cdna2"); +DEF_REGISTER(v104, Arch_amdgpu_cdna2| VGPR | BITS_32 | 104 , "amdgpu_cdna2"); +DEF_REGISTER(v105, Arch_amdgpu_cdna2| VGPR | BITS_32 | 105 , "amdgpu_cdna2"); +DEF_REGISTER(v106, Arch_amdgpu_cdna2| VGPR | BITS_32 | 106 , "amdgpu_cdna2"); +DEF_REGISTER(v107, Arch_amdgpu_cdna2| VGPR | BITS_32 | 107 , "amdgpu_cdna2"); +DEF_REGISTER(v108, Arch_amdgpu_cdna2| VGPR | BITS_32 | 108 , "amdgpu_cdna2"); +DEF_REGISTER(v109, Arch_amdgpu_cdna2| VGPR | BITS_32 | 109 , "amdgpu_cdna2"); +DEF_REGISTER(v110, Arch_amdgpu_cdna2| VGPR | BITS_32 | 110 , "amdgpu_cdna2"); +DEF_REGISTER(v111, Arch_amdgpu_cdna2| VGPR | BITS_32 | 111 , "amdgpu_cdna2"); +DEF_REGISTER(v112, Arch_amdgpu_cdna2| VGPR | BITS_32 | 112 , "amdgpu_cdna2"); +DEF_REGISTER(v113, Arch_amdgpu_cdna2| VGPR | BITS_32 | 113 , "amdgpu_cdna2"); +DEF_REGISTER(v114, Arch_amdgpu_cdna2| VGPR | BITS_32 | 114 , "amdgpu_cdna2"); +DEF_REGISTER(v115, Arch_amdgpu_cdna2| VGPR | BITS_32 | 115 , "amdgpu_cdna2"); +DEF_REGISTER(v116, Arch_amdgpu_cdna2| VGPR | BITS_32 | 116 , "amdgpu_cdna2"); +DEF_REGISTER(v117, Arch_amdgpu_cdna2| VGPR | BITS_32 | 117 , "amdgpu_cdna2"); +DEF_REGISTER(v118, Arch_amdgpu_cdna2| VGPR | BITS_32 | 118 , "amdgpu_cdna2"); +DEF_REGISTER(v119, Arch_amdgpu_cdna2| VGPR | BITS_32 | 119 , "amdgpu_cdna2"); +DEF_REGISTER(v120, Arch_amdgpu_cdna2| VGPR | BITS_32 | 120 , "amdgpu_cdna2"); +DEF_REGISTER(v121, Arch_amdgpu_cdna2| VGPR | BITS_32 | 121 , "amdgpu_cdna2"); +DEF_REGISTER(v122, Arch_amdgpu_cdna2| VGPR | BITS_32 | 122 , "amdgpu_cdna2"); +DEF_REGISTER(v123, Arch_amdgpu_cdna2| VGPR | BITS_32 | 123 , "amdgpu_cdna2"); +DEF_REGISTER(v124, Arch_amdgpu_cdna2| VGPR | BITS_32 | 124 , "amdgpu_cdna2"); +DEF_REGISTER(v125, Arch_amdgpu_cdna2| VGPR | BITS_32 | 125 , "amdgpu_cdna2"); +DEF_REGISTER(v126, Arch_amdgpu_cdna2| VGPR | BITS_32 | 126 , "amdgpu_cdna2"); +DEF_REGISTER(v127, Arch_amdgpu_cdna2| VGPR | BITS_32 | 127 , "amdgpu_cdna2"); +DEF_REGISTER(v128, Arch_amdgpu_cdna2| VGPR | BITS_32 | 128 , "amdgpu_cdna2"); +DEF_REGISTER(v129, Arch_amdgpu_cdna2| VGPR | BITS_32 | 129 , "amdgpu_cdna2"); +DEF_REGISTER(v130, Arch_amdgpu_cdna2| VGPR | BITS_32 | 130 , "amdgpu_cdna2"); +DEF_REGISTER(v131, Arch_amdgpu_cdna2| VGPR | BITS_32 | 131 , "amdgpu_cdna2"); +DEF_REGISTER(v132, Arch_amdgpu_cdna2| VGPR | BITS_32 | 132 , "amdgpu_cdna2"); +DEF_REGISTER(v133, Arch_amdgpu_cdna2| VGPR | BITS_32 | 133 , "amdgpu_cdna2"); +DEF_REGISTER(v134, Arch_amdgpu_cdna2| VGPR | BITS_32 | 134 , "amdgpu_cdna2"); +DEF_REGISTER(v135, Arch_amdgpu_cdna2| VGPR | BITS_32 | 135 , "amdgpu_cdna2"); +DEF_REGISTER(v136, Arch_amdgpu_cdna2| VGPR | BITS_32 | 136 , "amdgpu_cdna2"); +DEF_REGISTER(v137, Arch_amdgpu_cdna2| VGPR | BITS_32 | 137 , "amdgpu_cdna2"); +DEF_REGISTER(v138, Arch_amdgpu_cdna2| VGPR | BITS_32 | 138 , "amdgpu_cdna2"); +DEF_REGISTER(v139, Arch_amdgpu_cdna2| VGPR | BITS_32 | 139 , "amdgpu_cdna2"); +DEF_REGISTER(v140, Arch_amdgpu_cdna2| VGPR | BITS_32 | 140 , "amdgpu_cdna2"); +DEF_REGISTER(v141, Arch_amdgpu_cdna2| VGPR | BITS_32 | 141 , "amdgpu_cdna2"); +DEF_REGISTER(v142, Arch_amdgpu_cdna2| VGPR | BITS_32 | 142 , "amdgpu_cdna2"); +DEF_REGISTER(v143, Arch_amdgpu_cdna2| VGPR | BITS_32 | 143 , "amdgpu_cdna2"); +DEF_REGISTER(v144, Arch_amdgpu_cdna2| VGPR | BITS_32 | 144 , "amdgpu_cdna2"); +DEF_REGISTER(v145, Arch_amdgpu_cdna2| VGPR | BITS_32 | 145 , "amdgpu_cdna2"); +DEF_REGISTER(v146, Arch_amdgpu_cdna2| VGPR | BITS_32 | 146 , "amdgpu_cdna2"); +DEF_REGISTER(v147, Arch_amdgpu_cdna2| VGPR | BITS_32 | 147 , "amdgpu_cdna2"); +DEF_REGISTER(v148, Arch_amdgpu_cdna2| VGPR | BITS_32 | 148 , "amdgpu_cdna2"); +DEF_REGISTER(v149, Arch_amdgpu_cdna2| VGPR | BITS_32 | 149 , "amdgpu_cdna2"); +DEF_REGISTER(v150, Arch_amdgpu_cdna2| VGPR | BITS_32 | 150 , "amdgpu_cdna2"); +DEF_REGISTER(v151, Arch_amdgpu_cdna2| VGPR | BITS_32 | 151 , "amdgpu_cdna2"); +DEF_REGISTER(v152, Arch_amdgpu_cdna2| VGPR | BITS_32 | 152 , "amdgpu_cdna2"); +DEF_REGISTER(v153, Arch_amdgpu_cdna2| VGPR | BITS_32 | 153 , "amdgpu_cdna2"); +DEF_REGISTER(v154, Arch_amdgpu_cdna2| VGPR | BITS_32 | 154 , "amdgpu_cdna2"); +DEF_REGISTER(v155, Arch_amdgpu_cdna2| VGPR | BITS_32 | 155 , "amdgpu_cdna2"); +DEF_REGISTER(v156, Arch_amdgpu_cdna2| VGPR | BITS_32 | 156 , "amdgpu_cdna2"); +DEF_REGISTER(v157, Arch_amdgpu_cdna2| VGPR | BITS_32 | 157 , "amdgpu_cdna2"); +DEF_REGISTER(v158, Arch_amdgpu_cdna2| VGPR | BITS_32 | 158 , "amdgpu_cdna2"); +DEF_REGISTER(v159, Arch_amdgpu_cdna2| VGPR | BITS_32 | 159 , "amdgpu_cdna2"); +DEF_REGISTER(v160, Arch_amdgpu_cdna2| VGPR | BITS_32 | 160 , "amdgpu_cdna2"); +DEF_REGISTER(v161, Arch_amdgpu_cdna2| VGPR | BITS_32 | 161 , "amdgpu_cdna2"); +DEF_REGISTER(v162, Arch_amdgpu_cdna2| VGPR | BITS_32 | 162 , "amdgpu_cdna2"); +DEF_REGISTER(v163, Arch_amdgpu_cdna2| VGPR | BITS_32 | 163 , "amdgpu_cdna2"); +DEF_REGISTER(v164, Arch_amdgpu_cdna2| VGPR | BITS_32 | 164 , "amdgpu_cdna2"); +DEF_REGISTER(v165, Arch_amdgpu_cdna2| VGPR | BITS_32 | 165 , "amdgpu_cdna2"); +DEF_REGISTER(v166, Arch_amdgpu_cdna2| VGPR | BITS_32 | 166 , "amdgpu_cdna2"); +DEF_REGISTER(v167, Arch_amdgpu_cdna2| VGPR | BITS_32 | 167 , "amdgpu_cdna2"); +DEF_REGISTER(v168, Arch_amdgpu_cdna2| VGPR | BITS_32 | 168 , "amdgpu_cdna2"); +DEF_REGISTER(v169, Arch_amdgpu_cdna2| VGPR | BITS_32 | 169 , "amdgpu_cdna2"); +DEF_REGISTER(v170, Arch_amdgpu_cdna2| VGPR | BITS_32 | 170 , "amdgpu_cdna2"); +DEF_REGISTER(v171, Arch_amdgpu_cdna2| VGPR | BITS_32 | 171 , "amdgpu_cdna2"); +DEF_REGISTER(v172, Arch_amdgpu_cdna2| VGPR | BITS_32 | 172 , "amdgpu_cdna2"); +DEF_REGISTER(v173, Arch_amdgpu_cdna2| VGPR | BITS_32 | 173 , "amdgpu_cdna2"); +DEF_REGISTER(v174, Arch_amdgpu_cdna2| VGPR | BITS_32 | 174 , "amdgpu_cdna2"); +DEF_REGISTER(v175, Arch_amdgpu_cdna2| VGPR | BITS_32 | 175 , "amdgpu_cdna2"); +DEF_REGISTER(v176, Arch_amdgpu_cdna2| VGPR | BITS_32 | 176 , "amdgpu_cdna2"); +DEF_REGISTER(v177, Arch_amdgpu_cdna2| VGPR | BITS_32 | 177 , "amdgpu_cdna2"); +DEF_REGISTER(v178, Arch_amdgpu_cdna2| VGPR | BITS_32 | 178 , "amdgpu_cdna2"); +DEF_REGISTER(v179, Arch_amdgpu_cdna2| VGPR | BITS_32 | 179 , "amdgpu_cdna2"); +DEF_REGISTER(v180, Arch_amdgpu_cdna2| VGPR | BITS_32 | 180 , "amdgpu_cdna2"); +DEF_REGISTER(v181, Arch_amdgpu_cdna2| VGPR | BITS_32 | 181 , "amdgpu_cdna2"); +DEF_REGISTER(v182, Arch_amdgpu_cdna2| VGPR | BITS_32 | 182 , "amdgpu_cdna2"); +DEF_REGISTER(v183, Arch_amdgpu_cdna2| VGPR | BITS_32 | 183 , "amdgpu_cdna2"); +DEF_REGISTER(v184, Arch_amdgpu_cdna2| VGPR | BITS_32 | 184 , "amdgpu_cdna2"); +DEF_REGISTER(v185, Arch_amdgpu_cdna2| VGPR | BITS_32 | 185 , "amdgpu_cdna2"); +DEF_REGISTER(v186, Arch_amdgpu_cdna2| VGPR | BITS_32 | 186 , "amdgpu_cdna2"); +DEF_REGISTER(v187, Arch_amdgpu_cdna2| VGPR | BITS_32 | 187 , "amdgpu_cdna2"); +DEF_REGISTER(v188, Arch_amdgpu_cdna2| VGPR | BITS_32 | 188 , "amdgpu_cdna2"); +DEF_REGISTER(v189, Arch_amdgpu_cdna2| VGPR | BITS_32 | 189 , "amdgpu_cdna2"); +DEF_REGISTER(v190, Arch_amdgpu_cdna2| VGPR | BITS_32 | 190 , "amdgpu_cdna2"); +DEF_REGISTER(v191, Arch_amdgpu_cdna2| VGPR | BITS_32 | 191 , "amdgpu_cdna2"); +DEF_REGISTER(v192, Arch_amdgpu_cdna2| VGPR | BITS_32 | 192 , "amdgpu_cdna2"); +DEF_REGISTER(v193, Arch_amdgpu_cdna2| VGPR | BITS_32 | 193 , "amdgpu_cdna2"); +DEF_REGISTER(v194, Arch_amdgpu_cdna2| VGPR | BITS_32 | 194 , "amdgpu_cdna2"); +DEF_REGISTER(v195, Arch_amdgpu_cdna2| VGPR | BITS_32 | 195 , "amdgpu_cdna2"); +DEF_REGISTER(v196, Arch_amdgpu_cdna2| VGPR | BITS_32 | 196 , "amdgpu_cdna2"); +DEF_REGISTER(v197, Arch_amdgpu_cdna2| VGPR | BITS_32 | 197 , "amdgpu_cdna2"); +DEF_REGISTER(v198, Arch_amdgpu_cdna2| VGPR | BITS_32 | 198 , "amdgpu_cdna2"); +DEF_REGISTER(v199, Arch_amdgpu_cdna2| VGPR | BITS_32 | 199 , "amdgpu_cdna2"); +DEF_REGISTER(v200, Arch_amdgpu_cdna2| VGPR | BITS_32 | 200 , "amdgpu_cdna2"); +DEF_REGISTER(v201, Arch_amdgpu_cdna2| VGPR | BITS_32 | 201 , "amdgpu_cdna2"); +DEF_REGISTER(v202, Arch_amdgpu_cdna2| VGPR | BITS_32 | 202 , "amdgpu_cdna2"); +DEF_REGISTER(v203, Arch_amdgpu_cdna2| VGPR | BITS_32 | 203 , "amdgpu_cdna2"); +DEF_REGISTER(v204, Arch_amdgpu_cdna2| VGPR | BITS_32 | 204 , "amdgpu_cdna2"); +DEF_REGISTER(v205, Arch_amdgpu_cdna2| VGPR | BITS_32 | 205 , "amdgpu_cdna2"); +DEF_REGISTER(v206, Arch_amdgpu_cdna2| VGPR | BITS_32 | 206 , "amdgpu_cdna2"); +DEF_REGISTER(v207, Arch_amdgpu_cdna2| VGPR | BITS_32 | 207 , "amdgpu_cdna2"); +DEF_REGISTER(v208, Arch_amdgpu_cdna2| VGPR | BITS_32 | 208 , "amdgpu_cdna2"); +DEF_REGISTER(v209, Arch_amdgpu_cdna2| VGPR | BITS_32 | 209 , "amdgpu_cdna2"); +DEF_REGISTER(v210, Arch_amdgpu_cdna2| VGPR | BITS_32 | 210 , "amdgpu_cdna2"); +DEF_REGISTER(v211, Arch_amdgpu_cdna2| VGPR | BITS_32 | 211 , "amdgpu_cdna2"); +DEF_REGISTER(v212, Arch_amdgpu_cdna2| VGPR | BITS_32 | 212 , "amdgpu_cdna2"); +DEF_REGISTER(v213, Arch_amdgpu_cdna2| VGPR | BITS_32 | 213 , "amdgpu_cdna2"); +DEF_REGISTER(v214, Arch_amdgpu_cdna2| VGPR | BITS_32 | 214 , "amdgpu_cdna2"); +DEF_REGISTER(v215, Arch_amdgpu_cdna2| VGPR | BITS_32 | 215 , "amdgpu_cdna2"); +DEF_REGISTER(v216, Arch_amdgpu_cdna2| VGPR | BITS_32 | 216 , "amdgpu_cdna2"); +DEF_REGISTER(v217, Arch_amdgpu_cdna2| VGPR | BITS_32 | 217 , "amdgpu_cdna2"); +DEF_REGISTER(v218, Arch_amdgpu_cdna2| VGPR | BITS_32 | 218 , "amdgpu_cdna2"); +DEF_REGISTER(v219, Arch_amdgpu_cdna2| VGPR | BITS_32 | 219 , "amdgpu_cdna2"); +DEF_REGISTER(v220, Arch_amdgpu_cdna2| VGPR | BITS_32 | 220 , "amdgpu_cdna2"); +DEF_REGISTER(v221, Arch_amdgpu_cdna2| VGPR | BITS_32 | 221 , "amdgpu_cdna2"); +DEF_REGISTER(v222, Arch_amdgpu_cdna2| VGPR | BITS_32 | 222 , "amdgpu_cdna2"); +DEF_REGISTER(v223, Arch_amdgpu_cdna2| VGPR | BITS_32 | 223 , "amdgpu_cdna2"); +DEF_REGISTER(v224, Arch_amdgpu_cdna2| VGPR | BITS_32 | 224 , "amdgpu_cdna2"); +DEF_REGISTER(v225, Arch_amdgpu_cdna2| VGPR | BITS_32 | 225 , "amdgpu_cdna2"); +DEF_REGISTER(v226, Arch_amdgpu_cdna2| VGPR | BITS_32 | 226 , "amdgpu_cdna2"); +DEF_REGISTER(v227, Arch_amdgpu_cdna2| VGPR | BITS_32 | 227 , "amdgpu_cdna2"); +DEF_REGISTER(v228, Arch_amdgpu_cdna2| VGPR | BITS_32 | 228 , "amdgpu_cdna2"); +DEF_REGISTER(v229, Arch_amdgpu_cdna2| VGPR | BITS_32 | 229 , "amdgpu_cdna2"); +DEF_REGISTER(v230, Arch_amdgpu_cdna2| VGPR | BITS_32 | 230 , "amdgpu_cdna2"); +DEF_REGISTER(v231, Arch_amdgpu_cdna2| VGPR | BITS_32 | 231 , "amdgpu_cdna2"); +DEF_REGISTER(v232, Arch_amdgpu_cdna2| VGPR | BITS_32 | 232 , "amdgpu_cdna2"); +DEF_REGISTER(v233, Arch_amdgpu_cdna2| VGPR | BITS_32 | 233 , "amdgpu_cdna2"); +DEF_REGISTER(v234, Arch_amdgpu_cdna2| VGPR | BITS_32 | 234 , "amdgpu_cdna2"); +DEF_REGISTER(v235, Arch_amdgpu_cdna2| VGPR | BITS_32 | 235 , "amdgpu_cdna2"); +DEF_REGISTER(v236, Arch_amdgpu_cdna2| VGPR | BITS_32 | 236 , "amdgpu_cdna2"); +DEF_REGISTER(v237, Arch_amdgpu_cdna2| VGPR | BITS_32 | 237 , "amdgpu_cdna2"); +DEF_REGISTER(v238, Arch_amdgpu_cdna2| VGPR | BITS_32 | 238 , "amdgpu_cdna2"); +DEF_REGISTER(v239, Arch_amdgpu_cdna2| VGPR | BITS_32 | 239 , "amdgpu_cdna2"); +DEF_REGISTER(v240, Arch_amdgpu_cdna2| VGPR | BITS_32 | 240 , "amdgpu_cdna2"); +DEF_REGISTER(v241, Arch_amdgpu_cdna2| VGPR | BITS_32 | 241 , "amdgpu_cdna2"); +DEF_REGISTER(v242, Arch_amdgpu_cdna2| VGPR | BITS_32 | 242 , "amdgpu_cdna2"); +DEF_REGISTER(v243, Arch_amdgpu_cdna2| VGPR | BITS_32 | 243 , "amdgpu_cdna2"); +DEF_REGISTER(v244, Arch_amdgpu_cdna2| VGPR | BITS_32 | 244 , "amdgpu_cdna2"); +DEF_REGISTER(v245, Arch_amdgpu_cdna2| VGPR | BITS_32 | 245 , "amdgpu_cdna2"); +DEF_REGISTER(v246, Arch_amdgpu_cdna2| VGPR | BITS_32 | 246 , "amdgpu_cdna2"); +DEF_REGISTER(v247, Arch_amdgpu_cdna2| VGPR | BITS_32 | 247 , "amdgpu_cdna2"); +DEF_REGISTER(v248, Arch_amdgpu_cdna2| VGPR | BITS_32 | 248 , "amdgpu_cdna2"); +DEF_REGISTER(v249, Arch_amdgpu_cdna2| VGPR | BITS_32 | 249 , "amdgpu_cdna2"); +DEF_REGISTER(v250, Arch_amdgpu_cdna2| VGPR | BITS_32 | 250 , "amdgpu_cdna2"); +DEF_REGISTER(v251, Arch_amdgpu_cdna2| VGPR | BITS_32 | 251 , "amdgpu_cdna2"); +DEF_REGISTER(v252, Arch_amdgpu_cdna2| VGPR | BITS_32 | 252 , "amdgpu_cdna2"); +DEF_REGISTER(v253, Arch_amdgpu_cdna2| VGPR | BITS_32 | 253 , "amdgpu_cdna2"); +DEF_REGISTER(v254, Arch_amdgpu_cdna2| VGPR | BITS_32 | 254 , "amdgpu_cdna2"); +DEF_REGISTER(v255, Arch_amdgpu_cdna2| VGPR | BITS_32 | 255 , "amdgpu_cdna2"); +DEF_REGISTER(acc0, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 0 , "amdgpu_cdna2"); +DEF_REGISTER(acc1, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 1 , "amdgpu_cdna2"); +DEF_REGISTER(acc2, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 2 , "amdgpu_cdna2"); +DEF_REGISTER(acc3, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 3 , "amdgpu_cdna2"); +DEF_REGISTER(acc4, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 4 , "amdgpu_cdna2"); +DEF_REGISTER(acc5, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 5 , "amdgpu_cdna2"); +DEF_REGISTER(acc6, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 6 , "amdgpu_cdna2"); +DEF_REGISTER(acc7, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 7 , "amdgpu_cdna2"); +DEF_REGISTER(acc8, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 8 , "amdgpu_cdna2"); +DEF_REGISTER(acc9, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 9 , "amdgpu_cdna2"); +DEF_REGISTER(acc10, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 10 , "amdgpu_cdna2"); +DEF_REGISTER(acc11, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 11 , "amdgpu_cdna2"); +DEF_REGISTER(acc12, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 12 , "amdgpu_cdna2"); +DEF_REGISTER(acc13, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 13 , "amdgpu_cdna2"); +DEF_REGISTER(acc14, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 14 , "amdgpu_cdna2"); +DEF_REGISTER(acc15, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 15 , "amdgpu_cdna2"); +DEF_REGISTER(acc16, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 16 , "amdgpu_cdna2"); +DEF_REGISTER(acc17, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 17 , "amdgpu_cdna2"); +DEF_REGISTER(acc18, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 18 , "amdgpu_cdna2"); +DEF_REGISTER(acc19, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 19 , "amdgpu_cdna2"); +DEF_REGISTER(acc20, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 20 , "amdgpu_cdna2"); +DEF_REGISTER(acc21, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 21 , "amdgpu_cdna2"); +DEF_REGISTER(acc22, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 22 , "amdgpu_cdna2"); +DEF_REGISTER(acc23, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 23 , "amdgpu_cdna2"); +DEF_REGISTER(acc24, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 24 , "amdgpu_cdna2"); +DEF_REGISTER(acc25, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 25 , "amdgpu_cdna2"); +DEF_REGISTER(acc26, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 26 , "amdgpu_cdna2"); +DEF_REGISTER(acc27, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 27 , "amdgpu_cdna2"); +DEF_REGISTER(acc28, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 28 , "amdgpu_cdna2"); +DEF_REGISTER(acc29, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 29 , "amdgpu_cdna2"); +DEF_REGISTER(acc30, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 30 , "amdgpu_cdna2"); +DEF_REGISTER(acc31, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 31 , "amdgpu_cdna2"); +DEF_REGISTER(acc32, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 32 , "amdgpu_cdna2"); +DEF_REGISTER(acc33, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 33 , "amdgpu_cdna2"); +DEF_REGISTER(acc34, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 34 , "amdgpu_cdna2"); +DEF_REGISTER(acc35, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 35 , "amdgpu_cdna2"); +DEF_REGISTER(acc36, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 36 , "amdgpu_cdna2"); +DEF_REGISTER(acc37, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 37 , "amdgpu_cdna2"); +DEF_REGISTER(acc38, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 38 , "amdgpu_cdna2"); +DEF_REGISTER(acc39, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 39 , "amdgpu_cdna2"); +DEF_REGISTER(acc40, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 40 , "amdgpu_cdna2"); +DEF_REGISTER(acc41, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 41 , "amdgpu_cdna2"); +DEF_REGISTER(acc42, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 42 , "amdgpu_cdna2"); +DEF_REGISTER(acc43, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 43 , "amdgpu_cdna2"); +DEF_REGISTER(acc44, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 44 , "amdgpu_cdna2"); +DEF_REGISTER(acc45, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 45 , "amdgpu_cdna2"); +DEF_REGISTER(acc46, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 46 , "amdgpu_cdna2"); +DEF_REGISTER(acc47, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 47 , "amdgpu_cdna2"); +DEF_REGISTER(acc48, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 48 , "amdgpu_cdna2"); +DEF_REGISTER(acc49, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 49 , "amdgpu_cdna2"); +DEF_REGISTER(acc50, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 50 , "amdgpu_cdna2"); +DEF_REGISTER(acc51, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 51 , "amdgpu_cdna2"); +DEF_REGISTER(acc52, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 52 , "amdgpu_cdna2"); +DEF_REGISTER(acc53, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 53 , "amdgpu_cdna2"); +DEF_REGISTER(acc54, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 54 , "amdgpu_cdna2"); +DEF_REGISTER(acc55, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 55 , "amdgpu_cdna2"); +DEF_REGISTER(acc56, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 56 , "amdgpu_cdna2"); +DEF_REGISTER(acc57, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 57 , "amdgpu_cdna2"); +DEF_REGISTER(acc58, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 58 , "amdgpu_cdna2"); +DEF_REGISTER(acc59, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 59 , "amdgpu_cdna2"); +DEF_REGISTER(acc60, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 60 , "amdgpu_cdna2"); +DEF_REGISTER(acc61, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 61 , "amdgpu_cdna2"); +DEF_REGISTER(acc62, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 62 , "amdgpu_cdna2"); +DEF_REGISTER(acc63, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 63 , "amdgpu_cdna2"); +DEF_REGISTER(acc64, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 64 , "amdgpu_cdna2"); +DEF_REGISTER(acc65, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 65 , "amdgpu_cdna2"); +DEF_REGISTER(acc66, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 66 , "amdgpu_cdna2"); +DEF_REGISTER(acc67, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 67 , "amdgpu_cdna2"); +DEF_REGISTER(acc68, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 68 , "amdgpu_cdna2"); +DEF_REGISTER(acc69, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 69 , "amdgpu_cdna2"); +DEF_REGISTER(acc70, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 70 , "amdgpu_cdna2"); +DEF_REGISTER(acc71, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 71 , "amdgpu_cdna2"); +DEF_REGISTER(acc72, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 72 , "amdgpu_cdna2"); +DEF_REGISTER(acc73, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 73 , "amdgpu_cdna2"); +DEF_REGISTER(acc74, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 74 , "amdgpu_cdna2"); +DEF_REGISTER(acc75, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 75 , "amdgpu_cdna2"); +DEF_REGISTER(acc76, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 76 , "amdgpu_cdna2"); +DEF_REGISTER(acc77, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 77 , "amdgpu_cdna2"); +DEF_REGISTER(acc78, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 78 , "amdgpu_cdna2"); +DEF_REGISTER(acc79, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 79 , "amdgpu_cdna2"); +DEF_REGISTER(acc80, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 80 , "amdgpu_cdna2"); +DEF_REGISTER(acc81, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 81 , "amdgpu_cdna2"); +DEF_REGISTER(acc82, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 82 , "amdgpu_cdna2"); +DEF_REGISTER(acc83, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 83 , "amdgpu_cdna2"); +DEF_REGISTER(acc84, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 84 , "amdgpu_cdna2"); +DEF_REGISTER(acc85, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 85 , "amdgpu_cdna2"); +DEF_REGISTER(acc86, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 86 , "amdgpu_cdna2"); +DEF_REGISTER(acc87, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 87 , "amdgpu_cdna2"); +DEF_REGISTER(acc88, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 88 , "amdgpu_cdna2"); +DEF_REGISTER(acc89, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 89 , "amdgpu_cdna2"); +DEF_REGISTER(acc90, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 90 , "amdgpu_cdna2"); +DEF_REGISTER(acc91, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 91 , "amdgpu_cdna2"); +DEF_REGISTER(acc92, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 92 , "amdgpu_cdna2"); +DEF_REGISTER(acc93, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 93 , "amdgpu_cdna2"); +DEF_REGISTER(acc94, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 94 , "amdgpu_cdna2"); +DEF_REGISTER(acc95, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 95 , "amdgpu_cdna2"); +DEF_REGISTER(acc96, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 96 , "amdgpu_cdna2"); +DEF_REGISTER(acc97, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 97 , "amdgpu_cdna2"); +DEF_REGISTER(acc98, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 98 , "amdgpu_cdna2"); +DEF_REGISTER(acc99, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 99 , "amdgpu_cdna2"); +DEF_REGISTER(acc100, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 100 , "amdgpu_cdna2"); +DEF_REGISTER(acc101, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 101 , "amdgpu_cdna2"); +DEF_REGISTER(acc102, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 102 , "amdgpu_cdna2"); +DEF_REGISTER(acc103, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 103 , "amdgpu_cdna2"); +DEF_REGISTER(acc104, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 104 , "amdgpu_cdna2"); +DEF_REGISTER(acc105, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 105 , "amdgpu_cdna2"); +DEF_REGISTER(acc106, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 106 , "amdgpu_cdna2"); +DEF_REGISTER(acc107, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 107 , "amdgpu_cdna2"); +DEF_REGISTER(acc108, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 108 , "amdgpu_cdna2"); +DEF_REGISTER(acc109, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 109 , "amdgpu_cdna2"); +DEF_REGISTER(acc110, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 110 , "amdgpu_cdna2"); +DEF_REGISTER(acc111, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 111 , "amdgpu_cdna2"); +DEF_REGISTER(acc112, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 112 , "amdgpu_cdna2"); +DEF_REGISTER(acc113, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 113 , "amdgpu_cdna2"); +DEF_REGISTER(acc114, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 114 , "amdgpu_cdna2"); +DEF_REGISTER(acc115, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 115 , "amdgpu_cdna2"); +DEF_REGISTER(acc116, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 116 , "amdgpu_cdna2"); +DEF_REGISTER(acc117, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 117 , "amdgpu_cdna2"); +DEF_REGISTER(acc118, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 118 , "amdgpu_cdna2"); +DEF_REGISTER(acc119, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 119 , "amdgpu_cdna2"); +DEF_REGISTER(acc120, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 120 , "amdgpu_cdna2"); +DEF_REGISTER(acc121, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 121 , "amdgpu_cdna2"); +DEF_REGISTER(acc122, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 122 , "amdgpu_cdna2"); +DEF_REGISTER(acc123, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 123 , "amdgpu_cdna2"); +DEF_REGISTER(acc124, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 124 , "amdgpu_cdna2"); +DEF_REGISTER(acc125, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 125 , "amdgpu_cdna2"); +DEF_REGISTER(acc126, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 126 , "amdgpu_cdna2"); +DEF_REGISTER(acc127, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 127 , "amdgpu_cdna2"); +DEF_REGISTER(acc128, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 128 , "amdgpu_cdna2"); +DEF_REGISTER(acc129, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 129 , "amdgpu_cdna2"); +DEF_REGISTER(acc130, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 130 , "amdgpu_cdna2"); +DEF_REGISTER(acc131, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 131 , "amdgpu_cdna2"); +DEF_REGISTER(acc132, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 132 , "amdgpu_cdna2"); +DEF_REGISTER(acc133, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 133 , "amdgpu_cdna2"); +DEF_REGISTER(acc134, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 134 , "amdgpu_cdna2"); +DEF_REGISTER(acc135, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 135 , "amdgpu_cdna2"); +DEF_REGISTER(acc136, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 136 , "amdgpu_cdna2"); +DEF_REGISTER(acc137, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 137 , "amdgpu_cdna2"); +DEF_REGISTER(acc138, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 138 , "amdgpu_cdna2"); +DEF_REGISTER(acc139, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 139 , "amdgpu_cdna2"); +DEF_REGISTER(acc140, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 140 , "amdgpu_cdna2"); +DEF_REGISTER(acc141, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 141 , "amdgpu_cdna2"); +DEF_REGISTER(acc142, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 142 , "amdgpu_cdna2"); +DEF_REGISTER(acc143, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 143 , "amdgpu_cdna2"); +DEF_REGISTER(acc144, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 144 , "amdgpu_cdna2"); +DEF_REGISTER(acc145, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 145 , "amdgpu_cdna2"); +DEF_REGISTER(acc146, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 146 , "amdgpu_cdna2"); +DEF_REGISTER(acc147, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 147 , "amdgpu_cdna2"); +DEF_REGISTER(acc148, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 148 , "amdgpu_cdna2"); +DEF_REGISTER(acc149, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 149 , "amdgpu_cdna2"); +DEF_REGISTER(acc150, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 150 , "amdgpu_cdna2"); +DEF_REGISTER(acc151, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 151 , "amdgpu_cdna2"); +DEF_REGISTER(acc152, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 152 , "amdgpu_cdna2"); +DEF_REGISTER(acc153, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 153 , "amdgpu_cdna2"); +DEF_REGISTER(acc154, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 154 , "amdgpu_cdna2"); +DEF_REGISTER(acc155, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 155 , "amdgpu_cdna2"); +DEF_REGISTER(acc156, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 156 , "amdgpu_cdna2"); +DEF_REGISTER(acc157, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 157 , "amdgpu_cdna2"); +DEF_REGISTER(acc158, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 158 , "amdgpu_cdna2"); +DEF_REGISTER(acc159, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 159 , "amdgpu_cdna2"); +DEF_REGISTER(acc160, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 160 , "amdgpu_cdna2"); +DEF_REGISTER(acc161, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 161 , "amdgpu_cdna2"); +DEF_REGISTER(acc162, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 162 , "amdgpu_cdna2"); +DEF_REGISTER(acc163, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 163 , "amdgpu_cdna2"); +DEF_REGISTER(acc164, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 164 , "amdgpu_cdna2"); +DEF_REGISTER(acc165, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 165 , "amdgpu_cdna2"); +DEF_REGISTER(acc166, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 166 , "amdgpu_cdna2"); +DEF_REGISTER(acc167, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 167 , "amdgpu_cdna2"); +DEF_REGISTER(acc168, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 168 , "amdgpu_cdna2"); +DEF_REGISTER(acc169, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 169 , "amdgpu_cdna2"); +DEF_REGISTER(acc170, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 170 , "amdgpu_cdna2"); +DEF_REGISTER(acc171, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 171 , "amdgpu_cdna2"); +DEF_REGISTER(acc172, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 172 , "amdgpu_cdna2"); +DEF_REGISTER(acc173, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 173 , "amdgpu_cdna2"); +DEF_REGISTER(acc174, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 174 , "amdgpu_cdna2"); +DEF_REGISTER(acc175, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 175 , "amdgpu_cdna2"); +DEF_REGISTER(acc176, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 176 , "amdgpu_cdna2"); +DEF_REGISTER(acc177, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 177 , "amdgpu_cdna2"); +DEF_REGISTER(acc178, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 178 , "amdgpu_cdna2"); +DEF_REGISTER(acc179, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 179 , "amdgpu_cdna2"); +DEF_REGISTER(acc180, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 180 , "amdgpu_cdna2"); +DEF_REGISTER(acc181, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 181 , "amdgpu_cdna2"); +DEF_REGISTER(acc182, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 182 , "amdgpu_cdna2"); +DEF_REGISTER(acc183, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 183 , "amdgpu_cdna2"); +DEF_REGISTER(acc184, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 184 , "amdgpu_cdna2"); +DEF_REGISTER(acc185, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 185 , "amdgpu_cdna2"); +DEF_REGISTER(acc186, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 186 , "amdgpu_cdna2"); +DEF_REGISTER(acc187, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 187 , "amdgpu_cdna2"); +DEF_REGISTER(acc188, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 188 , "amdgpu_cdna2"); +DEF_REGISTER(acc189, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 189 , "amdgpu_cdna2"); +DEF_REGISTER(acc190, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 190 , "amdgpu_cdna2"); +DEF_REGISTER(acc191, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 191 , "amdgpu_cdna2"); +DEF_REGISTER(acc192, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 192 , "amdgpu_cdna2"); +DEF_REGISTER(acc193, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 193 , "amdgpu_cdna2"); +DEF_REGISTER(acc194, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 194 , "amdgpu_cdna2"); +DEF_REGISTER(acc195, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 195 , "amdgpu_cdna2"); +DEF_REGISTER(acc196, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 196 , "amdgpu_cdna2"); +DEF_REGISTER(acc197, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 197 , "amdgpu_cdna2"); +DEF_REGISTER(acc198, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 198 , "amdgpu_cdna2"); +DEF_REGISTER(acc199, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 199 , "amdgpu_cdna2"); +DEF_REGISTER(acc200, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 200 , "amdgpu_cdna2"); +DEF_REGISTER(acc201, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 201 , "amdgpu_cdna2"); +DEF_REGISTER(acc202, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 202 , "amdgpu_cdna2"); +DEF_REGISTER(acc203, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 203 , "amdgpu_cdna2"); +DEF_REGISTER(acc204, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 204 , "amdgpu_cdna2"); +DEF_REGISTER(acc205, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 205 , "amdgpu_cdna2"); +DEF_REGISTER(acc206, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 206 , "amdgpu_cdna2"); +DEF_REGISTER(acc207, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 207 , "amdgpu_cdna2"); +DEF_REGISTER(acc208, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 208 , "amdgpu_cdna2"); +DEF_REGISTER(acc209, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 209 , "amdgpu_cdna2"); +DEF_REGISTER(acc210, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 210 , "amdgpu_cdna2"); +DEF_REGISTER(acc211, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 211 , "amdgpu_cdna2"); +DEF_REGISTER(acc212, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 212 , "amdgpu_cdna2"); +DEF_REGISTER(acc213, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 213 , "amdgpu_cdna2"); +DEF_REGISTER(acc214, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 214 , "amdgpu_cdna2"); +DEF_REGISTER(acc215, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 215 , "amdgpu_cdna2"); +DEF_REGISTER(acc216, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 216 , "amdgpu_cdna2"); +DEF_REGISTER(acc217, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 217 , "amdgpu_cdna2"); +DEF_REGISTER(acc218, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 218 , "amdgpu_cdna2"); +DEF_REGISTER(acc219, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 219 , "amdgpu_cdna2"); +DEF_REGISTER(acc220, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 220 , "amdgpu_cdna2"); +DEF_REGISTER(acc221, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 221 , "amdgpu_cdna2"); +DEF_REGISTER(acc222, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 222 , "amdgpu_cdna2"); +DEF_REGISTER(acc223, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 223 , "amdgpu_cdna2"); +DEF_REGISTER(acc224, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 224 , "amdgpu_cdna2"); +DEF_REGISTER(acc225, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 225 , "amdgpu_cdna2"); +DEF_REGISTER(acc226, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 226 , "amdgpu_cdna2"); +DEF_REGISTER(acc227, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 227 , "amdgpu_cdna2"); +DEF_REGISTER(acc228, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 228 , "amdgpu_cdna2"); +DEF_REGISTER(acc229, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 229 , "amdgpu_cdna2"); +DEF_REGISTER(acc230, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 230 , "amdgpu_cdna2"); +DEF_REGISTER(acc231, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 231 , "amdgpu_cdna2"); +DEF_REGISTER(acc232, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 232 , "amdgpu_cdna2"); +DEF_REGISTER(acc233, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 233 , "amdgpu_cdna2"); +DEF_REGISTER(acc234, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 234 , "amdgpu_cdna2"); +DEF_REGISTER(acc235, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 235 , "amdgpu_cdna2"); +DEF_REGISTER(acc236, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 236 , "amdgpu_cdna2"); +DEF_REGISTER(acc237, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 237 , "amdgpu_cdna2"); +DEF_REGISTER(acc238, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 238 , "amdgpu_cdna2"); +DEF_REGISTER(acc239, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 239 , "amdgpu_cdna2"); +DEF_REGISTER(acc240, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 240 , "amdgpu_cdna2"); +DEF_REGISTER(acc241, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 241 , "amdgpu_cdna2"); +DEF_REGISTER(acc242, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 242 , "amdgpu_cdna2"); +DEF_REGISTER(acc243, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 243 , "amdgpu_cdna2"); +DEF_REGISTER(acc244, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 244 , "amdgpu_cdna2"); +DEF_REGISTER(acc245, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 245 , "amdgpu_cdna2"); +DEF_REGISTER(acc246, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 246 , "amdgpu_cdna2"); +DEF_REGISTER(acc247, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 247 , "amdgpu_cdna2"); +DEF_REGISTER(acc248, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 248 , "amdgpu_cdna2"); +DEF_REGISTER(acc249, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 249 , "amdgpu_cdna2"); +DEF_REGISTER(acc250, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 250 , "amdgpu_cdna2"); +DEF_REGISTER(acc251, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 251 , "amdgpu_cdna2"); +DEF_REGISTER(acc252, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 252 , "amdgpu_cdna2"); +DEF_REGISTER(acc253, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 253 , "amdgpu_cdna2"); +DEF_REGISTER(acc254, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 254 , "amdgpu_cdna2"); +DEF_REGISTER(acc255, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 255 , "amdgpu_cdna2"); +#endif diff --git a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C new file mode 100644 index 0000000000..d170f06d0c --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C @@ -0,0 +1,6648 @@ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 512 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); +case 513 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); +case 514 : return makeRegisterExpression(amdgpu_cdna2::acc2,0,opr_size); +case 515 : return makeRegisterExpression(amdgpu_cdna2::acc3,0,opr_size); +case 516 : return makeRegisterExpression(amdgpu_cdna2::acc4,0,opr_size); +case 517 : return makeRegisterExpression(amdgpu_cdna2::acc5,0,opr_size); +case 518 : return makeRegisterExpression(amdgpu_cdna2::acc6,0,opr_size); +case 519 : return makeRegisterExpression(amdgpu_cdna2::acc7,0,opr_size); +case 520 : return makeRegisterExpression(amdgpu_cdna2::acc8,0,opr_size); +case 521 : return makeRegisterExpression(amdgpu_cdna2::acc9,0,opr_size); +case 522 : return makeRegisterExpression(amdgpu_cdna2::acc10,0,opr_size); +case 523 : return makeRegisterExpression(amdgpu_cdna2::acc11,0,opr_size); +case 524 : return makeRegisterExpression(amdgpu_cdna2::acc12,0,opr_size); +case 525 : return makeRegisterExpression(amdgpu_cdna2::acc13,0,opr_size); +case 526 : return makeRegisterExpression(amdgpu_cdna2::acc14,0,opr_size); +case 527 : return makeRegisterExpression(amdgpu_cdna2::acc15,0,opr_size); +case 528 : return makeRegisterExpression(amdgpu_cdna2::acc16,0,opr_size); +case 529 : return makeRegisterExpression(amdgpu_cdna2::acc17,0,opr_size); +case 530 : return makeRegisterExpression(amdgpu_cdna2::acc18,0,opr_size); +case 531 : return makeRegisterExpression(amdgpu_cdna2::acc19,0,opr_size); +case 532 : return makeRegisterExpression(amdgpu_cdna2::acc20,0,opr_size); +case 533 : return makeRegisterExpression(amdgpu_cdna2::acc21,0,opr_size); +case 534 : return makeRegisterExpression(amdgpu_cdna2::acc22,0,opr_size); +case 535 : return makeRegisterExpression(amdgpu_cdna2::acc23,0,opr_size); +case 536 : return makeRegisterExpression(amdgpu_cdna2::acc24,0,opr_size); +case 537 : return makeRegisterExpression(amdgpu_cdna2::acc25,0,opr_size); +case 538 : return makeRegisterExpression(amdgpu_cdna2::acc26,0,opr_size); +case 539 : return makeRegisterExpression(amdgpu_cdna2::acc27,0,opr_size); +case 540 : return makeRegisterExpression(amdgpu_cdna2::acc28,0,opr_size); +case 541 : return makeRegisterExpression(amdgpu_cdna2::acc29,0,opr_size); +case 542 : return makeRegisterExpression(amdgpu_cdna2::acc30,0,opr_size); +case 543 : return makeRegisterExpression(amdgpu_cdna2::acc31,0,opr_size); +case 544 : return makeRegisterExpression(amdgpu_cdna2::acc32,0,opr_size); +case 545 : return makeRegisterExpression(amdgpu_cdna2::acc33,0,opr_size); +case 546 : return makeRegisterExpression(amdgpu_cdna2::acc34,0,opr_size); +case 547 : return makeRegisterExpression(amdgpu_cdna2::acc35,0,opr_size); +case 548 : return makeRegisterExpression(amdgpu_cdna2::acc36,0,opr_size); +case 549 : return makeRegisterExpression(amdgpu_cdna2::acc37,0,opr_size); +case 550 : return makeRegisterExpression(amdgpu_cdna2::acc38,0,opr_size); +case 551 : return makeRegisterExpression(amdgpu_cdna2::acc39,0,opr_size); +case 552 : return makeRegisterExpression(amdgpu_cdna2::acc40,0,opr_size); +case 553 : return makeRegisterExpression(amdgpu_cdna2::acc41,0,opr_size); +case 554 : return makeRegisterExpression(amdgpu_cdna2::acc42,0,opr_size); +case 555 : return makeRegisterExpression(amdgpu_cdna2::acc43,0,opr_size); +case 556 : return makeRegisterExpression(amdgpu_cdna2::acc44,0,opr_size); +case 557 : return makeRegisterExpression(amdgpu_cdna2::acc45,0,opr_size); +case 558 : return makeRegisterExpression(amdgpu_cdna2::acc46,0,opr_size); +case 559 : return makeRegisterExpression(amdgpu_cdna2::acc47,0,opr_size); +case 560 : return makeRegisterExpression(amdgpu_cdna2::acc48,0,opr_size); +case 561 : return makeRegisterExpression(amdgpu_cdna2::acc49,0,opr_size); +case 562 : return makeRegisterExpression(amdgpu_cdna2::acc50,0,opr_size); +case 563 : return makeRegisterExpression(amdgpu_cdna2::acc51,0,opr_size); +case 564 : return makeRegisterExpression(amdgpu_cdna2::acc52,0,opr_size); +case 565 : return makeRegisterExpression(amdgpu_cdna2::acc53,0,opr_size); +case 566 : return makeRegisterExpression(amdgpu_cdna2::acc54,0,opr_size); +case 567 : return makeRegisterExpression(amdgpu_cdna2::acc55,0,opr_size); +case 568 : return makeRegisterExpression(amdgpu_cdna2::acc56,0,opr_size); +case 569 : return makeRegisterExpression(amdgpu_cdna2::acc57,0,opr_size); +case 570 : return makeRegisterExpression(amdgpu_cdna2::acc58,0,opr_size); +case 571 : return makeRegisterExpression(amdgpu_cdna2::acc59,0,opr_size); +case 572 : return makeRegisterExpression(amdgpu_cdna2::acc60,0,opr_size); +case 573 : return makeRegisterExpression(amdgpu_cdna2::acc61,0,opr_size); +case 574 : return makeRegisterExpression(amdgpu_cdna2::acc62,0,opr_size); +case 575 : return makeRegisterExpression(amdgpu_cdna2::acc63,0,opr_size); +case 576 : return makeRegisterExpression(amdgpu_cdna2::acc64,0,opr_size); +case 577 : return makeRegisterExpression(amdgpu_cdna2::acc65,0,opr_size); +case 578 : return makeRegisterExpression(amdgpu_cdna2::acc66,0,opr_size); +case 579 : return makeRegisterExpression(amdgpu_cdna2::acc67,0,opr_size); +case 580 : return makeRegisterExpression(amdgpu_cdna2::acc68,0,opr_size); +case 581 : return makeRegisterExpression(amdgpu_cdna2::acc69,0,opr_size); +case 582 : return makeRegisterExpression(amdgpu_cdna2::acc70,0,opr_size); +case 583 : return makeRegisterExpression(amdgpu_cdna2::acc71,0,opr_size); +case 584 : return makeRegisterExpression(amdgpu_cdna2::acc72,0,opr_size); +case 585 : return makeRegisterExpression(amdgpu_cdna2::acc73,0,opr_size); +case 586 : return makeRegisterExpression(amdgpu_cdna2::acc74,0,opr_size); +case 587 : return makeRegisterExpression(amdgpu_cdna2::acc75,0,opr_size); +case 588 : return makeRegisterExpression(amdgpu_cdna2::acc76,0,opr_size); +case 589 : return makeRegisterExpression(amdgpu_cdna2::acc77,0,opr_size); +case 590 : return makeRegisterExpression(amdgpu_cdna2::acc78,0,opr_size); +case 591 : return makeRegisterExpression(amdgpu_cdna2::acc79,0,opr_size); +case 592 : return makeRegisterExpression(amdgpu_cdna2::acc80,0,opr_size); +case 593 : return makeRegisterExpression(amdgpu_cdna2::acc81,0,opr_size); +case 594 : return makeRegisterExpression(amdgpu_cdna2::acc82,0,opr_size); +case 595 : return makeRegisterExpression(amdgpu_cdna2::acc83,0,opr_size); +case 596 : return makeRegisterExpression(amdgpu_cdna2::acc84,0,opr_size); +case 597 : return makeRegisterExpression(amdgpu_cdna2::acc85,0,opr_size); +case 598 : return makeRegisterExpression(amdgpu_cdna2::acc86,0,opr_size); +case 599 : return makeRegisterExpression(amdgpu_cdna2::acc87,0,opr_size); +case 600 : return makeRegisterExpression(amdgpu_cdna2::acc88,0,opr_size); +case 601 : return makeRegisterExpression(amdgpu_cdna2::acc89,0,opr_size); +case 602 : return makeRegisterExpression(amdgpu_cdna2::acc90,0,opr_size); +case 603 : return makeRegisterExpression(amdgpu_cdna2::acc91,0,opr_size); +case 604 : return makeRegisterExpression(amdgpu_cdna2::acc92,0,opr_size); +case 605 : return makeRegisterExpression(amdgpu_cdna2::acc93,0,opr_size); +case 606 : return makeRegisterExpression(amdgpu_cdna2::acc94,0,opr_size); +case 607 : return makeRegisterExpression(amdgpu_cdna2::acc95,0,opr_size); +case 608 : return makeRegisterExpression(amdgpu_cdna2::acc96,0,opr_size); +case 609 : return makeRegisterExpression(amdgpu_cdna2::acc97,0,opr_size); +case 610 : return makeRegisterExpression(amdgpu_cdna2::acc98,0,opr_size); +case 611 : return makeRegisterExpression(amdgpu_cdna2::acc99,0,opr_size); +case 612 : return makeRegisterExpression(amdgpu_cdna2::acc100,0,opr_size); +case 613 : return makeRegisterExpression(amdgpu_cdna2::acc101,0,opr_size); +case 614 : return makeRegisterExpression(amdgpu_cdna2::acc102,0,opr_size); +case 615 : return makeRegisterExpression(amdgpu_cdna2::acc103,0,opr_size); +case 616 : return makeRegisterExpression(amdgpu_cdna2::acc104,0,opr_size); +case 617 : return makeRegisterExpression(amdgpu_cdna2::acc105,0,opr_size); +case 618 : return makeRegisterExpression(amdgpu_cdna2::acc106,0,opr_size); +case 619 : return makeRegisterExpression(amdgpu_cdna2::acc107,0,opr_size); +case 620 : return makeRegisterExpression(amdgpu_cdna2::acc108,0,opr_size); +case 621 : return makeRegisterExpression(amdgpu_cdna2::acc109,0,opr_size); +case 622 : return makeRegisterExpression(amdgpu_cdna2::acc110,0,opr_size); +case 623 : return makeRegisterExpression(amdgpu_cdna2::acc111,0,opr_size); +case 624 : return makeRegisterExpression(amdgpu_cdna2::acc112,0,opr_size); +case 625 : return makeRegisterExpression(amdgpu_cdna2::acc113,0,opr_size); +case 626 : return makeRegisterExpression(amdgpu_cdna2::acc114,0,opr_size); +case 627 : return makeRegisterExpression(amdgpu_cdna2::acc115,0,opr_size); +case 628 : return makeRegisterExpression(amdgpu_cdna2::acc116,0,opr_size); +case 629 : return makeRegisterExpression(amdgpu_cdna2::acc117,0,opr_size); +case 630 : return makeRegisterExpression(amdgpu_cdna2::acc118,0,opr_size); +case 631 : return makeRegisterExpression(amdgpu_cdna2::acc119,0,opr_size); +case 632 : return makeRegisterExpression(amdgpu_cdna2::acc120,0,opr_size); +case 633 : return makeRegisterExpression(amdgpu_cdna2::acc121,0,opr_size); +case 634 : return makeRegisterExpression(amdgpu_cdna2::acc122,0,opr_size); +case 635 : return makeRegisterExpression(amdgpu_cdna2::acc123,0,opr_size); +case 636 : return makeRegisterExpression(amdgpu_cdna2::acc124,0,opr_size); +case 637 : return makeRegisterExpression(amdgpu_cdna2::acc125,0,opr_size); +case 638 : return makeRegisterExpression(amdgpu_cdna2::acc126,0,opr_size); +case 639 : return makeRegisterExpression(amdgpu_cdna2::acc127,0,opr_size); +case 640 : return makeRegisterExpression(amdgpu_cdna2::acc128,0,opr_size); +case 641 : return makeRegisterExpression(amdgpu_cdna2::acc129,0,opr_size); +case 642 : return makeRegisterExpression(amdgpu_cdna2::acc130,0,opr_size); +case 643 : return makeRegisterExpression(amdgpu_cdna2::acc131,0,opr_size); +case 644 : return makeRegisterExpression(amdgpu_cdna2::acc132,0,opr_size); +case 645 : return makeRegisterExpression(amdgpu_cdna2::acc133,0,opr_size); +case 646 : return makeRegisterExpression(amdgpu_cdna2::acc134,0,opr_size); +case 647 : return makeRegisterExpression(amdgpu_cdna2::acc135,0,opr_size); +case 648 : return makeRegisterExpression(amdgpu_cdna2::acc136,0,opr_size); +case 649 : return makeRegisterExpression(amdgpu_cdna2::acc137,0,opr_size); +case 650 : return makeRegisterExpression(amdgpu_cdna2::acc138,0,opr_size); +case 651 : return makeRegisterExpression(amdgpu_cdna2::acc139,0,opr_size); +case 652 : return makeRegisterExpression(amdgpu_cdna2::acc140,0,opr_size); +case 653 : return makeRegisterExpression(amdgpu_cdna2::acc141,0,opr_size); +case 654 : return makeRegisterExpression(amdgpu_cdna2::acc142,0,opr_size); +case 655 : return makeRegisterExpression(amdgpu_cdna2::acc143,0,opr_size); +case 656 : return makeRegisterExpression(amdgpu_cdna2::acc144,0,opr_size); +case 657 : return makeRegisterExpression(amdgpu_cdna2::acc145,0,opr_size); +case 658 : return makeRegisterExpression(amdgpu_cdna2::acc146,0,opr_size); +case 659 : return makeRegisterExpression(amdgpu_cdna2::acc147,0,opr_size); +case 660 : return makeRegisterExpression(amdgpu_cdna2::acc148,0,opr_size); +case 661 : return makeRegisterExpression(amdgpu_cdna2::acc149,0,opr_size); +case 662 : return makeRegisterExpression(amdgpu_cdna2::acc150,0,opr_size); +case 663 : return makeRegisterExpression(amdgpu_cdna2::acc151,0,opr_size); +case 664 : return makeRegisterExpression(amdgpu_cdna2::acc152,0,opr_size); +case 665 : return makeRegisterExpression(amdgpu_cdna2::acc153,0,opr_size); +case 666 : return makeRegisterExpression(amdgpu_cdna2::acc154,0,opr_size); +case 667 : return makeRegisterExpression(amdgpu_cdna2::acc155,0,opr_size); +case 668 : return makeRegisterExpression(amdgpu_cdna2::acc156,0,opr_size); +case 669 : return makeRegisterExpression(amdgpu_cdna2::acc157,0,opr_size); +case 670 : return makeRegisterExpression(amdgpu_cdna2::acc158,0,opr_size); +case 671 : return makeRegisterExpression(amdgpu_cdna2::acc159,0,opr_size); +case 672 : return makeRegisterExpression(amdgpu_cdna2::acc160,0,opr_size); +case 673 : return makeRegisterExpression(amdgpu_cdna2::acc161,0,opr_size); +case 674 : return makeRegisterExpression(amdgpu_cdna2::acc162,0,opr_size); +case 675 : return makeRegisterExpression(amdgpu_cdna2::acc163,0,opr_size); +case 676 : return makeRegisterExpression(amdgpu_cdna2::acc164,0,opr_size); +case 677 : return makeRegisterExpression(amdgpu_cdna2::acc165,0,opr_size); +case 678 : return makeRegisterExpression(amdgpu_cdna2::acc166,0,opr_size); +case 679 : return makeRegisterExpression(amdgpu_cdna2::acc167,0,opr_size); +case 680 : return makeRegisterExpression(amdgpu_cdna2::acc168,0,opr_size); +case 681 : return makeRegisterExpression(amdgpu_cdna2::acc169,0,opr_size); +case 682 : return makeRegisterExpression(amdgpu_cdna2::acc170,0,opr_size); +case 683 : return makeRegisterExpression(amdgpu_cdna2::acc171,0,opr_size); +case 684 : return makeRegisterExpression(amdgpu_cdna2::acc172,0,opr_size); +case 685 : return makeRegisterExpression(amdgpu_cdna2::acc173,0,opr_size); +case 686 : return makeRegisterExpression(amdgpu_cdna2::acc174,0,opr_size); +case 687 : return makeRegisterExpression(amdgpu_cdna2::acc175,0,opr_size); +case 688 : return makeRegisterExpression(amdgpu_cdna2::acc176,0,opr_size); +case 689 : return makeRegisterExpression(amdgpu_cdna2::acc177,0,opr_size); +case 690 : return makeRegisterExpression(amdgpu_cdna2::acc178,0,opr_size); +case 691 : return makeRegisterExpression(amdgpu_cdna2::acc179,0,opr_size); +case 692 : return makeRegisterExpression(amdgpu_cdna2::acc180,0,opr_size); +case 693 : return makeRegisterExpression(amdgpu_cdna2::acc181,0,opr_size); +case 694 : return makeRegisterExpression(amdgpu_cdna2::acc182,0,opr_size); +case 695 : return makeRegisterExpression(amdgpu_cdna2::acc183,0,opr_size); +case 696 : return makeRegisterExpression(amdgpu_cdna2::acc184,0,opr_size); +case 697 : return makeRegisterExpression(amdgpu_cdna2::acc185,0,opr_size); +case 698 : return makeRegisterExpression(amdgpu_cdna2::acc186,0,opr_size); +case 699 : return makeRegisterExpression(amdgpu_cdna2::acc187,0,opr_size); +case 700 : return makeRegisterExpression(amdgpu_cdna2::acc188,0,opr_size); +case 701 : return makeRegisterExpression(amdgpu_cdna2::acc189,0,opr_size); +case 702 : return makeRegisterExpression(amdgpu_cdna2::acc190,0,opr_size); +case 703 : return makeRegisterExpression(amdgpu_cdna2::acc191,0,opr_size); +case 704 : return makeRegisterExpression(amdgpu_cdna2::acc192,0,opr_size); +case 705 : return makeRegisterExpression(amdgpu_cdna2::acc193,0,opr_size); +case 706 : return makeRegisterExpression(amdgpu_cdna2::acc194,0,opr_size); +case 707 : return makeRegisterExpression(amdgpu_cdna2::acc195,0,opr_size); +case 708 : return makeRegisterExpression(amdgpu_cdna2::acc196,0,opr_size); +case 709 : return makeRegisterExpression(amdgpu_cdna2::acc197,0,opr_size); +case 710 : return makeRegisterExpression(amdgpu_cdna2::acc198,0,opr_size); +case 711 : return makeRegisterExpression(amdgpu_cdna2::acc199,0,opr_size); +case 712 : return makeRegisterExpression(amdgpu_cdna2::acc200,0,opr_size); +case 713 : return makeRegisterExpression(amdgpu_cdna2::acc201,0,opr_size); +case 714 : return makeRegisterExpression(amdgpu_cdna2::acc202,0,opr_size); +case 715 : return makeRegisterExpression(amdgpu_cdna2::acc203,0,opr_size); +case 716 : return makeRegisterExpression(amdgpu_cdna2::acc204,0,opr_size); +case 717 : return makeRegisterExpression(amdgpu_cdna2::acc205,0,opr_size); +case 718 : return makeRegisterExpression(amdgpu_cdna2::acc206,0,opr_size); +case 719 : return makeRegisterExpression(amdgpu_cdna2::acc207,0,opr_size); +case 720 : return makeRegisterExpression(amdgpu_cdna2::acc208,0,opr_size); +case 721 : return makeRegisterExpression(amdgpu_cdna2::acc209,0,opr_size); +case 722 : return makeRegisterExpression(amdgpu_cdna2::acc210,0,opr_size); +case 723 : return makeRegisterExpression(amdgpu_cdna2::acc211,0,opr_size); +case 724 : return makeRegisterExpression(amdgpu_cdna2::acc212,0,opr_size); +case 725 : return makeRegisterExpression(amdgpu_cdna2::acc213,0,opr_size); +case 726 : return makeRegisterExpression(amdgpu_cdna2::acc214,0,opr_size); +case 727 : return makeRegisterExpression(amdgpu_cdna2::acc215,0,opr_size); +case 728 : return makeRegisterExpression(amdgpu_cdna2::acc216,0,opr_size); +case 729 : return makeRegisterExpression(amdgpu_cdna2::acc217,0,opr_size); +case 730 : return makeRegisterExpression(amdgpu_cdna2::acc218,0,opr_size); +case 731 : return makeRegisterExpression(amdgpu_cdna2::acc219,0,opr_size); +case 732 : return makeRegisterExpression(amdgpu_cdna2::acc220,0,opr_size); +case 733 : return makeRegisterExpression(amdgpu_cdna2::acc221,0,opr_size); +case 734 : return makeRegisterExpression(amdgpu_cdna2::acc222,0,opr_size); +case 735 : return makeRegisterExpression(amdgpu_cdna2::acc223,0,opr_size); +case 736 : return makeRegisterExpression(amdgpu_cdna2::acc224,0,opr_size); +case 737 : return makeRegisterExpression(amdgpu_cdna2::acc225,0,opr_size); +case 738 : return makeRegisterExpression(amdgpu_cdna2::acc226,0,opr_size); +case 739 : return makeRegisterExpression(amdgpu_cdna2::acc227,0,opr_size); +case 740 : return makeRegisterExpression(amdgpu_cdna2::acc228,0,opr_size); +case 741 : return makeRegisterExpression(amdgpu_cdna2::acc229,0,opr_size); +case 742 : return makeRegisterExpression(amdgpu_cdna2::acc230,0,opr_size); +case 743 : return makeRegisterExpression(amdgpu_cdna2::acc231,0,opr_size); +case 744 : return makeRegisterExpression(amdgpu_cdna2::acc232,0,opr_size); +case 745 : return makeRegisterExpression(amdgpu_cdna2::acc233,0,opr_size); +case 746 : return makeRegisterExpression(amdgpu_cdna2::acc234,0,opr_size); +case 747 : return makeRegisterExpression(amdgpu_cdna2::acc235,0,opr_size); +case 748 : return makeRegisterExpression(amdgpu_cdna2::acc236,0,opr_size); +case 749 : return makeRegisterExpression(amdgpu_cdna2::acc237,0,opr_size); +case 750 : return makeRegisterExpression(amdgpu_cdna2::acc238,0,opr_size); +case 751 : return makeRegisterExpression(amdgpu_cdna2::acc239,0,opr_size); +case 752 : return makeRegisterExpression(amdgpu_cdna2::acc240,0,opr_size); +case 753 : return makeRegisterExpression(amdgpu_cdna2::acc241,0,opr_size); +case 754 : return makeRegisterExpression(amdgpu_cdna2::acc242,0,opr_size); +case 755 : return makeRegisterExpression(amdgpu_cdna2::acc243,0,opr_size); +case 756 : return makeRegisterExpression(amdgpu_cdna2::acc244,0,opr_size); +case 757 : return makeRegisterExpression(amdgpu_cdna2::acc245,0,opr_size); +case 758 : return makeRegisterExpression(amdgpu_cdna2::acc246,0,opr_size); +case 759 : return makeRegisterExpression(amdgpu_cdna2::acc247,0,opr_size); +case 760 : return makeRegisterExpression(amdgpu_cdna2::acc248,0,opr_size); +case 761 : return makeRegisterExpression(amdgpu_cdna2::acc249,0,opr_size); +case 762 : return makeRegisterExpression(amdgpu_cdna2::acc250,0,opr_size); +case 763 : return makeRegisterExpression(amdgpu_cdna2::acc251,0,opr_size); +case 764 : return makeRegisterExpression(amdgpu_cdna2::acc252,0,opr_size); +case 765 : return makeRegisterExpression(amdgpu_cdna2::acc253,0,opr_size); +case 766 : return makeRegisterExpression(amdgpu_cdna2::acc254,0,opr_size); +case 767 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_ATTR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::attr0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::attr1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::attr2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::attr3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::attr4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::attr5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::attr6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::attr7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::attr8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::attr9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::attr10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::attr11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::attr12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::attr13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::attr14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::attr15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::attr16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::attr17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::attr18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::attr19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::attr20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::attr21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::attr22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::attr23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::attr24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::attr25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::attr26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::attr27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::attr28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::attr29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::attr30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::attr31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::attr32,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_FLAT_SCRATCH(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_all,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PARAM(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::p10,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::p20,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::p0,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::pc_all); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST_EXEC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST_M0(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SMEM_OFFSET(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 768 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_cdna2::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_cdna2::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_cdna2::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_cdna2::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_cdna2::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_cdna2::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_cdna2::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_cdna2::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_cdna2::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_cdna2::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_cdna2::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_cdna2::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_cdna2::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_cdna2::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_cdna2::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_cdna2::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_cdna2::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_cdna2::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_cdna2::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_cdna2::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_cdna2::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_cdna2::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_cdna2::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_cdna2::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_cdna2::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_cdna2::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_cdna2::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_cdna2::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_cdna2::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_cdna2::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_cdna2::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_cdna2::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_cdna2::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_cdna2::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_cdna2::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_cdna2::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_cdna2::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_cdna2::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_cdna2::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_cdna2::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_cdna2::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_cdna2::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_cdna2::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_cdna2::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_cdna2::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_cdna2::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_cdna2::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_cdna2::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_cdna2::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_cdna2::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_cdna2::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_cdna2::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_cdna2::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_cdna2::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_cdna2::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_cdna2::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_cdna2::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_cdna2::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_cdna2::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_cdna2::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_cdna2::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_cdna2::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_cdna2::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_cdna2::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_cdna2::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_cdna2::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_cdna2::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_cdna2::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_cdna2::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_cdna2::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_cdna2::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_cdna2::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_cdna2::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_cdna2::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_cdna2::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_cdna2::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_cdna2::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_cdna2::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_cdna2::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_cdna2::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_cdna2::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_cdna2::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_cdna2::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_cdna2::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_cdna2::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_cdna2::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_cdna2::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_cdna2::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_cdna2::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_cdna2::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_cdna2::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_cdna2::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_cdna2::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_cdna2::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_cdna2::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_cdna2::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_cdna2::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_cdna2::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_cdna2::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_cdna2::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_cdna2::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_cdna2::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_cdna2::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_cdna2::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_cdna2::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_cdna2::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_cdna2::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_cdna2::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_cdna2::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_cdna2::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_cdna2::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_cdna2::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_cdna2::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_cdna2::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_cdna2::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_cdna2::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_cdna2::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_cdna2::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_cdna2::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_cdna2::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_cdna2::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_cdna2::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_cdna2::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_cdna2::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_cdna2::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_cdna2::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_cdna2::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_cdna2::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_cdna2::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_cdna2::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_cdna2::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_cdna2::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_cdna2::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_cdna2::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_cdna2::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_cdna2::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_cdna2::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_cdna2::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_cdna2::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_cdna2::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_cdna2::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_cdna2::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_cdna2::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_cdna2::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_cdna2::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_cdna2::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_cdna2::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_cdna2::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_cdna2::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_cdna2::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_cdna2::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_cdna2::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_cdna2::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_cdna2::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_cdna2::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_cdna2::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_cdna2::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_cdna2::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_cdna2::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_cdna2::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_cdna2::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_cdna2::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_cdna2::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_cdna2::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_cdna2::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_cdna2::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_cdna2::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_cdna2::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_cdna2::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_cdna2::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_cdna2::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_cdna2::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_cdna2::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_cdna2::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_cdna2::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_cdna2::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_cdna2::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_cdna2::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_cdna2::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_cdna2::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_cdna2::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_cdna2::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_cdna2::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_cdna2::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_cdna2::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_cdna2::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_cdna2::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_cdna2::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_cdna2::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_cdna2::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_cdna2::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_cdna2::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_cdna2::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_cdna2::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_cdna2::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_cdna2::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_cdna2::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_cdna2::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_cdna2::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_cdna2::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_cdna2::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_cdna2::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_cdna2::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_cdna2::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_cdna2::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_cdna2::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_cdna2::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_cdna2::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_cdna2::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_cdna2::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_cdna2::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_cdna2::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_cdna2::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_cdna2::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_cdna2::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_cdna2::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_cdna2::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_cdna2::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_cdna2::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_cdna2::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_cdna2::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_cdna2::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_cdna2::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_cdna2::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_cdna2::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_cdna2::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_cdna2::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_cdna2::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_cdna2::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_cdna2::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_cdna2::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_cdna2::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_cdna2::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_cdna2::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_cdna2::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_cdna2::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_cdna2::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_cdna2::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_cdna2::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_cdna2::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_cdna2::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_cdna2::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_cdna2::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_cdna2::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_cdna2::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_cdna2::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_cdna2::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_cdna2::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_cdna2::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_cdna2::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_cdna2::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_cdna2::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_cdna2::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_NOLDS(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_NOLIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_SIMPLE(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +case 768 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_cdna2::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_cdna2::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_cdna2::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_cdna2::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_cdna2::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_cdna2::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_cdna2::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_cdna2::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_cdna2::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_cdna2::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_cdna2::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_cdna2::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_cdna2::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_cdna2::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_cdna2::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_cdna2::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_cdna2::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_cdna2::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_cdna2::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_cdna2::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_cdna2::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_cdna2::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_cdna2::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_cdna2::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_cdna2::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_cdna2::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_cdna2::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_cdna2::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_cdna2::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_cdna2::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_cdna2::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_cdna2::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_cdna2::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_cdna2::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_cdna2::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_cdna2::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_cdna2::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_cdna2::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_cdna2::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_cdna2::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_cdna2::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_cdna2::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_cdna2::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_cdna2::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_cdna2::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_cdna2::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_cdna2::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_cdna2::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_cdna2::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_cdna2::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_cdna2::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_cdna2::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_cdna2::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_cdna2::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_cdna2::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_cdna2::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_cdna2::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_cdna2::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_cdna2::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_cdna2::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_cdna2::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_cdna2::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_cdna2::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_cdna2::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_cdna2::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_cdna2::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_cdna2::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_cdna2::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_cdna2::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_cdna2::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_cdna2::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_cdna2::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_cdna2::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_cdna2::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_cdna2::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_cdna2::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_cdna2::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_cdna2::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_cdna2::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_cdna2::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_cdna2::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_cdna2::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_cdna2::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_cdna2::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_cdna2::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_cdna2::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_cdna2::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_cdna2::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_cdna2::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_cdna2::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_cdna2::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_cdna2::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_cdna2::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_cdna2::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_cdna2::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_cdna2::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_cdna2::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_cdna2::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_cdna2::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_cdna2::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_cdna2::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_cdna2::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_cdna2::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_cdna2::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_cdna2::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_cdna2::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_cdna2::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_cdna2::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_cdna2::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_cdna2::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_cdna2::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_cdna2::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_cdna2::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_cdna2::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_cdna2::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_cdna2::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_cdna2::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_cdna2::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_cdna2::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_cdna2::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_cdna2::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_cdna2::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_cdna2::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_cdna2::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_cdna2::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_cdna2::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_cdna2::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_cdna2::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_cdna2::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_cdna2::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_cdna2::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_cdna2::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_cdna2::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_cdna2::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_cdna2::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_cdna2::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_cdna2::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_cdna2::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_cdna2::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_cdna2::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_cdna2::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_cdna2::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_cdna2::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_cdna2::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_cdna2::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_cdna2::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_cdna2::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_cdna2::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_cdna2::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_cdna2::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_cdna2::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_cdna2::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_cdna2::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_cdna2::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_cdna2::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_cdna2::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_cdna2::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_cdna2::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_cdna2::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_cdna2::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_cdna2::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_cdna2::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_cdna2::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_cdna2::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_cdna2::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_cdna2::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_cdna2::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_cdna2::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_cdna2::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_cdna2::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_cdna2::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_cdna2::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_cdna2::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_cdna2::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_cdna2::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_cdna2::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_cdna2::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_cdna2::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_cdna2::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_cdna2::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_cdna2::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_cdna2::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_cdna2::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_cdna2::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_cdna2::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_cdna2::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_cdna2::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_cdna2::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_cdna2::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_cdna2::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_cdna2::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_cdna2::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_cdna2::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_cdna2::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_cdna2::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_cdna2::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_cdna2::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_cdna2::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_cdna2::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_cdna2::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_cdna2::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_cdna2::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_cdna2::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_cdna2::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_cdna2::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_cdna2::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_cdna2::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_cdna2::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_cdna2::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_cdna2::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_cdna2::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_cdna2::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_cdna2::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_cdna2::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_cdna2::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_cdna2::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_cdna2::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_cdna2::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_cdna2::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_cdna2::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_cdna2::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_cdna2::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_cdna2::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_cdna2::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_cdna2::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_cdna2::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_cdna2::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_cdna2::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_cdna2::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_cdna2::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_cdna2::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_cdna2::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_cdna2::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_cdna2::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_cdna2::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_cdna2::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_cdna2::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_cdna2::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_cdna2::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_cdna2::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_cdna2::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_cdna2::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_cdna2::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_cdna2::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_cdna2::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_cdna2::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_cdna2::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_cdna2::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_cdna2::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_cdna2::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_cdna2::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_cdna2::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_cdna2::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +case 768 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_cdna2::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_cdna2::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_cdna2::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_cdna2::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_cdna2::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_cdna2::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_cdna2::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_cdna2::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_cdna2::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_cdna2::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_cdna2::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_cdna2::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_cdna2::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_cdna2::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_cdna2::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_cdna2::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_cdna2::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_cdna2::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_cdna2::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_cdna2::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_cdna2::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_cdna2::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_cdna2::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_cdna2::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_cdna2::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_cdna2::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_cdna2::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_cdna2::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_cdna2::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_cdna2::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_cdna2::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_cdna2::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_cdna2::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_cdna2::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_cdna2::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_cdna2::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_cdna2::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_cdna2::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_cdna2::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_cdna2::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_cdna2::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_cdna2::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_cdna2::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_cdna2::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_cdna2::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_cdna2::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_cdna2::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_cdna2::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_cdna2::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_cdna2::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_cdna2::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_cdna2::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_cdna2::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_cdna2::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_cdna2::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_cdna2::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_cdna2::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_cdna2::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_cdna2::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_cdna2::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_cdna2::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_cdna2::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_cdna2::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_cdna2::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_cdna2::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_cdna2::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_cdna2::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_cdna2::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_cdna2::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_cdna2::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_cdna2::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_cdna2::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_cdna2::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_cdna2::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_cdna2::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_cdna2::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_cdna2::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_cdna2::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_cdna2::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_cdna2::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_cdna2::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_cdna2::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_cdna2::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_cdna2::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_cdna2::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_cdna2::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_cdna2::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_cdna2::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_cdna2::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_cdna2::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_cdna2::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_cdna2::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_cdna2::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_cdna2::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_cdna2::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_cdna2::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_cdna2::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_cdna2::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_cdna2::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_cdna2::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_cdna2::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_cdna2::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_cdna2::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_cdna2::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_cdna2::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_cdna2::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_cdna2::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_cdna2::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_cdna2::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_cdna2::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_cdna2::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_cdna2::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_cdna2::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_cdna2::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_cdna2::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_cdna2::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_cdna2::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_cdna2::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_cdna2::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_cdna2::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_cdna2::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_cdna2::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_cdna2::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_cdna2::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_cdna2::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_cdna2::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_cdna2::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_cdna2::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_cdna2::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_cdna2::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_cdna2::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_cdna2::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_cdna2::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_cdna2::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_cdna2::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_cdna2::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_cdna2::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_cdna2::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_cdna2::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_cdna2::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_cdna2::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_cdna2::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_cdna2::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_cdna2::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_cdna2::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_cdna2::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_cdna2::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_cdna2::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_cdna2::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_cdna2::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_cdna2::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_cdna2::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_cdna2::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_cdna2::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_cdna2::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_cdna2::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_cdna2::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_cdna2::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_cdna2::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_cdna2::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_cdna2::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_cdna2::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_cdna2::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_cdna2::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_cdna2::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_cdna2::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_cdna2::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_cdna2::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_cdna2::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_cdna2::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_cdna2::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_cdna2::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_cdna2::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_cdna2::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_cdna2::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_cdna2::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_cdna2::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_cdna2::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_cdna2::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_cdna2::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_cdna2::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_cdna2::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_cdna2::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_cdna2::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_cdna2::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_cdna2::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_cdna2::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_cdna2::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_cdna2::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_cdna2::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_cdna2::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_cdna2::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_cdna2::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_cdna2::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_cdna2::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_cdna2::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_cdna2::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_cdna2::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_cdna2::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_cdna2::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_cdna2::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_cdna2::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_cdna2::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_cdna2::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_cdna2::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_cdna2::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_cdna2::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_cdna2::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_cdna2::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_cdna2::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_cdna2::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_cdna2::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_cdna2::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_cdna2::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_cdna2::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_cdna2::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_cdna2::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_cdna2::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_cdna2::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_cdna2::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_cdna2::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_cdna2::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_cdna2::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_cdna2::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_cdna2::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_cdna2::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_cdna2::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_cdna2::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_cdna2::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_cdna2::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_cdna2::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_cdna2::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_cdna2::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_cdna2::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_cdna2::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_cdna2::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_cdna2::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_cdna2::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_cdna2::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_cdna2::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_cdna2::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_cdna2::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_cdna2::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_cdna2::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_cdna2::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_cdna2::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_cdna2::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_cdna2::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_cdna2::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_cdna2::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_cdna2::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_cdna2::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_cdna2::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SREG(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SREG_NOVCC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_0_63_INLINES(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_INLINES(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_LANESEL(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_NOLIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_TGT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::mrt0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::mrt1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::mrt2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::mrt3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::mrt4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::mrt5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::mrt6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::mrt7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::mrtz,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::null,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::pos0,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::pos1,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::pos2,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::pos3,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::param0,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::param1,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::param2,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::param3,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::param4,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::param5,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::param6,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::param7,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::param8,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::param9,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::param10,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::param11,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::param12,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::param13,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::param14,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::param15,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::param16,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::param17,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::param18,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::param19,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::param20,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::param21,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::param22,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::param23,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::param24,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::param25,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::param26,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::param27,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::param28,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::param29,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::param30,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::param31,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_TRAP(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::vcc); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC_LOHI(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 125 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 128 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 129 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 130 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 131 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 132 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 133 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 134 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 135 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 136 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 137 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 138 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 139 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 140 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 141 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 142 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 143 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 144 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 145 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 146 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 147 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 148 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 149 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 150 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 151 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 152 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 153 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 154 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 155 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 156 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 157 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 158 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 159 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 160 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 161 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 162 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 163 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 164 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 165 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 166 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 167 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 168 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 169 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 170 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 171 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 172 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 173 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 174 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 175 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 176 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 177 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 178 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 179 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 180 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 181 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 182 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 183 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 184 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 185 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 186 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 187 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 188 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 189 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 190 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 191 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 192 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 193 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 194 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 195 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 196 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 197 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 198 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 199 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 200 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 201 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 202 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 203 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 204 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 205 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 206 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 207 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 208 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 209 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 210 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 211 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 212 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 213 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 214 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 215 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 216 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 217 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 218 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 219 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 220 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 221 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 222 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 223 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 224 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 225 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 226 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 227 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 228 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 229 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 230 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 231 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 232 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 233 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 234 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 240 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 241 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 242 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 243 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 244 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 245 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 246 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 247 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 248 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 249 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 250 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR_OR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 125 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 128 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 129 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 130 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 131 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 132 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 133 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 134 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 135 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 136 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 137 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 138 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 139 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 140 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 141 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 142 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 143 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 144 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 145 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 146 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 147 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 148 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 149 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 150 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 151 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 152 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 153 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 154 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 155 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 156 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 157 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 158 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 159 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 160 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 161 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 162 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 163 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 164 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 165 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 166 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 167 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 168 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 169 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 170 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 171 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 172 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 173 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 174 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 175 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 176 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 177 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 178 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 179 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 180 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 181 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 182 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 183 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 184 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 185 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 186 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 187 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 188 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 189 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 190 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 191 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 192 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 193 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 194 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 195 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 196 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 197 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 198 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 199 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 200 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 201 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 202 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 203 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 204 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 205 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 206 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 207 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 208 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 209 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 210 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 211 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 212 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 213 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 214 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 215 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 216 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 217 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 218 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 219 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 220 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 221 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 222 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 223 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 224 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 225 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 226 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 227 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 228 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 229 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 230 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 231 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 232 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 233 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 234 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 240 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 241 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 242 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 243 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 244 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 245 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 246 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 247 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 248 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 249 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 250 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +case 512 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); +case 513 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); +case 514 : return makeRegisterExpression(amdgpu_cdna2::acc2,0,opr_size); +case 515 : return makeRegisterExpression(amdgpu_cdna2::acc3,0,opr_size); +case 516 : return makeRegisterExpression(amdgpu_cdna2::acc4,0,opr_size); +case 517 : return makeRegisterExpression(amdgpu_cdna2::acc5,0,opr_size); +case 518 : return makeRegisterExpression(amdgpu_cdna2::acc6,0,opr_size); +case 519 : return makeRegisterExpression(amdgpu_cdna2::acc7,0,opr_size); +case 520 : return makeRegisterExpression(amdgpu_cdna2::acc8,0,opr_size); +case 521 : return makeRegisterExpression(amdgpu_cdna2::acc9,0,opr_size); +case 522 : return makeRegisterExpression(amdgpu_cdna2::acc10,0,opr_size); +case 523 : return makeRegisterExpression(amdgpu_cdna2::acc11,0,opr_size); +case 524 : return makeRegisterExpression(amdgpu_cdna2::acc12,0,opr_size); +case 525 : return makeRegisterExpression(amdgpu_cdna2::acc13,0,opr_size); +case 526 : return makeRegisterExpression(amdgpu_cdna2::acc14,0,opr_size); +case 527 : return makeRegisterExpression(amdgpu_cdna2::acc15,0,opr_size); +case 528 : return makeRegisterExpression(amdgpu_cdna2::acc16,0,opr_size); +case 529 : return makeRegisterExpression(amdgpu_cdna2::acc17,0,opr_size); +case 530 : return makeRegisterExpression(amdgpu_cdna2::acc18,0,opr_size); +case 531 : return makeRegisterExpression(amdgpu_cdna2::acc19,0,opr_size); +case 532 : return makeRegisterExpression(amdgpu_cdna2::acc20,0,opr_size); +case 533 : return makeRegisterExpression(amdgpu_cdna2::acc21,0,opr_size); +case 534 : return makeRegisterExpression(amdgpu_cdna2::acc22,0,opr_size); +case 535 : return makeRegisterExpression(amdgpu_cdna2::acc23,0,opr_size); +case 536 : return makeRegisterExpression(amdgpu_cdna2::acc24,0,opr_size); +case 537 : return makeRegisterExpression(amdgpu_cdna2::acc25,0,opr_size); +case 538 : return makeRegisterExpression(amdgpu_cdna2::acc26,0,opr_size); +case 539 : return makeRegisterExpression(amdgpu_cdna2::acc27,0,opr_size); +case 540 : return makeRegisterExpression(amdgpu_cdna2::acc28,0,opr_size); +case 541 : return makeRegisterExpression(amdgpu_cdna2::acc29,0,opr_size); +case 542 : return makeRegisterExpression(amdgpu_cdna2::acc30,0,opr_size); +case 543 : return makeRegisterExpression(amdgpu_cdna2::acc31,0,opr_size); +case 544 : return makeRegisterExpression(amdgpu_cdna2::acc32,0,opr_size); +case 545 : return makeRegisterExpression(amdgpu_cdna2::acc33,0,opr_size); +case 546 : return makeRegisterExpression(amdgpu_cdna2::acc34,0,opr_size); +case 547 : return makeRegisterExpression(amdgpu_cdna2::acc35,0,opr_size); +case 548 : return makeRegisterExpression(amdgpu_cdna2::acc36,0,opr_size); +case 549 : return makeRegisterExpression(amdgpu_cdna2::acc37,0,opr_size); +case 550 : return makeRegisterExpression(amdgpu_cdna2::acc38,0,opr_size); +case 551 : return makeRegisterExpression(amdgpu_cdna2::acc39,0,opr_size); +case 552 : return makeRegisterExpression(amdgpu_cdna2::acc40,0,opr_size); +case 553 : return makeRegisterExpression(amdgpu_cdna2::acc41,0,opr_size); +case 554 : return makeRegisterExpression(amdgpu_cdna2::acc42,0,opr_size); +case 555 : return makeRegisterExpression(amdgpu_cdna2::acc43,0,opr_size); +case 556 : return makeRegisterExpression(amdgpu_cdna2::acc44,0,opr_size); +case 557 : return makeRegisterExpression(amdgpu_cdna2::acc45,0,opr_size); +case 558 : return makeRegisterExpression(amdgpu_cdna2::acc46,0,opr_size); +case 559 : return makeRegisterExpression(amdgpu_cdna2::acc47,0,opr_size); +case 560 : return makeRegisterExpression(amdgpu_cdna2::acc48,0,opr_size); +case 561 : return makeRegisterExpression(amdgpu_cdna2::acc49,0,opr_size); +case 562 : return makeRegisterExpression(amdgpu_cdna2::acc50,0,opr_size); +case 563 : return makeRegisterExpression(amdgpu_cdna2::acc51,0,opr_size); +case 564 : return makeRegisterExpression(amdgpu_cdna2::acc52,0,opr_size); +case 565 : return makeRegisterExpression(amdgpu_cdna2::acc53,0,opr_size); +case 566 : return makeRegisterExpression(amdgpu_cdna2::acc54,0,opr_size); +case 567 : return makeRegisterExpression(amdgpu_cdna2::acc55,0,opr_size); +case 568 : return makeRegisterExpression(amdgpu_cdna2::acc56,0,opr_size); +case 569 : return makeRegisterExpression(amdgpu_cdna2::acc57,0,opr_size); +case 570 : return makeRegisterExpression(amdgpu_cdna2::acc58,0,opr_size); +case 571 : return makeRegisterExpression(amdgpu_cdna2::acc59,0,opr_size); +case 572 : return makeRegisterExpression(amdgpu_cdna2::acc60,0,opr_size); +case 573 : return makeRegisterExpression(amdgpu_cdna2::acc61,0,opr_size); +case 574 : return makeRegisterExpression(amdgpu_cdna2::acc62,0,opr_size); +case 575 : return makeRegisterExpression(amdgpu_cdna2::acc63,0,opr_size); +case 576 : return makeRegisterExpression(amdgpu_cdna2::acc64,0,opr_size); +case 577 : return makeRegisterExpression(amdgpu_cdna2::acc65,0,opr_size); +case 578 : return makeRegisterExpression(amdgpu_cdna2::acc66,0,opr_size); +case 579 : return makeRegisterExpression(amdgpu_cdna2::acc67,0,opr_size); +case 580 : return makeRegisterExpression(amdgpu_cdna2::acc68,0,opr_size); +case 581 : return makeRegisterExpression(amdgpu_cdna2::acc69,0,opr_size); +case 582 : return makeRegisterExpression(amdgpu_cdna2::acc70,0,opr_size); +case 583 : return makeRegisterExpression(amdgpu_cdna2::acc71,0,opr_size); +case 584 : return makeRegisterExpression(amdgpu_cdna2::acc72,0,opr_size); +case 585 : return makeRegisterExpression(amdgpu_cdna2::acc73,0,opr_size); +case 586 : return makeRegisterExpression(amdgpu_cdna2::acc74,0,opr_size); +case 587 : return makeRegisterExpression(amdgpu_cdna2::acc75,0,opr_size); +case 588 : return makeRegisterExpression(amdgpu_cdna2::acc76,0,opr_size); +case 589 : return makeRegisterExpression(amdgpu_cdna2::acc77,0,opr_size); +case 590 : return makeRegisterExpression(amdgpu_cdna2::acc78,0,opr_size); +case 591 : return makeRegisterExpression(amdgpu_cdna2::acc79,0,opr_size); +case 592 : return makeRegisterExpression(amdgpu_cdna2::acc80,0,opr_size); +case 593 : return makeRegisterExpression(amdgpu_cdna2::acc81,0,opr_size); +case 594 : return makeRegisterExpression(amdgpu_cdna2::acc82,0,opr_size); +case 595 : return makeRegisterExpression(amdgpu_cdna2::acc83,0,opr_size); +case 596 : return makeRegisterExpression(amdgpu_cdna2::acc84,0,opr_size); +case 597 : return makeRegisterExpression(amdgpu_cdna2::acc85,0,opr_size); +case 598 : return makeRegisterExpression(amdgpu_cdna2::acc86,0,opr_size); +case 599 : return makeRegisterExpression(amdgpu_cdna2::acc87,0,opr_size); +case 600 : return makeRegisterExpression(amdgpu_cdna2::acc88,0,opr_size); +case 601 : return makeRegisterExpression(amdgpu_cdna2::acc89,0,opr_size); +case 602 : return makeRegisterExpression(amdgpu_cdna2::acc90,0,opr_size); +case 603 : return makeRegisterExpression(amdgpu_cdna2::acc91,0,opr_size); +case 604 : return makeRegisterExpression(amdgpu_cdna2::acc92,0,opr_size); +case 605 : return makeRegisterExpression(amdgpu_cdna2::acc93,0,opr_size); +case 606 : return makeRegisterExpression(amdgpu_cdna2::acc94,0,opr_size); +case 607 : return makeRegisterExpression(amdgpu_cdna2::acc95,0,opr_size); +case 608 : return makeRegisterExpression(amdgpu_cdna2::acc96,0,opr_size); +case 609 : return makeRegisterExpression(amdgpu_cdna2::acc97,0,opr_size); +case 610 : return makeRegisterExpression(amdgpu_cdna2::acc98,0,opr_size); +case 611 : return makeRegisterExpression(amdgpu_cdna2::acc99,0,opr_size); +case 612 : return makeRegisterExpression(amdgpu_cdna2::acc100,0,opr_size); +case 613 : return makeRegisterExpression(amdgpu_cdna2::acc101,0,opr_size); +case 614 : return makeRegisterExpression(amdgpu_cdna2::acc102,0,opr_size); +case 615 : return makeRegisterExpression(amdgpu_cdna2::acc103,0,opr_size); +case 616 : return makeRegisterExpression(amdgpu_cdna2::acc104,0,opr_size); +case 617 : return makeRegisterExpression(amdgpu_cdna2::acc105,0,opr_size); +case 618 : return makeRegisterExpression(amdgpu_cdna2::acc106,0,opr_size); +case 619 : return makeRegisterExpression(amdgpu_cdna2::acc107,0,opr_size); +case 620 : return makeRegisterExpression(amdgpu_cdna2::acc108,0,opr_size); +case 621 : return makeRegisterExpression(amdgpu_cdna2::acc109,0,opr_size); +case 622 : return makeRegisterExpression(amdgpu_cdna2::acc110,0,opr_size); +case 623 : return makeRegisterExpression(amdgpu_cdna2::acc111,0,opr_size); +case 624 : return makeRegisterExpression(amdgpu_cdna2::acc112,0,opr_size); +case 625 : return makeRegisterExpression(amdgpu_cdna2::acc113,0,opr_size); +case 626 : return makeRegisterExpression(amdgpu_cdna2::acc114,0,opr_size); +case 627 : return makeRegisterExpression(amdgpu_cdna2::acc115,0,opr_size); +case 628 : return makeRegisterExpression(amdgpu_cdna2::acc116,0,opr_size); +case 629 : return makeRegisterExpression(amdgpu_cdna2::acc117,0,opr_size); +case 630 : return makeRegisterExpression(amdgpu_cdna2::acc118,0,opr_size); +case 631 : return makeRegisterExpression(amdgpu_cdna2::acc119,0,opr_size); +case 632 : return makeRegisterExpression(amdgpu_cdna2::acc120,0,opr_size); +case 633 : return makeRegisterExpression(amdgpu_cdna2::acc121,0,opr_size); +case 634 : return makeRegisterExpression(amdgpu_cdna2::acc122,0,opr_size); +case 635 : return makeRegisterExpression(amdgpu_cdna2::acc123,0,opr_size); +case 636 : return makeRegisterExpression(amdgpu_cdna2::acc124,0,opr_size); +case 637 : return makeRegisterExpression(amdgpu_cdna2::acc125,0,opr_size); +case 638 : return makeRegisterExpression(amdgpu_cdna2::acc126,0,opr_size); +case 639 : return makeRegisterExpression(amdgpu_cdna2::acc127,0,opr_size); +case 640 : return makeRegisterExpression(amdgpu_cdna2::acc128,0,opr_size); +case 641 : return makeRegisterExpression(amdgpu_cdna2::acc129,0,opr_size); +case 642 : return makeRegisterExpression(amdgpu_cdna2::acc130,0,opr_size); +case 643 : return makeRegisterExpression(amdgpu_cdna2::acc131,0,opr_size); +case 644 : return makeRegisterExpression(amdgpu_cdna2::acc132,0,opr_size); +case 645 : return makeRegisterExpression(amdgpu_cdna2::acc133,0,opr_size); +case 646 : return makeRegisterExpression(amdgpu_cdna2::acc134,0,opr_size); +case 647 : return makeRegisterExpression(amdgpu_cdna2::acc135,0,opr_size); +case 648 : return makeRegisterExpression(amdgpu_cdna2::acc136,0,opr_size); +case 649 : return makeRegisterExpression(amdgpu_cdna2::acc137,0,opr_size); +case 650 : return makeRegisterExpression(amdgpu_cdna2::acc138,0,opr_size); +case 651 : return makeRegisterExpression(amdgpu_cdna2::acc139,0,opr_size); +case 652 : return makeRegisterExpression(amdgpu_cdna2::acc140,0,opr_size); +case 653 : return makeRegisterExpression(amdgpu_cdna2::acc141,0,opr_size); +case 654 : return makeRegisterExpression(amdgpu_cdna2::acc142,0,opr_size); +case 655 : return makeRegisterExpression(amdgpu_cdna2::acc143,0,opr_size); +case 656 : return makeRegisterExpression(amdgpu_cdna2::acc144,0,opr_size); +case 657 : return makeRegisterExpression(amdgpu_cdna2::acc145,0,opr_size); +case 658 : return makeRegisterExpression(amdgpu_cdna2::acc146,0,opr_size); +case 659 : return makeRegisterExpression(amdgpu_cdna2::acc147,0,opr_size); +case 660 : return makeRegisterExpression(amdgpu_cdna2::acc148,0,opr_size); +case 661 : return makeRegisterExpression(amdgpu_cdna2::acc149,0,opr_size); +case 662 : return makeRegisterExpression(amdgpu_cdna2::acc150,0,opr_size); +case 663 : return makeRegisterExpression(amdgpu_cdna2::acc151,0,opr_size); +case 664 : return makeRegisterExpression(amdgpu_cdna2::acc152,0,opr_size); +case 665 : return makeRegisterExpression(amdgpu_cdna2::acc153,0,opr_size); +case 666 : return makeRegisterExpression(amdgpu_cdna2::acc154,0,opr_size); +case 667 : return makeRegisterExpression(amdgpu_cdna2::acc155,0,opr_size); +case 668 : return makeRegisterExpression(amdgpu_cdna2::acc156,0,opr_size); +case 669 : return makeRegisterExpression(amdgpu_cdna2::acc157,0,opr_size); +case 670 : return makeRegisterExpression(amdgpu_cdna2::acc158,0,opr_size); +case 671 : return makeRegisterExpression(amdgpu_cdna2::acc159,0,opr_size); +case 672 : return makeRegisterExpression(amdgpu_cdna2::acc160,0,opr_size); +case 673 : return makeRegisterExpression(amdgpu_cdna2::acc161,0,opr_size); +case 674 : return makeRegisterExpression(amdgpu_cdna2::acc162,0,opr_size); +case 675 : return makeRegisterExpression(amdgpu_cdna2::acc163,0,opr_size); +case 676 : return makeRegisterExpression(amdgpu_cdna2::acc164,0,opr_size); +case 677 : return makeRegisterExpression(amdgpu_cdna2::acc165,0,opr_size); +case 678 : return makeRegisterExpression(amdgpu_cdna2::acc166,0,opr_size); +case 679 : return makeRegisterExpression(amdgpu_cdna2::acc167,0,opr_size); +case 680 : return makeRegisterExpression(amdgpu_cdna2::acc168,0,opr_size); +case 681 : return makeRegisterExpression(amdgpu_cdna2::acc169,0,opr_size); +case 682 : return makeRegisterExpression(amdgpu_cdna2::acc170,0,opr_size); +case 683 : return makeRegisterExpression(amdgpu_cdna2::acc171,0,opr_size); +case 684 : return makeRegisterExpression(amdgpu_cdna2::acc172,0,opr_size); +case 685 : return makeRegisterExpression(amdgpu_cdna2::acc173,0,opr_size); +case 686 : return makeRegisterExpression(amdgpu_cdna2::acc174,0,opr_size); +case 687 : return makeRegisterExpression(amdgpu_cdna2::acc175,0,opr_size); +case 688 : return makeRegisterExpression(amdgpu_cdna2::acc176,0,opr_size); +case 689 : return makeRegisterExpression(amdgpu_cdna2::acc177,0,opr_size); +case 690 : return makeRegisterExpression(amdgpu_cdna2::acc178,0,opr_size); +case 691 : return makeRegisterExpression(amdgpu_cdna2::acc179,0,opr_size); +case 692 : return makeRegisterExpression(amdgpu_cdna2::acc180,0,opr_size); +case 693 : return makeRegisterExpression(amdgpu_cdna2::acc181,0,opr_size); +case 694 : return makeRegisterExpression(amdgpu_cdna2::acc182,0,opr_size); +case 695 : return makeRegisterExpression(amdgpu_cdna2::acc183,0,opr_size); +case 696 : return makeRegisterExpression(amdgpu_cdna2::acc184,0,opr_size); +case 697 : return makeRegisterExpression(amdgpu_cdna2::acc185,0,opr_size); +case 698 : return makeRegisterExpression(amdgpu_cdna2::acc186,0,opr_size); +case 699 : return makeRegisterExpression(amdgpu_cdna2::acc187,0,opr_size); +case 700 : return makeRegisterExpression(amdgpu_cdna2::acc188,0,opr_size); +case 701 : return makeRegisterExpression(amdgpu_cdna2::acc189,0,opr_size); +case 702 : return makeRegisterExpression(amdgpu_cdna2::acc190,0,opr_size); +case 703 : return makeRegisterExpression(amdgpu_cdna2::acc191,0,opr_size); +case 704 : return makeRegisterExpression(amdgpu_cdna2::acc192,0,opr_size); +case 705 : return makeRegisterExpression(amdgpu_cdna2::acc193,0,opr_size); +case 706 : return makeRegisterExpression(amdgpu_cdna2::acc194,0,opr_size); +case 707 : return makeRegisterExpression(amdgpu_cdna2::acc195,0,opr_size); +case 708 : return makeRegisterExpression(amdgpu_cdna2::acc196,0,opr_size); +case 709 : return makeRegisterExpression(amdgpu_cdna2::acc197,0,opr_size); +case 710 : return makeRegisterExpression(amdgpu_cdna2::acc198,0,opr_size); +case 711 : return makeRegisterExpression(amdgpu_cdna2::acc199,0,opr_size); +case 712 : return makeRegisterExpression(amdgpu_cdna2::acc200,0,opr_size); +case 713 : return makeRegisterExpression(amdgpu_cdna2::acc201,0,opr_size); +case 714 : return makeRegisterExpression(amdgpu_cdna2::acc202,0,opr_size); +case 715 : return makeRegisterExpression(amdgpu_cdna2::acc203,0,opr_size); +case 716 : return makeRegisterExpression(amdgpu_cdna2::acc204,0,opr_size); +case 717 : return makeRegisterExpression(amdgpu_cdna2::acc205,0,opr_size); +case 718 : return makeRegisterExpression(amdgpu_cdna2::acc206,0,opr_size); +case 719 : return makeRegisterExpression(amdgpu_cdna2::acc207,0,opr_size); +case 720 : return makeRegisterExpression(amdgpu_cdna2::acc208,0,opr_size); +case 721 : return makeRegisterExpression(amdgpu_cdna2::acc209,0,opr_size); +case 722 : return makeRegisterExpression(amdgpu_cdna2::acc210,0,opr_size); +case 723 : return makeRegisterExpression(amdgpu_cdna2::acc211,0,opr_size); +case 724 : return makeRegisterExpression(amdgpu_cdna2::acc212,0,opr_size); +case 725 : return makeRegisterExpression(amdgpu_cdna2::acc213,0,opr_size); +case 726 : return makeRegisterExpression(amdgpu_cdna2::acc214,0,opr_size); +case 727 : return makeRegisterExpression(amdgpu_cdna2::acc215,0,opr_size); +case 728 : return makeRegisterExpression(amdgpu_cdna2::acc216,0,opr_size); +case 729 : return makeRegisterExpression(amdgpu_cdna2::acc217,0,opr_size); +case 730 : return makeRegisterExpression(amdgpu_cdna2::acc218,0,opr_size); +case 731 : return makeRegisterExpression(amdgpu_cdna2::acc219,0,opr_size); +case 732 : return makeRegisterExpression(amdgpu_cdna2::acc220,0,opr_size); +case 733 : return makeRegisterExpression(amdgpu_cdna2::acc221,0,opr_size); +case 734 : return makeRegisterExpression(amdgpu_cdna2::acc222,0,opr_size); +case 735 : return makeRegisterExpression(amdgpu_cdna2::acc223,0,opr_size); +case 736 : return makeRegisterExpression(amdgpu_cdna2::acc224,0,opr_size); +case 737 : return makeRegisterExpression(amdgpu_cdna2::acc225,0,opr_size); +case 738 : return makeRegisterExpression(amdgpu_cdna2::acc226,0,opr_size); +case 739 : return makeRegisterExpression(amdgpu_cdna2::acc227,0,opr_size); +case 740 : return makeRegisterExpression(amdgpu_cdna2::acc228,0,opr_size); +case 741 : return makeRegisterExpression(amdgpu_cdna2::acc229,0,opr_size); +case 742 : return makeRegisterExpression(amdgpu_cdna2::acc230,0,opr_size); +case 743 : return makeRegisterExpression(amdgpu_cdna2::acc231,0,opr_size); +case 744 : return makeRegisterExpression(amdgpu_cdna2::acc232,0,opr_size); +case 745 : return makeRegisterExpression(amdgpu_cdna2::acc233,0,opr_size); +case 746 : return makeRegisterExpression(amdgpu_cdna2::acc234,0,opr_size); +case 747 : return makeRegisterExpression(amdgpu_cdna2::acc235,0,opr_size); +case 748 : return makeRegisterExpression(amdgpu_cdna2::acc236,0,opr_size); +case 749 : return makeRegisterExpression(amdgpu_cdna2::acc237,0,opr_size); +case 750 : return makeRegisterExpression(amdgpu_cdna2::acc238,0,opr_size); +case 751 : return makeRegisterExpression(amdgpu_cdna2::acc239,0,opr_size); +case 752 : return makeRegisterExpression(amdgpu_cdna2::acc240,0,opr_size); +case 753 : return makeRegisterExpression(amdgpu_cdna2::acc241,0,opr_size); +case 754 : return makeRegisterExpression(amdgpu_cdna2::acc242,0,opr_size); +case 755 : return makeRegisterExpression(amdgpu_cdna2::acc243,0,opr_size); +case 756 : return makeRegisterExpression(amdgpu_cdna2::acc244,0,opr_size); +case 757 : return makeRegisterExpression(amdgpu_cdna2::acc245,0,opr_size); +case 758 : return makeRegisterExpression(amdgpu_cdna2::acc246,0,opr_size); +case 759 : return makeRegisterExpression(amdgpu_cdna2::acc247,0,opr_size); +case 760 : return makeRegisterExpression(amdgpu_cdna2::acc248,0,opr_size); +case 761 : return makeRegisterExpression(amdgpu_cdna2::acc249,0,opr_size); +case 762 : return makeRegisterExpression(amdgpu_cdna2::acc250,0,opr_size); +case 763 : return makeRegisterExpression(amdgpu_cdna2::acc251,0,opr_size); +case 764 : return makeRegisterExpression(amdgpu_cdna2::acc252,0,opr_size); +case 765 : return makeRegisterExpression(amdgpu_cdna2::acc253,0,opr_size); +case 766 : return makeRegisterExpression(amdgpu_cdna2::acc254,0,opr_size); +case 767 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR_OR_LDS(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_cdna2::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_cdna2::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_cdna2::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_cdna2::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_cdna2::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_cdna2::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_cdna2::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_cdna2::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_cdna2::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_cdna2::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_cdna2::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_cdna2::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_cdna2::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_cdna2::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_cdna2::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_cdna2::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_cdna2::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_cdna2::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_cdna2::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_cdna2::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_cdna2::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_cdna2::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_cdna2::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_cdna2::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_cdna2::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_cdna2::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_cdna2::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_cdna2::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_cdna2::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_cdna2::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_cdna2::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_cdna2::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_cdna2::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_cdna2::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_cdna2::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_cdna2::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_cdna2::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_cdna2::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_cdna2::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_cdna2::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_cdna2::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_cdna2::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_cdna2::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_cdna2::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_cdna2::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_cdna2::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_cdna2::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_cdna2::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_cdna2::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_cdna2::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_cdna2::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_cdna2::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_cdna2::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_cdna2::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_cdna2::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_cdna2::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_cdna2::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_cdna2::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_cdna2::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_cdna2::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_cdna2::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_cdna2::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_cdna2::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_cdna2::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_cdna2::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_cdna2::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_cdna2::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_cdna2::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_cdna2::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_cdna2::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_cdna2::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_cdna2::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_cdna2::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_cdna2::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_cdna2::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_cdna2::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_cdna2::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_cdna2::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_cdna2::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_cdna2::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_cdna2::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_cdna2::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_cdna2::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_cdna2::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_cdna2::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_cdna2::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_cdna2::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_cdna2::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_cdna2::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_cdna2::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_cdna2::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_cdna2::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_cdna2::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_cdna2::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_cdna2::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_cdna2::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_cdna2::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_cdna2::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_cdna2::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_cdna2::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_cdna2::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_cdna2::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_cdna2::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_cdna2::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_cdna2::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_cdna2::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_cdna2::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_cdna2::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_cdna2::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_cdna2::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_cdna2::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_cdna2::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_cdna2::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_cdna2::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_cdna2::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_cdna2::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_cdna2::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_cdna2::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_cdna2::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_cdna2::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_cdna2::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_cdna2::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_cdna2::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_cdna2::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_cdna2::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_cdna2::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_cdna2::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_cdna2::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_cdna2::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_cdna2::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_cdna2::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_cdna2::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_cdna2::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_cdna2::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_cdna2::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_cdna2::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_cdna2::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_cdna2::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_cdna2::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_cdna2::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_cdna2::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_cdna2::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_cdna2::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_cdna2::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_cdna2::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_cdna2::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_cdna2::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_cdna2::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_cdna2::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_cdna2::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_cdna2::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_cdna2::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_cdna2::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_cdna2::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_cdna2::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_cdna2::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_cdna2::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_cdna2::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_cdna2::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_cdna2::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_cdna2::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_cdna2::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_cdna2::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_cdna2::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_cdna2::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_cdna2::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_cdna2::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_cdna2::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_cdna2::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_cdna2::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_cdna2::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_cdna2::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_cdna2::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_cdna2::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_cdna2::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_cdna2::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_cdna2::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_cdna2::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_cdna2::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_cdna2::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_cdna2::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_cdna2::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_cdna2::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_cdna2::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_cdna2::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_cdna2::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_cdna2::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_cdna2::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_cdna2::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_cdna2::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_cdna2::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_cdna2::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_cdna2::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_cdna2::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_cdna2::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_cdna2::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_cdna2::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_cdna2::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_cdna2::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_cdna2::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_cdna2::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_cdna2::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_cdna2::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_cdna2::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_cdna2::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_cdna2::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_cdna2::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_cdna2::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_cdna2::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_cdna2::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_cdna2::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_cdna2::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_cdna2::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_cdna2::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_cdna2::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_cdna2::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_cdna2::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_cdna2::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_cdna2::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_cdna2::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_cdna2::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_cdna2::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_cdna2::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_cdna2::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_cdna2::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_cdna2::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_cdna2::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_cdna2::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_cdna2::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_cdna2::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_cdna2::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_cdna2::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_cdna2::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_cdna2::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_cdna2::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_cdna2::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_cdna2::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_cdna2::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_cdna2::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_cdna2::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_cdna2::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_cdna2::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_cdna2::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_cdna2::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_cdna2::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_cdna2::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_cdna2::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_cdna2::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_cdna2::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_cdna2::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_cdna2::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_cdna2::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_cdna2::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_XNACK_MASK_LOHI(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_cdna2::invalid); +} +} diff --git a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h new file mode 100644 index 0000000000..8533c5a99a --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h @@ -0,0 +1,41 @@ +Expression::Ptr decodeOPR_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_ATTR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_PARAM(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_PC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_M0(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_TGT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_TRAP(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR_OR_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input ,uint32_t opr_size ); diff --git a/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C b/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C new file mode 100644 index 0000000000..f93b63d1c4 --- /dev/null +++ b/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C @@ -0,0 +1,9860 @@ +void InstructionDecoder_amdgpu_cdna2::finalizeENC_DSOperands(){ +layout_ENC_DS & layout = insn_layout.ENC_DS; +switch(layout.OP){ +case 0:// DS_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 1:// DS_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 2:// DS_RSUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 3:// DS_INC_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 4:// DS_DEC_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 5:// DS_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 6:// DS_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 7:// DS_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 8:// DS_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 9:// DS_AND_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 10:// DS_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 11:// DS_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 12:// DS_MSKOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 13:// DS_WRITE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 14:// DS_WRITE2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 15:// DS_WRITE2ST64_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 16:// DS_CMPST_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 17:// DS_CMPST_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 18:// DS_MIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 19:// DS_MAX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 20:// DS_NOP +break; +case 21:// DS_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 29:// DS_WRITE_ADDTID_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// DS_WRITE_B8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 31:// DS_WRITE_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 32:// DS_ADD_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 33:// DS_SUB_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 34:// DS_RSUB_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 35:// DS_INC_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 36:// DS_DEC_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 37:// DS_MIN_RTN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 38:// DS_MAX_RTN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 39:// DS_MIN_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 40:// DS_MAX_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 41:// DS_AND_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 42:// DS_OR_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 43:// DS_XOR_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 44:// DS_MSKOR_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 45:// DS_WRXCHG_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 46:// DS_WRXCHG2_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 47:// DS_WRXCHG2ST64_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 48:// DS_CMPST_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 49:// DS_CMPST_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 50:// DS_MIN_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 51:// DS_MAX_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 52:// DS_WRAP_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1,32),true,false); +break; +case 53:// DS_ADD_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 54:// DS_READ_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 55:// DS_READ2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 56:// DS_READ2ST64_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 57:// DS_READ_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 58:// DS_READ_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 59:// DS_READ_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 60:// DS_READ_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 61:// DS_SWIZZLE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 62:// DS_PERMUTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 63:// DS_BPERMUTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 64:// DS_ADD_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 65:// DS_SUB_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 66:// DS_RSUB_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 67:// DS_INC_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 68:// DS_DEC_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 69:// DS_MIN_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 70:// DS_MAX_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 71:// DS_MIN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 72:// DS_MAX_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 73:// DS_AND_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 74:// DS_OR_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 75:// DS_XOR_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 76:// DS_MSKOR_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 77:// DS_WRITE_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 78:// DS_WRITE2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 79:// DS_WRITE2ST64_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 80:// DS_CMPST_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 81:// DS_CMPST_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 82:// DS_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 83:// DS_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 84:// DS_WRITE_B8_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 85:// DS_WRITE_B16_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +break; +case 86:// DS_READ_U8_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 87:// DS_READ_U8_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 88:// DS_READ_I8_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 89:// DS_READ_I8_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 90:// DS_READ_U16_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 91:// DS_READ_U16_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 92:// DS_ADD_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 96:// DS_ADD_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 97:// DS_SUB_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 98:// DS_RSUB_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 99:// DS_INC_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 100:// DS_DEC_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 101:// DS_MIN_RTN_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 102:// DS_MAX_RTN_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 103:// DS_MIN_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 104:// DS_MAX_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 105:// DS_AND_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 106:// DS_OR_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 107:// DS_XOR_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 108:// DS_MSKOR_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 109:// DS_WRXCHG_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 110:// DS_WRXCHG2_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 111:// DS_WRXCHG2ST64_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 112:// DS_CMPST_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 113:// DS_CMPST_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA1+1,32),true,false); +break; +case 114:// DS_MIN_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 115:// DS_MAX_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 118:// DS_READ_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 119:// DS_READ2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 120:// DS_READ2ST64_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 124:// DS_ADD_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 126:// DS_CONDXCHG32_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +break; +case 152:// DS_GWS_SEMA_RELEASE_ALL +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 153:// DS_GWS_INIT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 154:// DS_GWS_SEMA_V +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 155:// DS_GWS_SEMA_BR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 156:// DS_GWS_SEMA_P +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 157:// DS_GWS_BARRIER +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 182:// DS_READ_ADDTID_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 189:// DS_CONSUME +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 190:// DS_APPEND +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 222:// DS_WRITE_B96 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+2,32),true,false); +break; +case 223:// DS_WRITE_B128 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA0+3,32),true,false); +break; +case 254:// DS_READ_B96 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 255:// DS_READ_B128 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_FLATOperands(){ +layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; +switch(layout.OP){ +case 16:// FLAT_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// FLAT_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// FLAT_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 19:// FLAT_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 20:// FLAT_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 21:// FLAT_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 22:// FLAT_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// FLAT_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 24:// FLAT_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 25:// FLAT_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 26:// FLAT_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 27:// FLAT_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 28:// FLAT_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 29:// FLAT_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// FLAT_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 31:// FLAT_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 32:// FLAT_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 33:// FLAT_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 34:// FLAT_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 35:// FLAT_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 36:// FLAT_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 37:// FLAT_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 64:// FLAT_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 65:// FLAT_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 66:// FLAT_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 67:// FLAT_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 68:// FLAT_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 69:// FLAT_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 70:// FLAT_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 71:// FLAT_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 72:// FLAT_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 73:// FLAT_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 74:// FLAT_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 75:// FLAT_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 76:// FLAT_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 79:// FLAT_ATOMIC_ADD_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 80:// FLAT_ATOMIC_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 81:// FLAT_ATOMIC_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 96:// FLAT_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 97:// FLAT_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 98:// FLAT_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 99:// FLAT_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 100:// FLAT_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 101:// FLAT_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 102:// FLAT_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 103:// FLAT_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 104:// FLAT_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 105:// FLAT_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 106:// FLAT_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 107:// FLAT_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 108:// FLAT_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_FLAT_GLBLOperands(){ +layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; +switch(layout.OP){ +case 16:// GLOBAL_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// GLOBAL_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// GLOBAL_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 19:// GLOBAL_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 20:// GLOBAL_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 21:// GLOBAL_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 22:// GLOBAL_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// GLOBAL_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 24:// GLOBAL_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 25:// GLOBAL_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 26:// GLOBAL_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 27:// GLOBAL_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 28:// GLOBAL_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 29:// GLOBAL_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// GLOBAL_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 31:// GLOBAL_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 32:// GLOBAL_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 33:// GLOBAL_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 34:// GLOBAL_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 35:// GLOBAL_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 36:// GLOBAL_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 37:// GLOBAL_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 64:// GLOBAL_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 65:// GLOBAL_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 66:// GLOBAL_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 67:// GLOBAL_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 68:// GLOBAL_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 69:// GLOBAL_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 70:// GLOBAL_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 71:// GLOBAL_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 72:// GLOBAL_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 73:// GLOBAL_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 74:// GLOBAL_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 75:// GLOBAL_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 76:// GLOBAL_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 77:// GLOBAL_ATOMIC_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 78:// GLOBAL_ATOMIC_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 79:// GLOBAL_ATOMIC_ADD_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 80:// GLOBAL_ATOMIC_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 81:// GLOBAL_ATOMIC_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 96:// GLOBAL_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 97:// GLOBAL_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 98:// GLOBAL_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 99:// GLOBAL_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 100:// GLOBAL_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 101:// GLOBAL_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 102:// GLOBAL_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 103:// GLOBAL_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 104:// GLOBAL_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 105:// GLOBAL_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 106:// GLOBAL_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 107:// GLOBAL_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 108:// GLOBAL_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_FLAT_SCRATCHOperands(){ +layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; +switch(layout.OP){ +case 16:// SCRATCH_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// SCRATCH_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// SCRATCH_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 19:// SCRATCH_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 20:// SCRATCH_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 21:// SCRATCH_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 22:// SCRATCH_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// SCRATCH_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 24:// SCRATCH_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 25:// SCRATCH_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 26:// SCRATCH_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 27:// SCRATCH_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 28:// SCRATCH_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 29:// SCRATCH_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// SCRATCH_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 31:// SCRATCH_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 32:// SCRATCH_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 33:// SCRATCH_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 34:// SCRATCH_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 35:// SCRATCH_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 36:// SCRATCH_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 37:// SCRATCH_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_MIMGOperands(){ +layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; +switch(layout.OP){ +case 0:// IMAGE_LOAD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 1:// IMAGE_LOAD_MIP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 2:// IMAGE_LOAD_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 3:// IMAGE_LOAD_PCK_SGN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 4:// IMAGE_LOAD_MIP_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 5:// IMAGE_LOAD_MIP_PCK_SGN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 8:// IMAGE_STORE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 9:// IMAGE_STORE_MIP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 10:// IMAGE_STORE_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 11:// IMAGE_STORE_MIP_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 14:// IMAGE_GET_RESINFO +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 16:// IMAGE_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 17:// IMAGE_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 18:// IMAGE_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 19:// IMAGE_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 20:// IMAGE_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 21:// IMAGE_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 22:// IMAGE_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 23:// IMAGE_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 24:// IMAGE_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 25:// IMAGE_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 26:// IMAGE_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 27:// IMAGE_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 28:// IMAGE_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 32:// IMAGE_SAMPLE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_MTBUFOperands(){ +layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; +switch(layout.OP){ +case 0:// TBUFFER_LOAD_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 1:// TBUFFER_LOAD_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 2:// TBUFFER_LOAD_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 3:// TBUFFER_LOAD_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 4:// TBUFFER_STORE_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 5:// TBUFFER_STORE_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 6:// TBUFFER_STORE_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 7:// TBUFFER_STORE_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 8:// TBUFFER_LOAD_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 9:// TBUFFER_LOAD_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 10:// TBUFFER_LOAD_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 11:// TBUFFER_LOAD_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 12:// TBUFFER_STORE_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 13:// TBUFFER_STORE_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 14:// TBUFFER_STORE_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 15:// TBUFFER_STORE_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_MUBUFOperands(){ +layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; +switch(layout.OP){ +case 0:// BUFFER_LOAD_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 1:// BUFFER_LOAD_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 2:// BUFFER_LOAD_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 3:// BUFFER_LOAD_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 4:// BUFFER_STORE_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 5:// BUFFER_STORE_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 6:// BUFFER_STORE_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 7:// BUFFER_STORE_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 8:// BUFFER_LOAD_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 9:// BUFFER_LOAD_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 10:// BUFFER_LOAD_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 11:// BUFFER_LOAD_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 12:// BUFFER_STORE_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 13:// BUFFER_STORE_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 14:// BUFFER_STORE_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 15:// BUFFER_STORE_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 16:// BUFFER_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 17:// BUFFER_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 18:// BUFFER_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 19:// BUFFER_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 20:// BUFFER_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 21:// BUFFER_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 22:// BUFFER_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 23:// BUFFER_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 24:// BUFFER_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 25:// BUFFER_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 26:// BUFFER_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 27:// BUFFER_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 28:// BUFFER_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 29:// BUFFER_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 30:// BUFFER_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 31:// BUFFER_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 32:// BUFFER_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 33:// BUFFER_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 34:// BUFFER_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 35:// BUFFER_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 36:// BUFFER_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 37:// BUFFER_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 38:// BUFFER_LOAD_FORMAT_D16_HI_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 39:// BUFFER_STORE_FORMAT_D16_HI_X +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 40:// BUFFER_WBL2 +break; +case 41:// BUFFER_INVL2 +break; +case 61:// BUFFER_STORE_LDS_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 62:// BUFFER_WBINVL1 +break; +case 63:// BUFFER_WBINVL1_VOL +break; +case 64:// BUFFER_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 65:// BUFFER_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 66:// BUFFER_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 67:// BUFFER_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 68:// BUFFER_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 69:// BUFFER_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 70:// BUFFER_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 71:// BUFFER_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 72:// BUFFER_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 73:// BUFFER_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 74:// BUFFER_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 75:// BUFFER_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 76:// BUFFER_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 77:// BUFFER_ATOMIC_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 78:// BUFFER_ATOMIC_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 79:// BUFFER_ATOMIC_ADD_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 80:// BUFFER_ATOMIC_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 81:// BUFFER_ATOMIC_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 96:// BUFFER_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 97:// BUFFER_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 98:// BUFFER_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 99:// BUFFER_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 100:// BUFFER_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 101:// BUFFER_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 102:// BUFFER_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 103:// BUFFER_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 104:// BUFFER_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 105:// BUFFER_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 106:// BUFFER_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 107:// BUFFER_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 108:// BUFFER_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_SMEMOperands(){ +layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; +switch(layout.OP){ +case 0:// S_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 1:// S_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 2:// S_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 3:// S_LOAD_DWORDX8 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 4:// S_LOAD_DWORDX16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 5:// S_SCRATCH_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 6:// S_SCRATCH_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 7:// S_SCRATCH_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 8:// S_BUFFER_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 9:// S_BUFFER_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 10:// S_BUFFER_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 11:// S_BUFFER_LOAD_DWORDX8 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 12:// S_BUFFER_LOAD_DWORDX16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 16:// S_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 17:// S_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 18:// S_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 21:// S_SCRATCH_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 22:// S_SCRATCH_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 23:// S_SCRATCH_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 24:// S_BUFFER_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 25:// S_BUFFER_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 26:// S_BUFFER_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 32:// S_DCACHE_INV +break; +case 33:// S_DCACHE_WB +break; +case 34:// S_DCACHE_INV_VOL +break; +case 35:// S_DCACHE_WB_VOL +break; +case 36:// S_MEMTIME +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +break; +case 37:// S_MEMREALTIME +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +break; +case 38:// S_ATC_PROBE +insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 39:// S_ATC_PROBE_BUFFER +insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 40:// S_DCACHE_DISCARD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 41:// S_DCACHE_DISCARD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 64:// S_BUFFER_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 65:// S_BUFFER_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 66:// S_BUFFER_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 67:// S_BUFFER_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 68:// S_BUFFER_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 69:// S_BUFFER_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 70:// S_BUFFER_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 71:// S_BUFFER_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 72:// S_BUFFER_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 73:// S_BUFFER_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 74:// S_BUFFER_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 75:// S_BUFFER_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 76:// S_BUFFER_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 96:// S_BUFFER_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 97:// S_BUFFER_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 98:// S_BUFFER_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 99:// S_BUFFER_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 100:// S_BUFFER_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 101:// S_BUFFER_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 102:// S_BUFFER_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 103:// S_BUFFER_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 104:// S_BUFFER_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 105:// S_BUFFER_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 106:// S_BUFFER_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 107:// S_BUFFER_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 108:// S_BUFFER_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 128:// S_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 129:// S_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 130:// S_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 131:// S_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 132:// S_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 133:// S_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 134:// S_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 135:// S_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 136:// S_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 137:// S_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 138:// S_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 139:// S_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 140:// S_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 160:// S_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 161:// S_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 162:// S_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 163:// S_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 164:// S_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 165:// S_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 166:// S_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 167:// S_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 168:// S_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 169:// S_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 170:// S_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 171:// S_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 172:// S_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_SOP1Operands(){ +layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; +switch(layout.OP){ +case 0:// S_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 1:// S_MOV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 2:// S_CMOV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 3:// S_CMOV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 4:// S_NOT_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 5:// S_NOT_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 6:// S_WQM_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_WQM_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_BREV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 9:// S_BREV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 10:// S_BCNT0_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 11:// S_BCNT0_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 12:// S_BCNT1_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_BCNT1_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_FF0_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 15:// S_FF0_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 16:// S_FF1_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 17:// S_FF1_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 18:// S_FLBIT_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 19:// S_FLBIT_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 20:// S_FLBIT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 21:// S_FLBIT_I32_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 22:// S_SEXT_I32_I8 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +break; +case 23:// S_SEXT_I32_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +break; +case 24:// S_BITSET0_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 25:// S_BITSET0_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 26:// S_BITSET1_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 27:// S_BITSET1_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 28:// S_GETPC_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +break; +case 29:// S_SETPC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 30:// S_SWAPPC_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +break; +case 31:// S_RFE_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 32:// S_AND_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 33:// S_OR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 34:// S_XOR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 35:// S_ANDN2_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 36:// S_ORN2_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 37:// S_NAND_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 38:// S_NOR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 39:// S_XNOR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 40:// S_QUADMASK_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 41:// S_QUADMASK_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 42:// S_MOVRELS_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 43:// S_MOVRELS_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 44:// S_MOVRELD_B32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 45:// S_MOVRELD_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 46:// S_CBRANCH_JOIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 48:// S_ABS_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 50:// S_SET_GPR_IDX_IDX +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 51:// S_ANDN1_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 52:// S_ORN1_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 53:// S_ANDN1_WREXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 54:// S_ANDN2_WREXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 55:// S_BITREPLICATE_B64_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_SOP2Operands(){ +layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; +switch(layout.OP){ +case 0:// S_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 1:// S_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 2:// S_ADD_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 3:// S_SUB_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 4:// S_ADDC_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 5:// S_SUBB_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 6:// S_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 9:// S_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 10:// S_CSELECT_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 11:// S_CSELECT_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 12:// S_AND_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_AND_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_OR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 15:// S_OR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 16:// S_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 17:// S_XOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 18:// S_ANDN2_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 19:// S_ANDN2_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 20:// S_ORN2_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 21:// S_ORN2_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 22:// S_NAND_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 23:// S_NAND_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 24:// S_NOR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 25:// S_NOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 26:// S_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 27:// S_XNOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 28:// S_LSHL_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 29:// S_LSHL_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 30:// S_LSHR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 31:// S_LSHR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 32:// S_ASHR_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 33:// S_ASHR_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 34:// S_BFM_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 35:// S_BFM_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 36:// S_MUL_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 37:// S_BFE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 38:// S_BFE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 39:// S_BFE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 40:// S_BFE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 41:// S_CBRANCH_G_FORK +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 42:// S_ABSDIFF_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 43:// S_RFE_RESTORE_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 44:// S_MUL_HI_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 45:// S_MUL_HI_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 46:// S_LSHL1_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 47:// S_LSHL2_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 48:// S_LSHL3_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 49:// S_LSHL4_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 50:// S_PACK_LL_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,16),true,false); +break; +case 51:// S_PACK_LH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 52:// S_PACK_HH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_SOPCOperands(){ +layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; +switch(layout.OP){ +case 0:// S_CMP_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 1:// S_CMP_LG_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 2:// S_CMP_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 3:// S_CMP_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 4:// S_CMP_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 5:// S_CMP_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 6:// S_CMP_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_CMP_LG_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_CMP_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 9:// S_CMP_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 10:// S_CMP_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 11:// S_CMP_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 12:// S_BITCMP0_B32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_BITCMP1_B32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_BITCMP0_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 15:// S_BITCMP1_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 16:// S_SETVSKIP +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 17:// S_SET_GPR_IDX_ON +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM4(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// S_CMP_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 19:// S_CMP_LG_U64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_SOPKOperands(){ +layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; +switch(layout.OP){ +case 0:// S_MOVK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 1:// S_CMOVK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 2:// S_CMPK_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 3:// S_CMPK_LG_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 4:// S_CMPK_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 5:// S_CMPK_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 6:// S_CMPK_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_CMPK_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_CMPK_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 9:// S_CMPK_LG_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 10:// S_CMPK_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 11:// S_CMPK_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 12:// S_CMPK_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_CMPK_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_ADDK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 15:// S_MULK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 16:// S_CBRANCH_I_FORK +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 17:// S_GETREG_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 18:// S_SETREG_B32 +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +break; +case 20:// S_SETREG_IMM32_B32 +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM32(decodeOPR_LITERAL()),true,false); +break; +case 21:// S_CALL_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_SOPPOperands(){ +layout_ENC_SOPP & layout = insn_layout.ENC_SOPP; +switch(layout.OP){ +case 0:// S_NOP +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 1:// S_ENDPGM +break; +case 2:// S_BRANCH +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 3:// S_WAKEUP +break; +case 4:// S_CBRANCH_SCC0 +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 5:// S_CBRANCH_SCC1 +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 6:// S_CBRANCH_VCCZ +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 7:// S_CBRANCH_VCCNZ +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 8:// S_CBRANCH_EXECZ +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 9:// S_CBRANCH_EXECNZ +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 10:// S_BARRIER +break; +case 11:// S_SETKILL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 12:// S_WAITCNT +insn_in_progress->appendOperand(decodeOPR_WAITCNT(layout.SIMM16),true,false); +break; +case 13:// S_SETHALT +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 14:// S_SLEEP +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 15:// S_SETPRIO +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 16:// S_SENDMSG +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// S_SENDMSGHALT +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// S_TRAP +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 19:// S_ICACHE_INV +break; +case 20:// S_INCPERFLEVEL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 21:// S_DECPERFLEVEL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 22:// S_TTRACEDATA +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// S_CBRANCH_CDBGSYS +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 24:// S_CBRANCH_CDBGUSER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 25:// S_CBRANCH_CDBGSYS_OR_USER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 26:// S_CBRANCH_CDBGSYS_AND_USER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 27:// S_ENDPGM_SAVED +break; +case 28:// S_SET_GPR_IDX_OFF +break; +case 29:// S_SET_GPR_IDX_MODE +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// S_ENDPGM_ORDERED_PS_DONE +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP1Operands(){ +layout_ENC_VOP1 & layout = insn_layout.ENC_VOP1; +switch(layout.OP){ +case 0:// V_NOP +break; +case 1:// V_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 2:// V_READFIRSTLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +break; +case 3:// V_CVT_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 4:// V_CVT_F64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 5:// V_CVT_F32_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 6:// V_CVT_F32_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 7:// V_CVT_U32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 8:// V_CVT_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 10:// V_CVT_F16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 11:// V_CVT_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 12:// V_CVT_RPI_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 13:// V_CVT_FLR_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 14:// V_CVT_OFF_F32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 15:// V_CVT_F32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 16:// V_CVT_F64_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 17:// V_CVT_F32_UBYTE0 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 18:// V_CVT_F32_UBYTE1 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 19:// V_CVT_F32_UBYTE2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 20:// V_CVT_F32_UBYTE3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 21:// V_CVT_U32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 22:// V_CVT_F64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 23:// V_TRUNC_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 24:// V_CEIL_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 25:// V_RNDNE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 26:// V_FLOOR_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 27:// V_FRACT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 28:// V_TRUNC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 29:// V_CEIL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 30:// V_RNDNE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 31:// V_FLOOR_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 32:// V_EXP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 33:// V_LOG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 34:// V_RCP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 35:// V_RCP_IFLAG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 36:// V_RSQ_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 37:// V_RCP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 38:// V_RSQ_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 39:// V_SQRT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 40:// V_SQRT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 41:// V_SIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 42:// V_COS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 43:// V_NOT_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 44:// V_BFREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 45:// V_FFBH_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 46:// V_FFBL_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 47:// V_FFBH_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 48:// V_FREXP_EXP_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 49:// V_FREXP_MANT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 50:// V_FRACT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 51:// V_FREXP_EXP_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 52:// V_FREXP_MANT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 53:// V_CLREXCP +break; +case 55:// V_SCREEN_PARTITION_4SE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 57:// V_CVT_F16_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 58:// V_CVT_F16_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 59:// V_CVT_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 60:// V_CVT_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 61:// V_RCP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 62:// V_SQRT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 63:// V_RSQ_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 64:// V_LOG_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 65:// V_EXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 66:// V_FREXP_MANT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 67:// V_FREXP_EXP_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 68:// V_FLOOR_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 69:// V_CEIL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 70:// V_TRUNC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 71:// V_RNDNE_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 72:// V_FRACT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 73:// V_SIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 74:// V_COS_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 75:// V_EXP_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 76:// V_LOG_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 77:// V_CVT_NORM_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 78:// V_CVT_NORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 79:// V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 81:// V_SWAP_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); +break; +case 82:// V_ACCVGPR_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP3Operands(){ +layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; +switch(layout.OP){ +case 320:// V_NOP +break; +case 321:// V_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 322:// V_READFIRSTLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +break; +case 323:// V_CVT_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 324:// V_CVT_F64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 325:// V_CVT_F32_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 326:// V_CVT_F32_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 327:// V_CVT_U32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 328:// V_CVT_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 330:// V_CVT_F16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 331:// V_CVT_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 332:// V_CVT_RPI_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 333:// V_CVT_FLR_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 334:// V_CVT_OFF_F32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 335:// V_CVT_F32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 336:// V_CVT_F64_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 337:// V_CVT_F32_UBYTE0 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 338:// V_CVT_F32_UBYTE1 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 339:// V_CVT_F32_UBYTE2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 340:// V_CVT_F32_UBYTE3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 341:// V_CVT_U32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 342:// V_CVT_F64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 343:// V_TRUNC_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 344:// V_CEIL_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 345:// V_RNDNE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 346:// V_FLOOR_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 347:// V_FRACT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 348:// V_TRUNC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 349:// V_CEIL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 350:// V_RNDNE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 351:// V_FLOOR_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 352:// V_EXP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 353:// V_LOG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 354:// V_RCP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 355:// V_RCP_IFLAG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 356:// V_RSQ_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 357:// V_RCP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 358:// V_RSQ_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 359:// V_SQRT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 360:// V_SQRT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 361:// V_SIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 362:// V_COS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 363:// V_NOT_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 364:// V_BFREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 365:// V_FFBH_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 366:// V_FFBL_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 367:// V_FFBH_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 368:// V_FREXP_EXP_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 369:// V_FREXP_MANT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 370:// V_FRACT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 371:// V_FREXP_EXP_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 372:// V_FREXP_MANT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 373:// V_CLREXCP +break; +case 375:// V_SCREEN_PARTITION_4SE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 377:// V_CVT_F16_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 378:// V_CVT_F16_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 379:// V_CVT_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 380:// V_CVT_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 381:// V_RCP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 382:// V_SQRT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 383:// V_RSQ_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 384:// V_LOG_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 385:// V_EXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 386:// V_FREXP_MANT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 387:// V_FREXP_EXP_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 388:// V_FLOOR_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 389:// V_CEIL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 390:// V_TRUNC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 391:// V_RNDNE_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 392:// V_FRACT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 393:// V_SIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 394:// V_COS_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 395:// V_EXP_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 396:// V_LOG_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 397:// V_CVT_NORM_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 398:// V_CVT_NORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 399:// V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 401:// V_SWAP_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); +break; +case 402:// V_ACCVGPR_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); +break; +case 256:// V_CNDMASK_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 257:// V_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 258:// V_SUB_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 259:// V_SUBREV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 260:// V_FMAC_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 261:// V_MUL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 262:// V_MUL_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 263:// V_MUL_HI_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 264:// V_MUL_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 265:// V_MUL_HI_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 266:// V_MIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 267:// V_MAX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 268:// V_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 269:// V_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 270:// V_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 271:// V_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 272:// V_LSHRREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 273:// V_ASHRREV_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 274:// V_LSHLREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 275:// V_AND_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 276:// V_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 277:// V_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 278:// V_MAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 287:// V_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 288:// V_SUB_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 289:// V_SUBREV_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 290:// V_MUL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 291:// V_MAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 294:// V_ADD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 295:// V_SUB_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 296:// V_SUBREV_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 297:// V_MUL_LO_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 298:// V_LSHLREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 299:// V_LSHRREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 300:// V_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 301:// V_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 302:// V_MIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 303:// V_MAX_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 304:// V_MAX_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 305:// V_MIN_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 306:// V_MIN_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 307:// V_LDEXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 308:// V_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 309:// V_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 310:// V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 311:// V_DOT2C_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 312:// V_DOT2C_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 313:// V_DOT4C_I32_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 314:// V_DOT8C_I32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 315:// V_FMAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 316:// V_PK_FMAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 317:// V_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 448:// V_MAD_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 449:// V_MAD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 450:// V_MAD_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 451:// V_MAD_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 452:// V_CUBEID_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 453:// V_CUBESC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 454:// V_CUBETC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 455:// V_CUBEMA_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 456:// V_BFE_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 457:// V_BFE_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 458:// V_BFI_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 459:// V_FMA_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 460:// V_FMA_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 461:// V_LERP_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 462:// V_ALIGNBIT_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 463:// V_ALIGNBYTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 464:// V_MIN3_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 465:// V_MIN3_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 466:// V_MIN3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 467:// V_MAX3_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 468:// V_MAX3_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 469:// V_MAX3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 470:// V_MED3_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 471:// V_MED3_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 472:// V_MED3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 473:// V_SAD_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 474:// V_SAD_HI_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 475:// V_SAD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 476:// V_SAD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 477:// V_CVT_PK_U8_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 478:// V_DIV_FIXUP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 479:// V_DIV_FIXUP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 482:// V_DIV_FMAS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 483:// V_DIV_FMAS_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 484:// V_MSAD_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 485:// V_QSAD_PK_U16_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 486:// V_MQSAD_PK_U16_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 487:// V_MQSAD_U32_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+3,32),true,false); +break; +case 490:// V_MAD_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 491:// V_MAD_LEGACY_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 492:// V_MAD_LEGACY_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 493:// V_PERM_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 494:// V_FMA_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 495:// V_DIV_FIXUP_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 496:// V_CVT_PKACCUM_U8_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 497:// V_MAD_U32_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 498:// V_MAD_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 499:// V_XAD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 500:// V_MIN3_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 501:// V_MIN3_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 502:// V_MIN3_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 503:// V_MAX3_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 504:// V_MAX3_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 505:// V_MAX3_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 506:// V_MED3_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 507:// V_MED3_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 508:// V_MED3_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 509:// V_LSHL_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 510:// V_ADD_LSHL_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 511:// V_ADD3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 512:// V_LSHL_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 513:// V_AND_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 514:// V_OR3_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 515:// V_MAD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 516:// V_MAD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 517:// V_MAD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 518:// V_FMA_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 519:// V_DIV_FIXUP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 640:// V_ADD_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 641:// V_MUL_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 642:// V_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 643:// V_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 644:// V_LDEXP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 645:// V_MUL_LO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 646:// V_MUL_HI_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 647:// V_MUL_HI_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 648:// V_LDEXP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 649:// V_READLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); +break; +case 650:// V_WRITELANE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); +break; +case 651:// V_BCNT_U32_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 652:// V_MBCNT_LO_U32_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 653:// V_MBCNT_HI_U32_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 655:// V_LSHLREV_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 656:// V_LSHRREV_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 657:// V_ASHRREV_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 658:// V_TRIG_PREOP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 659:// V_BFM_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 660:// V_CVT_PKNORM_I16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 661:// V_CVT_PKNORM_U16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 662:// V_CVT_PKRTZ_F16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 663:// V_CVT_PK_U16_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 664:// V_CVT_PK_I16_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 665:// V_CVT_PKNORM_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 666:// V_CVT_PKNORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 668:// V_ADD_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 669:// V_SUB_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 670:// V_ADD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 671:// V_SUB_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 672:// V_PACK_B32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 673:// V_MUL_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 16:// V_CMP_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 17:// V_CMPX_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 18:// V_CMP_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 19:// V_CMPX_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 20:// V_CMP_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 21:// V_CMPX_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 32:// V_CMP_F_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 33:// V_CMP_LT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 34:// V_CMP_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 35:// V_CMP_LE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 36:// V_CMP_GT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 37:// V_CMP_LG_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 38:// V_CMP_GE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 39:// V_CMP_O_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 40:// V_CMP_U_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 41:// V_CMP_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 42:// V_CMP_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 43:// V_CMP_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 44:// V_CMP_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 45:// V_CMP_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 46:// V_CMP_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 47:// V_CMP_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 48:// V_CMPX_F_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 49:// V_CMPX_LT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 50:// V_CMPX_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 51:// V_CMPX_LE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 52:// V_CMPX_GT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 53:// V_CMPX_LG_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 54:// V_CMPX_GE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 55:// V_CMPX_O_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 56:// V_CMPX_U_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 57:// V_CMPX_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 58:// V_CMPX_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 59:// V_CMPX_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 60:// V_CMPX_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 61:// V_CMPX_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 62:// V_CMPX_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 63:// V_CMPX_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 64:// V_CMP_F_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 65:// V_CMP_LT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 66:// V_CMP_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 67:// V_CMP_LE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 68:// V_CMP_GT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 69:// V_CMP_LG_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 70:// V_CMP_GE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 71:// V_CMP_O_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 72:// V_CMP_U_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 73:// V_CMP_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 74:// V_CMP_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 75:// V_CMP_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 76:// V_CMP_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 77:// V_CMP_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 78:// V_CMP_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 79:// V_CMP_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 80:// V_CMPX_F_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 81:// V_CMPX_LT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 82:// V_CMPX_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 83:// V_CMPX_LE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 84:// V_CMPX_GT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 85:// V_CMPX_LG_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 86:// V_CMPX_GE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 87:// V_CMPX_O_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 88:// V_CMPX_U_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 89:// V_CMPX_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 90:// V_CMPX_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 91:// V_CMPX_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 92:// V_CMPX_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 93:// V_CMPX_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 94:// V_CMPX_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 95:// V_CMPX_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 96:// V_CMP_F_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 97:// V_CMP_LT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 98:// V_CMP_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 99:// V_CMP_LE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 100:// V_CMP_GT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 101:// V_CMP_LG_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 102:// V_CMP_GE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 103:// V_CMP_O_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 104:// V_CMP_U_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 105:// V_CMP_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 106:// V_CMP_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 107:// V_CMP_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 108:// V_CMP_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 109:// V_CMP_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 110:// V_CMP_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 111:// V_CMP_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 112:// V_CMPX_F_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 113:// V_CMPX_LT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 114:// V_CMPX_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 115:// V_CMPX_LE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 116:// V_CMPX_GT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 117:// V_CMPX_LG_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 118:// V_CMPX_GE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 119:// V_CMPX_O_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 120:// V_CMPX_U_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 121:// V_CMPX_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 122:// V_CMPX_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 123:// V_CMPX_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 124:// V_CMPX_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 125:// V_CMPX_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 126:// V_CMPX_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 127:// V_CMPX_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 160:// V_CMP_F_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 161:// V_CMP_LT_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 162:// V_CMP_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 163:// V_CMP_LE_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 164:// V_CMP_GT_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 165:// V_CMP_NE_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 166:// V_CMP_GE_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 167:// V_CMP_T_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 168:// V_CMP_F_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 169:// V_CMP_LT_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 170:// V_CMP_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 171:// V_CMP_LE_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 172:// V_CMP_GT_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 173:// V_CMP_NE_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 174:// V_CMP_GE_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 175:// V_CMP_T_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 176:// V_CMPX_F_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 177:// V_CMPX_LT_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 178:// V_CMPX_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 179:// V_CMPX_LE_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 180:// V_CMPX_GT_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 181:// V_CMPX_NE_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 182:// V_CMPX_GE_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 183:// V_CMPX_T_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 184:// V_CMPX_F_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 185:// V_CMPX_LT_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 186:// V_CMPX_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 187:// V_CMPX_LE_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 188:// V_CMPX_GT_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 189:// V_CMPX_NE_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 190:// V_CMPX_GE_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 191:// V_CMPX_T_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 192:// V_CMP_F_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 193:// V_CMP_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 194:// V_CMP_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 195:// V_CMP_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 196:// V_CMP_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 197:// V_CMP_NE_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 198:// V_CMP_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 199:// V_CMP_T_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 200:// V_CMP_F_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 201:// V_CMP_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 202:// V_CMP_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 203:// V_CMP_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 204:// V_CMP_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 205:// V_CMP_NE_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 206:// V_CMP_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 207:// V_CMP_T_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 208:// V_CMPX_F_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 209:// V_CMPX_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 210:// V_CMPX_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 211:// V_CMPX_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 212:// V_CMPX_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 213:// V_CMPX_NE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 214:// V_CMPX_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 215:// V_CMPX_T_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 216:// V_CMPX_F_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 217:// V_CMPX_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 218:// V_CMPX_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 219:// V_CMPX_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 220:// V_CMPX_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 221:// V_CMPX_NE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 222:// V_CMPX_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 223:// V_CMPX_T_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 224:// V_CMP_F_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 225:// V_CMP_LT_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 226:// V_CMP_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 227:// V_CMP_LE_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 228:// V_CMP_GT_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 229:// V_CMP_NE_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 230:// V_CMP_GE_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 231:// V_CMP_T_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 232:// V_CMP_F_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 233:// V_CMP_LT_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 234:// V_CMP_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 235:// V_CMP_LE_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 236:// V_CMP_GT_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 237:// V_CMP_NE_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 238:// V_CMP_GE_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 239:// V_CMP_T_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 240:// V_CMPX_F_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 241:// V_CMPX_LT_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 242:// V_CMPX_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 243:// V_CMPX_LE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 244:// V_CMPX_GT_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 245:// V_CMPX_NE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 246:// V_CMPX_GE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 247:// V_CMPX_T_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 248:// V_CMPX_F_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 249:// V_CMPX_LT_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 250:// V_CMPX_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 251:// V_CMPX_LE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 252:// V_CMPX_GT_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 253:// V_CMPX_NE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 254:// V_CMPX_GE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 255:// V_CMPX_T_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP2Operands(){ +layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; +switch(layout.OP){ +case 0:// V_CNDMASK_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 1:// V_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 2:// V_SUB_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 3:// V_SUBREV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 4:// V_FMAC_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 5:// V_MUL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 6:// V_MUL_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 7:// V_MUL_HI_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 8:// V_MUL_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 9:// V_MUL_HI_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 10:// V_MIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 11:// V_MAX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 12:// V_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 13:// V_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 14:// V_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 15:// V_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 16:// V_LSHRREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 17:// V_ASHRREV_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 18:// V_LSHLREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 19:// V_AND_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 20:// V_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 21:// V_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 22:// V_MAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 25:// V_ADD_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 26:// V_SUB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 27:// V_SUBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 28:// V_ADDC_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 29:// V_SUBB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 30:// V_SUBBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 31:// V_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 32:// V_SUB_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 33:// V_SUBREV_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 34:// V_MUL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 35:// V_MAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 38:// V_ADD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 39:// V_SUB_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 40:// V_SUBREV_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 41:// V_MUL_LO_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 42:// V_LSHLREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 43:// V_LSHRREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 44:// V_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 45:// V_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 46:// V_MIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 47:// V_MAX_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 48:// V_MAX_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 49:// V_MIN_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 50:// V_MIN_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 51:// V_LDEXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 52:// V_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 53:// V_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 54:// V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 55:// V_DOT2C_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 56:// V_DOT2C_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 57:// V_DOT4C_I32_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 58:// V_DOT8C_I32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 59:// V_FMAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 60:// V_PK_FMAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 61:// V_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP2_LITERALOperands(){ +layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; +switch(layout.OP){ +case 23:// V_MADMK_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 24:// V_MADAK_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +break; +case 36:// V_MADMK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 37:// V_MADAK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP3BOperands(){ +layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; +switch(layout.OP){ +case 281:// V_ADD_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 282:// V_SUB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 283:// V_SUBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 284:// V_ADDC_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 285:// V_SUBB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 286:// V_SUBBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 480:// V_DIV_SCALE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 481:// V_DIV_SCALE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 488:// V_MAD_U64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 489:// V_MAD_I64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP3POperands(){ +layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; +switch(layout.OP){ +case 0:// V_PK_MAD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 1:// V_PK_MUL_LO_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 2:// V_PK_ADD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 3:// V_PK_SUB_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 4:// V_PK_LSHLREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 5:// V_PK_LSHRREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 6:// V_PK_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 7:// V_PK_MAX_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 8:// V_PK_MIN_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 9:// V_PK_MAD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 10:// V_PK_ADD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 11:// V_PK_SUB_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 12:// V_PK_MAX_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 13:// V_PK_MIN_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 14:// V_PK_FMA_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 15:// V_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 16:// V_PK_MUL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 17:// V_PK_MIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 18:// V_PK_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 32:// V_MAD_MIX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 33:// V_MAD_MIXLO_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 34:// V_MAD_MIXHI_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 35:// V_DOT2_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 38:// V_DOT2_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 39:// V_DOT2_U32_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 40:// V_DOT4_I32_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 41:// V_DOT4_U32_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 42:// V_DOT8_I32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 43:// V_DOT8_U32_U4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 48:// V_PK_FMA_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 49:// V_PK_MUL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 50:// V_PK_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 51:// V_PK_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 88:// V_ACCVGPR_READ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); +break; +case 89:// V_ACCVGPR_WRITE +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOP3P_MFMAOperands(){ +layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; +switch(layout.OP){ +case 64:// V_MFMA_F32_32X32X1F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 65:// V_MFMA_F32_16X16X1F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 66:// V_MFMA_F32_4X4X1F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 68:// V_MFMA_F32_32X32X2F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 69:// V_MFMA_F32_16X16X4F32 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 72:// V_MFMA_F32_32X32X4F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 73:// V_MFMA_F32_16X16X4F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 74:// V_MFMA_F32_4X4X4F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 76:// V_MFMA_F32_32X32X8F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 77:// V_MFMA_F32_16X16X16F16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 80:// V_MFMA_I32_32X32X4I8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 81:// V_MFMA_I32_16X16X4I8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 82:// V_MFMA_I32_4X4X4I8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 84:// V_MFMA_I32_32X32X8I8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 85:// V_MFMA_I32_16X16X16I8 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 99:// V_MFMA_F32_32X32X4BF16_1K +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 100:// V_MFMA_F32_16X16X4BF16_1K +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 101:// V_MFMA_F32_4X4X4BF16_1K +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 102:// V_MFMA_F32_32X32X8BF16_1K +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 103:// V_MFMA_F32_16X16X16BF16_1K +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 104:// V_MFMA_F32_32X32X2BF16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 105:// V_MFMA_F32_16X16X2BF16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 107:// V_MFMA_F32_4X4X2BF16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 108:// V_MFMA_F32_32X32X4BF16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 109:// V_MFMA_F32_16X16X8BF16 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 110:// V_MFMA_F64_16X16X4F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 111:// V_MFMA_F64_4X4X4F64 +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_cdna2::finalizeENC_VOPCOperands(){ +layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; +switch(layout.OP){ +case 16:// V_CMP_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 17:// V_CMPX_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 18:// V_CMP_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 19:// V_CMPX_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 20:// V_CMP_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 21:// V_CMPX_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 32:// V_CMP_F_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 33:// V_CMP_LT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 34:// V_CMP_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 35:// V_CMP_LE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 36:// V_CMP_GT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 37:// V_CMP_LG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 38:// V_CMP_GE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 39:// V_CMP_O_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 40:// V_CMP_U_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 41:// V_CMP_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 42:// V_CMP_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 43:// V_CMP_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 44:// V_CMP_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 45:// V_CMP_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 46:// V_CMP_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 47:// V_CMP_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 48:// V_CMPX_F_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 49:// V_CMPX_LT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 50:// V_CMPX_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 51:// V_CMPX_LE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 52:// V_CMPX_GT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 53:// V_CMPX_LG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 54:// V_CMPX_GE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 55:// V_CMPX_O_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 56:// V_CMPX_U_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 57:// V_CMPX_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 58:// V_CMPX_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 59:// V_CMPX_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 60:// V_CMPX_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 61:// V_CMPX_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 62:// V_CMPX_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 63:// V_CMPX_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 64:// V_CMP_F_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 65:// V_CMP_LT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 66:// V_CMP_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 67:// V_CMP_LE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 68:// V_CMP_GT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 69:// V_CMP_LG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 70:// V_CMP_GE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 71:// V_CMP_O_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 72:// V_CMP_U_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 73:// V_CMP_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 74:// V_CMP_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 75:// V_CMP_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 76:// V_CMP_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 77:// V_CMP_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 78:// V_CMP_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 79:// V_CMP_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 80:// V_CMPX_F_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 81:// V_CMPX_LT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 82:// V_CMPX_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 83:// V_CMPX_LE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 84:// V_CMPX_GT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 85:// V_CMPX_LG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 86:// V_CMPX_GE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 87:// V_CMPX_O_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 88:// V_CMPX_U_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 89:// V_CMPX_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 90:// V_CMPX_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 91:// V_CMPX_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 92:// V_CMPX_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 93:// V_CMPX_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 94:// V_CMPX_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 95:// V_CMPX_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 96:// V_CMP_F_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 97:// V_CMP_LT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 98:// V_CMP_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 99:// V_CMP_LE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 100:// V_CMP_GT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 101:// V_CMP_LG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 102:// V_CMP_GE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 103:// V_CMP_O_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 104:// V_CMP_U_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 105:// V_CMP_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 106:// V_CMP_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 107:// V_CMP_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 108:// V_CMP_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 109:// V_CMP_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 110:// V_CMP_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 111:// V_CMP_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 112:// V_CMPX_F_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 113:// V_CMPX_LT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 114:// V_CMPX_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 115:// V_CMPX_LE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 116:// V_CMPX_GT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 117:// V_CMPX_LG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 118:// V_CMPX_GE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 119:// V_CMPX_O_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 120:// V_CMPX_U_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 121:// V_CMPX_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 122:// V_CMPX_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 123:// V_CMPX_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 124:// V_CMPX_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 125:// V_CMPX_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 126:// V_CMPX_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 127:// V_CMPX_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 160:// V_CMP_F_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 161:// V_CMP_LT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 162:// V_CMP_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 163:// V_CMP_LE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 164:// V_CMP_GT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 165:// V_CMP_NE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 166:// V_CMP_GE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 167:// V_CMP_T_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 168:// V_CMP_F_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 169:// V_CMP_LT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 170:// V_CMP_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 171:// V_CMP_LE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 172:// V_CMP_GT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 173:// V_CMP_NE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 174:// V_CMP_GE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 175:// V_CMP_T_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 176:// V_CMPX_F_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 177:// V_CMPX_LT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 178:// V_CMPX_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 179:// V_CMPX_LE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 180:// V_CMPX_GT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 181:// V_CMPX_NE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 182:// V_CMPX_GE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 183:// V_CMPX_T_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 184:// V_CMPX_F_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 185:// V_CMPX_LT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 186:// V_CMPX_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 187:// V_CMPX_LE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 188:// V_CMPX_GT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 189:// V_CMPX_NE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 190:// V_CMPX_GE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 191:// V_CMPX_T_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 192:// V_CMP_F_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 193:// V_CMP_LT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 194:// V_CMP_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 195:// V_CMP_LE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 196:// V_CMP_GT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 197:// V_CMP_NE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 198:// V_CMP_GE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 199:// V_CMP_T_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 200:// V_CMP_F_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 201:// V_CMP_LT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 202:// V_CMP_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 203:// V_CMP_LE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 204:// V_CMP_GT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 205:// V_CMP_NE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 206:// V_CMP_GE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 207:// V_CMP_T_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 208:// V_CMPX_F_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 209:// V_CMPX_LT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 210:// V_CMPX_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 211:// V_CMPX_LE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 212:// V_CMPX_GT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 213:// V_CMPX_NE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 214:// V_CMPX_GE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 215:// V_CMPX_T_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 216:// V_CMPX_F_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 217:// V_CMPX_LT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 218:// V_CMPX_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 219:// V_CMPX_LE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 220:// V_CMPX_GT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 221:// V_CMPX_NE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 222:// V_CMPX_GE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 223:// V_CMPX_T_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 224:// V_CMP_F_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 225:// V_CMP_LT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 226:// V_CMP_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 227:// V_CMP_LE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 228:// V_CMP_GT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 229:// V_CMP_NE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 230:// V_CMP_GE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 231:// V_CMP_T_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 232:// V_CMP_F_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 233:// V_CMP_LT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 234:// V_CMP_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 235:// V_CMP_LE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 236:// V_CMP_GT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 237:// V_CMP_NE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 238:// V_CMP_GE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 239:// V_CMP_T_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 240:// V_CMPX_F_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 241:// V_CMPX_LT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 242:// V_CMPX_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 243:// V_CMPX_LE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 244:// V_CMPX_GT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 245:// V_CMPX_NE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 246:// V_CMPX_GE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 247:// V_CMPX_T_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 248:// V_CMPX_F_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 249:// V_CMPX_LT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 250:// V_CMPX_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 251:// V_CMPX_LE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 252:// V_CMPX_GT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 253:// V_CMPX_NE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 254:// V_CMPX_GE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 255:// V_CMPX_T_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +} +} diff --git a/instructionAPI/src/InstructionDecoder-amdgpu-vega.C b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C similarity index 98% rename from instructionAPI/src/InstructionDecoder-amdgpu-vega.C rename to instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C index 79ec72be3d..1666eb7387 100644 --- a/instructionAPI/src/InstructionDecoder-amdgpu-vega.C +++ b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C @@ -35,7 +35,8 @@ namespace Dyninst { namespace InstructionAPI { typedef void (InstructionDecoder_amdgpu_vega::*operandFactory)(); - typedef amdgpu_insn_entry amdgpu_insn_table[]; + typedef amdgpu_vega_insn_entry amdgpu_vega_insn_table[]; + typedef amdgpu_mask_entry amdgpu_decoder_table[]; const std::array InstructionDecoder_amdgpu_vega::condNames = { { @@ -54,7 +55,7 @@ namespace Dyninst { }; } -#include "amdgpu_insn_entry.h" +#include "amdgpu_vega_insn_entry.h" struct amdgpu_mask_entry { unsigned int mask; std::size_t branchCnt; @@ -65,7 +66,7 @@ namespace Dyninst { static const std::pair branchTable[]; }; -#include "amdgpu_opcode_tables.C" +#include "amdgpu_vega_opcode_tables.C" InstructionDecoder_amdgpu_vega::InstructionDecoder_amdgpu_vega(Architecture a) : InstructionDecoderImpl(a), @@ -554,7 +555,7 @@ namespace Dyninst { void InstructionDecoder_amdgpu_vega::finalizeVOP3POperands() { } - bool InstructionDecoder_amdgpu_vega::decodeOperands(const amdgpu_insn_entry & insn_entry) { + bool InstructionDecoder_amdgpu_vega::decodeOperands(const amdgpu_vega_insn_entry & insn_entry) { if(insn_entry.operandCnt!=0){ for (std::size_t i =0 ; i < insn_entry.operandCnt; i++){ std::mem_fun(insn_entry.operands[i])(this); @@ -575,7 +576,7 @@ namespace Dyninst { Expression::Ptr InstructionDecoder_amdgpu_vega::decodeVDST(unsigned int index){ - index += 255; + index += 256; return decodeSSRC(index); } @@ -671,7 +672,7 @@ namespace Dyninst { //std::cerr << "\nusing imm " << imm << std::endl; return Immediate::makeImmediate(Result(u32, unsign_extend32(32,immLiteral ))); }else if( 256 <= index && index <= 511){ - MachRegister mr = makeAmdgpuRegID(amdgpu_vega::vgpr0,index >>8); + MachRegister mr = makeAmdgpuRegID(amdgpu_vega::vgpr0,index &0xff); return makeRegisterExpression(mr); } @@ -680,7 +681,7 @@ namespace Dyninst { assert(0 && "unknown register value "); } -#include "amdgpu_decoder_impl_vega.C" +#include "amdgpu_vega_decoder_impl.C" void InstructionDecoder_amdgpu_vega::reset(){ immLen = 0; @@ -732,7 +733,7 @@ namespace Dyninst { if(entryToCategory(insn_in_progress->getOperation().getID())==c_BranchInsn){ std::mem_fun(decode_lookup_table[instr_family])(this); } - //debug_instr(); + debug_instr(); cout.clear(); b.start += insn_in_progress->size(); return *insn_in_progress; diff --git a/instructionAPI/src/InstructionDecoder-amdgpu-vega.h b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.h similarity index 98% rename from instructionAPI/src/InstructionDecoder-amdgpu-vega.h rename to instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.h index ce89b4701a..e263f5c939 100644 --- a/instructionAPI/src/InstructionDecoder-amdgpu-vega.h +++ b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.h @@ -43,11 +43,11 @@ namespace Dyninst { }while(0) #endif - struct amdgpu_insn_entry; + struct amdgpu_vega_insn_entry; struct amdgpu_mask_entry; class InstructionDecoder_amdgpu_vega : public InstructionDecoderImpl { - friend struct amdgpu_insn_entry; + friend struct amdgpu_vega_insn_entry; friend struct amdgpu_mask_entry; enum DecodeFamily {sopp}; @@ -66,7 +66,7 @@ namespace Dyninst { virtual bool decodeOperands(const Instruction *insn_to_complete); - bool decodeOperands(const amdgpu_insn_entry & insn_entry); + bool decodeOperands(const amdgpu_vega_insn_entry & insn_entry); virtual void doDelayedDecode(const Instruction *insn_to_complete); @@ -334,7 +334,7 @@ namespace Dyninst { void debug_instr(); -#include "amdgpu_decoder_impl_vega.h" +#include "amdgpu_vega_decoder_impl.h" }; } } diff --git a/instructionAPI/src/amdgpu_decoder_impl_vega.C b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C similarity index 84% rename from instructionAPI/src/amdgpu_decoder_impl_vega.C rename to instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C index 6d376c115c..9506a7661d 100644 --- a/instructionAPI/src/amdgpu_decoder_impl_vega.C +++ b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C @@ -5,7 +5,7 @@ void InstructionDecoder_amdgpu_vega::decodeSOP2(){ layout.ssrc1 = longfield<8,15>(insn_long); layout.sdst = longfield<16,22>(insn_long); layout.op = longfield<23,29>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sop2_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop2_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeSOP2Operands(); @@ -16,7 +16,7 @@ void InstructionDecoder_amdgpu_vega::decodeSOP1(){ layout.ssrc0 = longfield<0,7>(insn_long); layout.op = longfield<8,15>(insn_long); layout.sdst = longfield<16,22>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sop1_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop1_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeSOP1Operands(); @@ -27,7 +27,7 @@ void InstructionDecoder_amdgpu_vega::decodeSOPK(){ layout.simm16 = longfield<0,15>(insn_long); layout.sdst = longfield<16,22>(insn_long); layout.op = longfield<23,27>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sopk_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopk_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeSOPKOperands(); @@ -38,7 +38,7 @@ void InstructionDecoder_amdgpu_vega::decodeSOPC(){ layout.ssrc0 = longfield<0,7>(insn_long); layout.ssrc1 = longfield<8,15>(insn_long); layout.op = longfield<16,22>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sopc_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopc_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeSOPCOperands(); @@ -48,7 +48,7 @@ void InstructionDecoder_amdgpu_vega::decodeSOPP(){ layout_sopp & layout = insn_layout.sopp; layout.simm16 = longfield<0,15>(insn_long); layout.op = longfield<16,22>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sopp_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopp_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeSOPPOperands(); @@ -65,7 +65,7 @@ void InstructionDecoder_amdgpu_vega::decodeSMEM(){ layout.op = longfield<18,25>(insn_long); layout.offset = longfield<32,52>(insn_long); layout.soffset = longfield<57,63>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::smem_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::smem_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeSMEMOperands(); @@ -106,7 +106,7 @@ void InstructionDecoder_amdgpu_vega::decodeVOP2(){ vop_literal.bank_mask = longfield<56,59>(insn_long); vop_literal.row_mask = longfield<60,63>(insn_long); } - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop2_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop2_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeVOP2Operands(); @@ -146,7 +146,7 @@ void InstructionDecoder_amdgpu_vega::decodeVOP1(){ vop_literal.bank_mask = longfield<56,59>(insn_long); vop_literal.row_mask = longfield<60,63>(insn_long); } - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop1_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop1_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeVOP1Operands(); @@ -184,7 +184,7 @@ void InstructionDecoder_amdgpu_vega::decodeVOPC(){ vop_literal.bank_mask = longfield<56,59>(insn_long); vop_literal.row_mask = longfield<60,63>(insn_long); } - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vopc_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vopc_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeVOPCOperands(); @@ -197,7 +197,7 @@ void InstructionDecoder_amdgpu_vega::decodeVINTRP(){ layout.attr = longfield<10,15>(insn_long); layout.op = longfield<16,17>(insn_long); layout.vdst = longfield<18,25>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vintrp_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vintrp_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeVINTRPOperands(); @@ -213,7 +213,7 @@ void InstructionDecoder_amdgpu_vega::decodeDS(){ layout.data0 = longfield<40,47>(insn_long); layout.data1 = longfield<48,55>(insn_long); layout.vdst = longfield<56,63>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::ds_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::ds_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeDSOperands(); @@ -234,7 +234,7 @@ void InstructionDecoder_amdgpu_vega::decodeMTBUF(){ layout.slc = longfield<54,54>(insn_long); layout.tfe = longfield<55,55>(insn_long); layout.soffset = longfield<56,63>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::mtbuf_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mtbuf_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeMTBUFOperands(); @@ -254,7 +254,7 @@ void InstructionDecoder_amdgpu_vega::decodeMUBUF(){ layout.srsrc = longfield<48,52>(insn_long); layout.tfe = longfield<55,55>(insn_long); layout.soffset = longfield<56,63>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::mubuf_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mubuf_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeMUBUFOperands(); @@ -263,7 +263,7 @@ void InstructionDecoder_amdgpu_vega::decodeVOP3AB(){ unsigned insn_size_ = 8; layout_vop3ab & layout = insn_layout.vop3ab; layout.op = longfield<16,25>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop3ab_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3ab_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeVOP3ABOperands(); @@ -282,7 +282,7 @@ void InstructionDecoder_amdgpu_vega::decodeVOP3P(){ layout.src2 = longfield<50,58>(insn_long); layout.opsel_hi = longfield<59,60>(insn_long); layout.neg = longfield<61,63>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop3p_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3p_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeVOP3POperands(); @@ -301,7 +301,7 @@ void InstructionDecoder_amdgpu_vega::decodeFLAT(){ layout.saddr = longfield<48,54>(insn_long); layout.nv = longfield<55,55>(insn_long); layout.vdst = longfield<56,63>(insn_long); - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::flat_insn_table[layout.op]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::flat_insn_table[layout.op]; decodeOperands(insn_entry); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); finalizeFLATOperands(); @@ -373,7 +373,7 @@ void InstructionDecoder_amdgpu_vega::mainDecode(InstructionDecoder::buffer &b){ void InstructionDecoder_amdgpu_vega::mainDecodeOpcode(InstructionDecoder::buffer &b){ if(IS_SOP2(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sop2_insn_table[longfield<23,29>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop2_insn_table[longfield<23,29>(insn_long)]; setUseImm<0,7,255>(b,4); setUseImm<8,15,255>(b,4); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); @@ -381,38 +381,38 @@ void InstructionDecoder_amdgpu_vega::mainDecodeOpcode(InstructionDecoder::buffer } else if(IS_SOP1(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sop1_insn_table[longfield<8,15>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop1_insn_table[longfield<8,15>(insn_long)]; setUseImm<0,7,255>(b,4); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = SOP1; } else if(IS_SOPK(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sopk_insn_table[longfield<23,27>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopk_insn_table[longfield<23,27>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = SOPK; } else if(IS_SOPC(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sopc_insn_table[longfield<16,22>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopc_insn_table[longfield<16,22>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = SOPC; } else if(IS_SOPP(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::sopp_insn_table[longfield<16,22>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopp_insn_table[longfield<16,22>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = SOPP; } else if(IS_SMEM(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::smem_insn_table[longfield<18,25>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::smem_insn_table[longfield<18,25>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = SMEM; } else if(IS_VOP2(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop2_insn_table[longfield<25,30>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop2_insn_table[longfield<25,30>(insn_long)]; setUseImm<0,8,249>(b,4); setUseImm<0,8,250>(b,4); setUseImm<0,8,255>(b,4); @@ -421,7 +421,7 @@ void InstructionDecoder_amdgpu_vega::mainDecodeOpcode(InstructionDecoder::buffer } else if(IS_VOP1(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop1_insn_table[longfield<9,16>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop1_insn_table[longfield<9,16>(insn_long)]; setUseImm<0,8,249>(b,4); setUseImm<0,8,250>(b,4); setUseImm<0,8,255>(b,4); @@ -430,50 +430,50 @@ void InstructionDecoder_amdgpu_vega::mainDecodeOpcode(InstructionDecoder::buffer } else if(IS_VOPC(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vopc_insn_table[longfield<17,24>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vopc_insn_table[longfield<17,24>(insn_long)]; setUseImm<0,8,255>(b,4); this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = VOPC; } else if(IS_VINTRP(insn_long)){ unsigned insn_size_ = 4; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vintrp_insn_table[longfield<16,17>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vintrp_insn_table[longfield<16,17>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = VINTRP; } else if(IS_DS(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::ds_insn_table[longfield<17,24>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::ds_insn_table[longfield<17,24>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = DS; } else if(IS_MTBUF(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::mtbuf_insn_table[longfield<15,18>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mtbuf_insn_table[longfield<15,18>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = MTBUF; } else if(IS_MUBUF(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::mubuf_insn_table[longfield<18,24>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mubuf_insn_table[longfield<18,24>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = MUBUF; } else if(IS_VOP3AB(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop3ab_insn_table[longfield<16,25>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3ab_insn_table[longfield<16,25>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = VOP3AB; } else if(IS_VOP3P(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::vop3p_insn_table[longfield<11,13>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3p_insn_table[longfield<11,13>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = VOP3P; } else if(IS_FLAT(insn_long)){ unsigned insn_size_ = 8; - const amdgpu_insn_entry &insn_entry = amdgpu_insn_entry::flat_insn_table[longfield<18,24>(insn_long)]; + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::flat_insn_table[longfield<18,24>(insn_long)]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); instr_family = FLAT; } diff --git a/instructionAPI/src/amdgpu_decoder_impl_vega.h b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.h similarity index 100% rename from instructionAPI/src/amdgpu_decoder_impl_vega.h rename to instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.h diff --git a/instructionAPI/src/AMDGPU/vega/amdgpu_vega_insn_entry.h b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_insn_entry.h new file mode 100644 index 0000000000..0e56a586da --- /dev/null +++ b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_insn_entry.h @@ -0,0 +1,24 @@ +struct amdgpu_vega_insn_entry { + entryID op; + const char *mnemonic; + std::size_t operandCnt; + const operandFactory *operands; + static const amdgpu_vega_insn_table main_insn_table; + static const operandFactory operandTable[]; + static const amdgpu_vega_insn_table sop2_insn_table; + static const amdgpu_vega_insn_table sop1_insn_table; + static const amdgpu_vega_insn_table sopk_insn_table; + static const amdgpu_vega_insn_table sopc_insn_table; + static const amdgpu_vega_insn_table sopp_insn_table; + static const amdgpu_vega_insn_table smem_insn_table; + static const amdgpu_vega_insn_table vop2_insn_table; + static const amdgpu_vega_insn_table vop1_insn_table; + static const amdgpu_vega_insn_table vopc_insn_table; + static const amdgpu_vega_insn_table vintrp_insn_table; + static const amdgpu_vega_insn_table ds_insn_table; + static const amdgpu_vega_insn_table mtbuf_insn_table; + static const amdgpu_vega_insn_table mubuf_insn_table; + static const amdgpu_vega_insn_table vop3ab_insn_table; + static const amdgpu_vega_insn_table vop3p_insn_table; + static const amdgpu_vega_insn_table flat_insn_table; +}; diff --git a/instructionAPI/src/amdgpu_opcode_tables.C b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_opcode_tables.C similarity index 96% rename from instructionAPI/src/amdgpu_opcode_tables.C rename to instructionAPI/src/AMDGPU/vega/amdgpu_vega_opcode_tables.C index ae76753077..d4bf51f453 100644 --- a/instructionAPI/src/amdgpu_opcode_tables.C +++ b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_opcode_tables.C @@ -1,5 +1,5 @@ #define fn(...) (&InstructionDecoder_amdgpu_vega::__VA_ARGS__) -const operandFactory amdgpu_insn_entry::operandTable[] = { +const operandFactory amdgpu_vega_insn_entry::operandTable[] = { fn(NOTHING), fn(setSMEM),fn(setLoad<1>),//s_load_dword fn(setSMEM),fn(setLoad<2>),//s_load_dwordx2 @@ -41,7 +41,7 @@ const operandFactory amdgpu_insn_entry::operandTable[] = { fn(setBranch),fn(setModifyPC),//s_setpc_b64 fn(setBranch),fn(setModifyPC),//s_swappc_b64 }; -const amdgpu_insn_table amdgpu_insn_entry::sop2_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::sop2_insn_table = { {amdgpu_op_s_add_u32,"s_add_u32",0,&operandTable[0]} ,//0 {amdgpu_op_s_sub_u32,"s_sub_u32",0,&operandTable[0]} ,//1 {amdgpu_op_s_add_i32,"s_add_i32",0,&operandTable[0]} ,//2 @@ -95,9 +95,9 @@ const amdgpu_insn_table amdgpu_insn_entry::sop2_insn_table = { {amdgpu_op_s_pack_ll_b32_b16,"s_pack_ll_b32_b16",0,&operandTable[0]} ,//50 {amdgpu_op_s_pack_lh_b32_b16,"s_pack_lh_b32_b16",0,&operandTable[0]} ,//51 {amdgpu_op_s_pack_hh_b32_B16,"s_pack_hh_b32_B16",0,&operandTable[0]} ,//52 -}; // end s_pack_hh_b32_B16_insn_table +}; // end sop2_insn_table -const amdgpu_insn_table amdgpu_insn_entry::sop1_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::sop1_insn_table = { {amdgpu_op_s_mov_b32,"s_mov_b32",0,&operandTable[0]} ,//0 {amdgpu_op_s_mov_b64,"s_mov_b64",0,&operandTable[0]} ,//1 {amdgpu_op_s_cmov_b32,"s_cmov_b32",0,&operandTable[0]} ,//2 @@ -154,9 +154,9 @@ const amdgpu_insn_table amdgpu_insn_entry::sop1_insn_table = { {amdgpu_op_s_andn1_wrexec_b64,"s_andn1_wrexec_b64",0,&operandTable[0]} ,//53 {amdgpu_op_s_andn2_wrexec_b64,"s_andn2_wrexec_b64",0,&operandTable[0]} ,//54 {amdgpu_op_s_bitreplicate_b64_b32,"s_bitreplicate_b64_b32",0,&operandTable[0]} ,//55 -}; // end s_bitreplicate_b64_b32_insn_table +}; // end sop1_insn_table -const amdgpu_insn_table amdgpu_insn_entry::sopk_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::sopk_insn_table = { {amdgpu_op_s_movk_i32,"s_movk_i32",0,&operandTable[0]} ,//0 {amdgpu_op_s_cmovk_i32,"s_cmovk_i32",0,&operandTable[0]} ,//1 {amdgpu_op_s_cmpk_eq_i32,"s_cmpk_eq_i32",0,&operandTable[0]} ,//2 @@ -179,20 +179,20 @@ const amdgpu_insn_table amdgpu_insn_entry::sopk_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//19 {amdgpu_op_s_setreg_imm32_b32,"s_setreg_imm32_b32",0,&operandTable[0]} ,//20 {amdgpu_op_s_call_b64,"s_call_b64",2,&operandTable[72]} ,//21 -}; // end s_call_b64_insn_table +}; // end sopk_insn_table -const amdgpu_insn_table amdgpu_insn_entry::sopc_insn_table = { - {amdgpu_op_s_cmp_ge_eq_i32,"s_cmp_ge_eq_i32",0,&operandTable[0]} ,//0 - {amdgpu_op_s_cmp_ge_eq_u32,"s_cmp_ge_eq_u32",0,&operandTable[0]} ,//1 - {amdgpu_op_s_cmp_lg_i32,"s_cmp_lg_i32",0,&operandTable[0]} ,//2 - {amdgpu_op_s_cmp_lg_u32,"s_cmp_lg_u32",0,&operandTable[0]} ,//3 - {amdgpu_op_s_cmp_gt_i32,"s_cmp_gt_i32",0,&operandTable[0]} ,//4 - {amdgpu_op_s_cmp_gt_u32,"s_cmp_gt_u32",0,&operandTable[0]} ,//5 - {amdgpu_op_s_cmp_ge_i32,"s_cmp_ge_i32",0,&operandTable[0]} ,//6 - {amdgpu_op_s_cmp_ge_u32,"s_cmp_ge_u32",0,&operandTable[0]} ,//7 - {amdgpu_op_s_cmp_lt_i32,"s_cmp_lt_i32",0,&operandTable[0]} ,//8 - {amdgpu_op_s_cmp_lt_u32,"s_cmp_lt_u32",0,&operandTable[0]} ,//9 - {amdgpu_op_s_cmp_le_i32,"s_cmp_le_i32",0,&operandTable[0]} ,//10 +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::sopc_insn_table = { + {amdgpu_op_s_cmp_eq_i32,"s_cmp_eq_i32",0,&operandTable[0]} ,//0 + {amdgpu_op_s_cmp_lg_i32,"s_cmp_lg_i32",0,&operandTable[0]} ,//1 + {amdgpu_op_s_cmp_gt_i32,"s_cmp_gt_i32",0,&operandTable[0]} ,//2 + {amdgpu_op_s_cmp_ge_i32,"s_cmp_ge_i32",0,&operandTable[0]} ,//3 + {amdgpu_op_s_cmp_lt_i32,"s_cmp_lt_i32",0,&operandTable[0]} ,//4 + {amdgpu_op_s_cmp_le_i32,"s_cmp_le_i32",0,&operandTable[0]} ,//5 + {amdgpu_op_s_cmp_eq_u32,"s_cmp_eq_u32",0,&operandTable[0]} ,//6 + {amdgpu_op_s_cmp_lg_u32,"s_cmp_lg_u32",0,&operandTable[0]} ,//7 + {amdgpu_op_s_cmp_gt_u32,"s_cmp_gt_u32",0,&operandTable[0]} ,//8 + {amdgpu_op_s_cmp_ge_u32,"s_cmp_ge_u32",0,&operandTable[0]} ,//9 + {amdgpu_op_s_cmp_lt_u32,"s_cmp_lt_u32",0,&operandTable[0]} ,//10 {amdgpu_op_s_cmp_le_u32,"s_cmp_le_u32",0,&operandTable[0]} ,//11 {amdgpu_op_s_bitcmp0_b32,"s_bitcmp0_b32",0,&operandTable[0]} ,//12 {amdgpu_op_s_bitcmp1_b32,"s_bitcmp1_b32",0,&operandTable[0]} ,//13 @@ -202,9 +202,9 @@ const amdgpu_insn_table amdgpu_insn_entry::sopc_insn_table = { {amdgpu_op_s_set_gpr_idx_on,"s_set_gpr_idx_on",0,&operandTable[0]} ,//17 {amdgpu_op_s_cmp_eq_u64,"s_cmp_eq_u64",0,&operandTable[0]} ,//18 {amdgpu_op_s_cmp_lg_u64,"s_cmp_lg_u64",0,&operandTable[0]} ,//19 -}; // end s_cmp_lg_u64_insn_table +}; // end sopc_insn_table -const amdgpu_insn_table amdgpu_insn_entry::sopp_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::sopp_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//0 {amdgpu_op_s_endpgm,"s_endpgm",0,&operandTable[0]} ,//1 {amdgpu_op_s_branch,"s_branch",1,&operandTable[53]} ,//2 @@ -236,9 +236,9 @@ const amdgpu_insn_table amdgpu_insn_entry::sopp_insn_table = { {amdgpu_op_s_set_gpr_idx_off,"s_set_gpr_idx_off",0,&operandTable[0]} ,//28 {amdgpu_op_s_set_gpr_idx_mode,"s_set_gpr_idx_mode",0,&operandTable[0]} ,//29 {amdgpu_op_s_endpgm_ordered_ps_done,"s_endpgm_ordered_ps_done",0,&operandTable[0]} ,//30 -}; // end s_endpgm_ordered_ps_done_insn_table +}; // end sopp_insn_table -const amdgpu_insn_table amdgpu_insn_entry::smem_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::smem_insn_table = { {amdgpu_op_s_load_dword,"s_load_dword",2,&operandTable[1]} ,//0 {amdgpu_op_s_load_dwordx2,"s_load_dwordx2",2,&operandTable[3]} ,//1 {amdgpu_op_s_load_dwordx4,"s_load_dwordx4",2,&operandTable[5]} ,//2 @@ -412,9 +412,9 @@ const amdgpu_insn_table amdgpu_insn_entry::smem_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//170 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//171 {amdgpu_op_s_atomic_dec_x2,"s_atomic_dec_x2",0,&operandTable[0]} ,//172 -}; // end s_atomic_dec_x2_insn_table +}; // end smem_insn_table -const amdgpu_insn_table amdgpu_insn_entry::vop2_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::vop2_insn_table = { {amdgpu_op_v_cndmask_b32,"v_cndmask_b32",0,&operandTable[0]} ,//0 {amdgpu_op_v_add_f32,"v_add_f32",0,&operandTable[0]} ,//1 {amdgpu_op_v_sub_f32,"v_sub_f32",0,&operandTable[0]} ,//2 @@ -477,9 +477,9 @@ const amdgpu_insn_table amdgpu_insn_entry::vop2_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//59 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//60 {amdgpu_op_v_xno2_b32,"v_xno2_b32",0,&operandTable[0]} ,//61 -}; // end v_xno2_b32_insn_table +}; // end vop2_insn_table -const amdgpu_insn_table amdgpu_insn_entry::vop1_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::vop1_insn_table = { {amdgpu_op_v_nop,"v_nop",0,&operandTable[0]} ,//0 {amdgpu_op_v_mov_b32,"v_mov_b32",0,&operandTable[0]} ,//1 {amdgpu_op_v_readfirstlane_b32,"v_readfirstlane_b32",0,&operandTable[0]} ,//2 @@ -515,7 +515,7 @@ const amdgpu_insn_table amdgpu_insn_entry::vop1_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//32 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//33 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//34 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//35 + {amdgpu_op_v_rcp_iflag_f32,"v_rcp_iflag_f32",0,&operandTable[0]} ,//35 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//36 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//37 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//38 @@ -562,9 +562,9 @@ const amdgpu_insn_table amdgpu_insn_entry::vop1_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//79 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//80 {amdgpu_op_v_swap_b32,"v_swap_b32",0,&operandTable[0]} ,//81 -}; // end v_swap_b32_insn_table +}; // end vop1_insn_table -const amdgpu_insn_table amdgpu_insn_entry::vopc_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::vopc_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//0 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//1 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//2 @@ -821,15 +821,15 @@ const amdgpu_insn_table amdgpu_insn_entry::vopc_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//253 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//254 {amdgpu_op_v_cmpx_t_u64,"v_cmpx_t_u64",0,&operandTable[0]} ,//255 -}; // end v_cmpx_t_u64_insn_table +}; // end vopc_insn_table -const amdgpu_insn_table amdgpu_insn_entry::vintrp_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::vintrp_insn_table = { {amdgpu_op_v_interp_p1_f32,"v_interp_p1_f32",0,&operandTable[0]} ,//0 {amdgpu_op_v_interp_p2_f32,"v_interp_p2_f32",0,&operandTable[0]} ,//1 {amdgpu_op_v_interp_mov_f32,"v_interp_mov_f32",0,&operandTable[0]} ,//2 -}; // end v_interp_mov_f32_insn_table +}; // end vintrp_insn_table -const amdgpu_insn_table amdgpu_insn_entry::ds_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::ds_insn_table = { {amdgpu_op_ds_add_u32,"ds_add_u32",0,&operandTable[0]} ,//0 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//1 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//2 @@ -843,7 +843,7 @@ const amdgpu_insn_table amdgpu_insn_entry::ds_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//10 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//11 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//12 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//13 + {amdgpu_op_ds_write_b32,"ds_write_b32",0,&operandTable[0]} ,//13 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//14 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//15 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//16 @@ -884,8 +884,8 @@ const amdgpu_insn_table amdgpu_insn_entry::ds_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//51 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//52 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//53 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//54 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//55 + {amdgpu_op_ds_read_b32,"ds_read_b32",0,&operandTable[0]} ,//54 + {amdgpu_op_ds_read2_b32,"ds_read2_b32",0,&operandTable[0]} ,//55 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//56 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//57 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//58 @@ -1086,9 +1086,9 @@ const amdgpu_insn_table amdgpu_insn_entry::ds_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//253 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//254 {amdgpu_op_ds_read_b128,"ds_read_b128",0,&operandTable[0]} ,//255 -}; // end ds_read_b128_insn_table +}; // end ds_insn_table -const amdgpu_insn_table amdgpu_insn_entry::mtbuf_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::mtbuf_insn_table = { {amdgpu_op_tbuffer_load_format_x,"tbuffer_load_format_x",2,&operandTable[37]} ,//0 {amdgpu_op_tbuffer_load_format_xy,"tbuffer_load_format_xy",2,&operandTable[39]} ,//1 {amdgpu_op_tbuffer_load_format_xyz,"tbuffer_load_format_xyz",2,&operandTable[41]} ,//2 @@ -1105,9 +1105,9 @@ const amdgpu_insn_table amdgpu_insn_entry::mtbuf_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//13 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//14 {amdgpu_op_tbuffer_store_format_d16_xyzw,"tbuffer_store_format_d16_xyzw",0,&operandTable[0]} ,//15 -}; // end tbuffer_store_format_d16_xyzw_insn_table +}; // end mtbuf_insn_table -const amdgpu_insn_table amdgpu_insn_entry::mubuf_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::mubuf_insn_table = { {amdgpu_op_buffer_load_format_x,"buffer_load_format_x",2,&operandTable[21]} ,//0 {amdgpu_op_buffer_load_format_xy,"buffer_load_format_xy",2,&operandTable[23]} ,//1 {amdgpu_op_buffer_load_format_xyz,"buffer_load_format_xyz",2,&operandTable[25]} ,//2 @@ -1116,7 +1116,7 @@ const amdgpu_insn_table amdgpu_insn_entry::mubuf_insn_table = { {amdgpu_op_buffer_store_format_xy,"buffer_store_format_xy",2,&operandTable[31]} ,//5 {amdgpu_op_buffer_store_format_xyz,"buffer_store_format_xyz",2,&operandTable[33]} ,//6 {amdgpu_op_buffer_store_format_xyzw,"buffer_store_format_xyzw",2,&operandTable[35]} ,//7 - {amdgpu_op_buffer_load_dwordx4,"buffer_load_dwordx4",0,&operandTable[0]} ,//8 + {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//8 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//9 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//10 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//11 @@ -1128,10 +1128,10 @@ const amdgpu_insn_table amdgpu_insn_entry::mubuf_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//17 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//18 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//19 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//20 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//21 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//22 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//23 + {amdgpu_op_buffer_load_dword,"buffer_load_dword",0,&operandTable[0]} ,//20 + {amdgpu_op_buffer_load_dwordx2,"buffer_load_dwordx2",0,&operandTable[0]} ,//21 + {amdgpu_op_buffer_load_dwordx3,"buffer_load_dwordx3",0,&operandTable[0]} ,//22 + {amdgpu_op_buffer_load_dwordx4,"buffer_load_dwordx4",0,&operandTable[0]} ,//23 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//24 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//25 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//26 @@ -1217,9 +1217,9 @@ const amdgpu_insn_table amdgpu_insn_entry::mubuf_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//106 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//107 {amdgpu_op_buffer_atomic_dec_x2,"buffer_atomic_dec_x2",0,&operandTable[0]} ,//108 -}; // end buffer_atomic_dec_x2_insn_table +}; // end mubuf_insn_table -const amdgpu_insn_table amdgpu_insn_entry::vop3ab_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::vop3ab_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//0 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//1 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//2 @@ -1575,7 +1575,7 @@ const amdgpu_insn_table amdgpu_insn_entry::vop3ab_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//352 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//353 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//354 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//355 + {amdgpu_op_v_rcp_iflag_f32_e64,"v_rcp_iflag_f32_e64",0,&operandTable[0]} ,//355 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//356 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//357 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//358 @@ -1700,16 +1700,16 @@ const amdgpu_insn_table amdgpu_insn_entry::vop3ab_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//477 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//478 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//479 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//480 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//481 + {amdgpu_op_v_div_scale_f32,"v_div_scale_f32",0,&operandTable[0]} ,//480 + {amdgpu_op_v_div_scale_f64,"v_div_scale_f64",0,&operandTable[0]} ,//481 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//482 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//483 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//484 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//485 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//486 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//487 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//488 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//489 + {amdgpu_op_v_mad_u64_u32,"v_mad_u64_u32",0,&operandTable[0]} ,//488 + {amdgpu_op_v_mad_i64_i32,"v_mad_i64_i32",0,&operandTable[0]} ,//489 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//490 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//491 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//492 @@ -1865,9 +1865,9 @@ const amdgpu_insn_table amdgpu_insn_entry::vop3ab_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//642 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//643 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//644 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//645 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//646 - {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//647 + {amdgpu_op_v_mul_lo_u32,"v_mul_lo_u32",0,&operandTable[0]} ,//645 + {amdgpu_op_v_mul_hi_u32,"v_mul_hi_u32",0,&operandTable[0]} ,//646 + {amdgpu_op_v_mul_hi_i32,"v_mul_hi_i32",0,&operandTable[0]} ,//647 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//648 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//649 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//650 @@ -1893,9 +1893,9 @@ const amdgpu_insn_table amdgpu_insn_entry::vop3ab_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//670 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//671 {amdgpu_op_v_pack_b32_f16,"v_pack_b32_f16",0,&operandTable[0]} ,//672 -}; // end v_pack_b32_f16_insn_table +}; // end vop3ab_insn_table -const amdgpu_insn_table amdgpu_insn_entry::vop3p_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::vop3p_insn_table = { {amdgpu_op_v_pk_mad_i16,"v_pk_mad_i16",0,&operandTable[0]} ,//0 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//1 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//2 @@ -1940,9 +1940,9 @@ const amdgpu_insn_table amdgpu_insn_entry::vop3p_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//41 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//42 {amdgpu_op_v_dot8_u32_u4,"v_dot8_u32_u4",0,&operandTable[0]} ,//43 -}; // end v_dot8_u32_u4_insn_table +}; // end vop3p_insn_table -const amdgpu_insn_table amdgpu_insn_entry::flat_insn_table = { +const amdgpu_vega_insn_table amdgpu_vega_insn_entry::flat_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//0 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//1 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//2 @@ -1959,11 +1959,11 @@ const amdgpu_insn_table amdgpu_insn_entry::flat_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//13 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//14 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//15 - {amdgpu_op_load_ubyte,"load_ubyte",0,&operandTable[0]} ,//16 + {amdgpu_op_flat_load_ubyte,"flat_load_ubyte",0,&operandTable[0]} ,//16 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//17 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//18 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//19 - {amdgpu_op_load_dword,"load_dword",0,&operandTable[0]} ,//20 + {amdgpu_op_flat_load_dword,"flat_load_dword",0,&operandTable[0]} ,//20 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//21 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//22 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//23 @@ -1971,7 +1971,7 @@ const amdgpu_insn_table amdgpu_insn_entry::flat_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//25 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//26 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//27 - {amdgpu_op_store_dword,"store_dword",0,&operandTable[0]} ,//28 + {amdgpu_op_flat_store_dword,"flat_store_dword",0,&operandTable[0]} ,//28 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//29 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//30 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//31 @@ -2052,5 +2052,5 @@ const amdgpu_insn_table amdgpu_insn_entry::flat_insn_table = { {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//106 {amdgpu_op_s_nop,"s_nop",0,&operandTable[0]} ,//107 {amdgpu_op_atomic_dec_x2,"atomic_dec_x2",0,&operandTable[0]} ,//108 -}; // end atomic_dec_x2_insn_table +}; // end flat_insn_table diff --git a/instructionAPI/src/Instruction.C b/instructionAPI/src/Instruction.C index 1063d77fc9..a22ff3f109 100644 --- a/instructionAPI/src/Instruction.C +++ b/instructionAPI/src/Instruction.C @@ -57,622 +57,587 @@ using namespace NS_x86; #include "../../common/src/singleton_object_pool.h" #include "ArchSpecificFormatters.h" +#define DECODE_OPERANDS() \ + do { \ + if (arch_decoded_from != Arch_cuda && arch_decoded_from != Arch_amdgpu_cdna2 && m_Operands.empty()) { \ + decodeOperands(); \ + }\ + }while(0) + namespace Dyninst { - namespace InstructionAPI - { - - static const int IAPI_major_version = DYNINST_MAJOR_VERSION; - static const int IAPI_minor_version = DYNINST_MINOR_VERSION; - static const int IAPI_maintenance_version = DYNINST_PATCH_VERSION; - - void Instruction::version(int& major, int& minor, int& maintenance) - { - major = IAPI_major_version; - minor = IAPI_minor_version; - maintenance = IAPI_maintenance_version; - } - - int Instruction::numInsnsAllocated = 0; - INSTRUCTION_EXPORT Instruction::Instruction(Operation what, - size_t size, const unsigned char* raw, - Dyninst::Architecture arch) - : m_InsnOp(what), m_Valid(true), arch_decoded_from(arch), - formatter(ArchSpecificFormatter::getFormatter(arch)) + namespace InstructionAPI { - copyRaw(size, raw); -#if defined(DEBUG_INSN_ALLOCATIONS) - numInsnsAllocated++; - if((numInsnsAllocated % 1000) == 0) + static const int IAPI_major_version = DYNINST_MAJOR_VERSION; + static const int IAPI_minor_version = DYNINST_MINOR_VERSION; + static const int IAPI_maintenance_version = DYNINST_PATCH_VERSION; + + void Instruction::version(int& major, int& minor, int& maintenance) { - fprintf(stderr, "Instruction CTOR, %d insns allocated\n", numInsnsAllocated); + major = IAPI_major_version; + minor = IAPI_minor_version; + maintenance = IAPI_maintenance_version; } -#endif - } - void Instruction::copyRaw(size_t size, const unsigned char* raw) - { - - if(raw) - { - m_size = size; - m_RawInsn.small_insn = 0; - if(size <= sizeof(m_RawInsn.small_insn)) - { - memcpy(&m_RawInsn.small_insn, raw, size); - } - else - { - m_RawInsn.large_insn = new unsigned char[size]; - memcpy(m_RawInsn.large_insn, raw, size); - } - } - else - { - m_size = 0; - m_RawInsn.small_insn = 0; - } - } + int Instruction::numInsnsAllocated = 0; + INSTRUCTION_EXPORT Instruction::Instruction(Operation what, + size_t size, const unsigned char* raw, + Dyninst::Architecture arch) + : m_InsnOp(what), m_Valid(true), arch_decoded_from(arch), + formatter(ArchSpecificFormatter::getFormatter(arch)) + { + copyRaw(size, raw); - void Instruction::decodeOperands() const - { - //m_Operands.reserve(5); - InstructionDecoder dec(ptr(), size(), arch_decoded_from); - dec.doDelayedDecode(this); - } - - INSTRUCTION_EXPORT Instruction::Instruction() : - m_Valid(false), m_size(0), arch_decoded_from(Arch_none), formatter(ArchSpecificFormatter::getFormatter(Arch_x86_64)) - { #if defined(DEBUG_INSN_ALLOCATIONS) - numInsnsAllocated++; - if((numInsnsAllocated % 1000) == 0) + numInsnsAllocated++; + if((numInsnsAllocated % 1000) == 0) + { + fprintf(stderr, "Instruction CTOR, %d insns allocated\n", numInsnsAllocated); + } +#endif + } + + void Instruction::copyRaw(size_t size, const unsigned char* raw) + { + + if(raw) + { + m_size = size; + m_RawInsn.small_insn = 0; + if(size <= sizeof(m_RawInsn.small_insn)) + { + memcpy(&m_RawInsn.small_insn, raw, size); + } + else + { + m_RawInsn.large_insn = new unsigned char[size]; + memcpy(m_RawInsn.large_insn, raw, size); + } + } + else + { + m_size = 0; + m_RawInsn.small_insn = 0; + } + } + + void Instruction::decodeOperands() const { - fprintf(stderr, "Instruction CTOR, %d insns allocated\n", numInsnsAllocated); + //m_Operands.reserve(5); + InstructionDecoder dec(ptr(), size(), arch_decoded_from); + dec.doDelayedDecode(this); } + + INSTRUCTION_EXPORT Instruction::Instruction() : + m_Valid(false), m_size(0), arch_decoded_from(Arch_none), formatter(ArchSpecificFormatter::getFormatter(Arch_x86_64)) + { +#if defined(DEBUG_INSN_ALLOCATIONS) + numInsnsAllocated++; + if((numInsnsAllocated % 1000) == 0) + { + fprintf(stderr, "Instruction CTOR, %d insns allocated\n", numInsnsAllocated); + } #endif - } - - INSTRUCTION_EXPORT Instruction::~Instruction() - { + } + + INSTRUCTION_EXPORT Instruction::~Instruction() + { - if(m_size > sizeof(m_RawInsn.small_insn)) - { - delete[] m_RawInsn.large_insn; - } + if(m_size > sizeof(m_RawInsn.small_insn)) + { + delete[] m_RawInsn.large_insn; + } #if defined(DEBUG_INSN_ALLOCATIONS) - numInsnsAllocated--; - if((numInsnsAllocated % 1000) == 0) - { - fprintf(stderr, "Instruction DTOR, %d insns allocated\n", numInsnsAllocated); - } + numInsnsAllocated--; + if((numInsnsAllocated % 1000) == 0) + { + fprintf(stderr, "Instruction DTOR, %d insns allocated\n", numInsnsAllocated); + } #endif - } + } - INSTRUCTION_EXPORT Instruction::Instruction(const Instruction& o) : - m_Operands(o.m_Operands), - m_InsnOp(o.m_InsnOp), - m_Valid(o.m_Valid), - arch_decoded_from(o.arch_decoded_from), - formatter(o.formatter) + INSTRUCTION_EXPORT Instruction::Instruction(const Instruction& o) : + m_Operands(o.m_Operands), + m_InsnOp(o.m_InsnOp), + m_Valid(o.m_Valid), + arch_decoded_from(o.arch_decoded_from), + formatter(o.formatter) - { - m_size = o.m_size; - if(o.m_size > sizeof(m_RawInsn.small_insn)) - { - m_RawInsn.large_insn = new unsigned char[o.m_size]; - memcpy(m_RawInsn.large_insn, o.m_RawInsn.large_insn, m_size); - } - else - { - m_RawInsn.small_insn = o.m_RawInsn.small_insn; - } - - m_Successors = o.m_Successors; + { + m_size = o.m_size; + if(o.m_size > sizeof(m_RawInsn.small_insn)) + { + m_RawInsn.large_insn = new unsigned char[o.m_size]; + memcpy(m_RawInsn.large_insn, o.m_RawInsn.large_insn, m_size); + } + else + { + m_RawInsn.small_insn = o.m_RawInsn.small_insn; + } + + m_Successors = o.m_Successors; #if defined(DEBUG_INSN_ALLOCATIONS) - numInsnsAllocated++; - if((numInsnsAllocated % 1000) == 0) - { - fprintf(stderr, "Instruction COPY CTOR, %d insns allocated\n", numInsnsAllocated); - } + numInsnsAllocated++; + if((numInsnsAllocated % 1000) == 0) + { + fprintf(stderr, "Instruction COPY CTOR, %d insns allocated\n", numInsnsAllocated); + } #endif - } + } - INSTRUCTION_EXPORT const Instruction& Instruction::operator=(const Instruction& rhs) - { - m_Operands = rhs.m_Operands; - //m_Operands.reserve(rhs.m_Operands.size()); - //std::copy(rhs.m_Operands.begin(), rhs.m_Operands.end(), std::back_inserter(m_Operands)); - if(m_size > sizeof(m_RawInsn.small_insn)) - { - delete[] m_RawInsn.large_insn; - } - - m_size = rhs.m_size; - if(rhs.m_size > sizeof(m_RawInsn.small_insn)) - { - m_RawInsn.large_insn = new unsigned char[rhs.m_size]; - memcpy(m_RawInsn.large_insn, rhs.m_RawInsn.large_insn, m_size); - } - else - { - m_RawInsn.small_insn = rhs.m_RawInsn.small_insn; - } - - - m_InsnOp = rhs.m_InsnOp; - m_Valid = rhs.m_Valid; - formatter = rhs.formatter; - arch_decoded_from = rhs.arch_decoded_from; - m_Successors = rhs.m_Successors; - return *this; - } - - INSTRUCTION_EXPORT bool Instruction::isValid() const - { - return m_Valid; - } - - INSTRUCTION_EXPORT Operation& Instruction::getOperation() - { - return m_InsnOp; - } - INSTRUCTION_EXPORT const Operation& Instruction::getOperation() const - { - return m_InsnOp; - } + INSTRUCTION_EXPORT const Instruction& Instruction::operator=(const Instruction& rhs) + { + m_Operands = rhs.m_Operands; + //m_Operands.reserve(rhs.m_Operands.size()); + //std::copy(rhs.m_Operands.begin(), rhs.m_Operands.end(), std::back_inserter(m_Operands)); + if(m_size > sizeof(m_RawInsn.small_insn)) + { + delete[] m_RawInsn.large_insn; + } + + m_size = rhs.m_size; + if(rhs.m_size > sizeof(m_RawInsn.small_insn)) + { + m_RawInsn.large_insn = new unsigned char[rhs.m_size]; + memcpy(m_RawInsn.large_insn, rhs.m_RawInsn.large_insn, m_size); + } + else + { + m_RawInsn.small_insn = rhs.m_RawInsn.small_insn; + } + + + m_InsnOp = rhs.m_InsnOp; + m_Valid = rhs.m_Valid; + formatter = rhs.formatter; + arch_decoded_from = rhs.arch_decoded_from; + m_Successors = rhs.m_Successors; + return *this; + } + + INSTRUCTION_EXPORT bool Instruction::isValid() const + { + return m_Valid; + } - INSTRUCTION_EXPORT void Instruction::getOperands(std::vector& operands) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - std::copy(m_Operands.begin(), m_Operands.end(), std::back_inserter(operands)); - } - - INSTRUCTION_EXPORT Operand Instruction::getOperand(int index) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } + INSTRUCTION_EXPORT Operation& Instruction::getOperation() + { + return m_InsnOp; + } + INSTRUCTION_EXPORT const Operation& Instruction::getOperation() const + { + return m_InsnOp; + } - if(index < 0 || index >= (int)(m_Operands.size())) + INSTRUCTION_EXPORT void Instruction::getOperands(std::vector& operands) const { - // Out of range = empty operand - return Operand(Expression::Ptr(), false, false); + + DECODE_OPERANDS(); + std::copy(m_Operands.begin(), m_Operands.end(), std::back_inserter(operands)); } - std::list::const_iterator found = m_Operands.begin(); - std::advance(found, index); - return *found; - } - - INSTRUCTION_EXPORT const void* Instruction::ptr() const - { - if(m_size > sizeof(m_RawInsn.small_insn)) - { - return m_RawInsn.large_insn; - } - else - { - return reinterpret_cast(&m_RawInsn.small_insn); - } - } - INSTRUCTION_EXPORT unsigned char Instruction::rawByte(unsigned int index) const - { - if(index >= m_size) return 0; - if(m_size > sizeof(m_RawInsn.small_insn)) - { - return m_RawInsn.large_insn[index]; - } - else - { - return reinterpret_cast(&m_RawInsn.small_insn)[index]; - } - } - - INSTRUCTION_EXPORT size_t Instruction::size() const - { - return m_size; - - } - - INSTRUCTION_EXPORT void Instruction::getReadSet(std::set& regsRead) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - curOperand->getReadSet(regsRead); - } - std::copy(m_InsnOp.implicitReads().begin(), m_InsnOp.implicitReads().end(), - std::inserter(regsRead, regsRead.begin())); - - } - - INSTRUCTION_EXPORT void Instruction::getWriteSet(std::set& regsWritten) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - curOperand->getWriteSet(regsWritten); - } - std::copy(m_InsnOp.implicitWrites().begin(), m_InsnOp.implicitWrites().end(), - std::inserter(regsWritten, regsWritten.begin())); - - } - - INSTRUCTION_EXPORT bool Instruction::isRead(Expression::Ptr candidate) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - if(curOperand->isRead(candidate)) - { - return true; - } - } - return m_InsnOp.isRead(candidate); - } - INSTRUCTION_EXPORT bool Instruction::isWritten(Expression::Ptr candidate) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - if(curOperand->isWritten(candidate)) - { - return true; - } - } - return m_InsnOp.isWritten(candidate); - } - - INSTRUCTION_EXPORT bool Instruction::readsMemory() const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - if(getCategory() == c_PrefetchInsn) - { - return false; - } - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - if(curOperand->readsMemory()) - { - return true; - } - } - return !m_InsnOp.getImplicitMemReads().empty(); - } - - INSTRUCTION_EXPORT bool Instruction::writesMemory() const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - if(curOperand->writesMemory()) - { - return true; - } - } - return !m_InsnOp.getImplicitMemWrites().empty(); - } - - INSTRUCTION_EXPORT void Instruction::getMemoryReadOperands(std::set& memAccessors) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - curOperand->addEffectiveReadAddresses(memAccessors); - } - std::copy(m_InsnOp.getImplicitMemReads().begin(), m_InsnOp.getImplicitMemReads().end(), std::inserter(memAccessors, -memAccessors.begin())); - } - - INSTRUCTION_EXPORT void Instruction::getMemoryWriteOperands(std::set& memAccessors) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - - for(std::list::const_iterator curOperand = m_Operands.begin(); - curOperand != m_Operands.end(); - ++curOperand) - { - curOperand->addEffectiveWriteAddresses(memAccessors); - } - std::copy(m_InsnOp.getImplicitMemWrites().begin(), m_InsnOp.getImplicitMemWrites().end(), std::inserter(memAccessors, -memAccessors.begin())); - } + INSTRUCTION_EXPORT Operand Instruction::getOperand(int index) const + { + DECODE_OPERANDS(); + if(index < 0 || index >= (int)(m_Operands.size())) + { + // Out of range = empty operand + return Operand(Expression::Ptr(), false, false); + } + std::list::const_iterator found = m_Operands.begin(); + std::advance(found, index); + return *found; + } - INSTRUCTION_EXPORT Operand Instruction::getPredicateOperand() const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } + INSTRUCTION_EXPORT const void* Instruction::ptr() const + { + if(m_size > sizeof(m_RawInsn.small_insn)) + { + return m_RawInsn.large_insn; + } + else + { + return reinterpret_cast(&m_RawInsn.small_insn); + } + } + INSTRUCTION_EXPORT unsigned char Instruction::rawByte(unsigned int index) const + { + if(index >= m_size) return 0; + if(m_size > sizeof(m_RawInsn.small_insn)) + { + return m_RawInsn.large_insn[index]; + } + else + { + return reinterpret_cast(&m_RawInsn.small_insn)[index]; + } + } + + INSTRUCTION_EXPORT size_t Instruction::size() const + { + return m_size; - for(auto const &op : m_Operands) { - if (op.isTruePredicate() || op.isFalsePredicate()) { - return op; } - } - return Operand(Expression::Ptr(), false, false); - } - INSTRUCTION_EXPORT bool Instruction::hasPredicateOperand() const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } + INSTRUCTION_EXPORT void Instruction::getReadSet(std::set& regsRead) const + { + DECODE_OPERANDS(); + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + curOperand->getReadSet(regsRead); + } + std::copy(m_InsnOp.implicitReads().begin(), m_InsnOp.implicitReads().end(), + std::inserter(regsRead, regsRead.begin())); - for(auto const &op : m_Operands) { - if (op.isTruePredicate() || op.isFalsePredicate()) { - return true; } - } - return false; - } + INSTRUCTION_EXPORT void Instruction::getWriteSet(std::set& regsWritten) const + { + DECODE_OPERANDS(); + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + curOperand->getWriteSet(regsWritten); + } + std::copy(m_InsnOp.implicitWrites().begin(), m_InsnOp.implicitWrites().end(), + std::inserter(regsWritten, regsWritten.begin())); - INSTRUCTION_EXPORT Expression::Ptr Instruction::getControlFlowTarget() const - { - // We assume control flow transfer instructions have the PC as - // an implicit write, and that we have decoded the control flow - // target's full location as the first and only operand. - // If this is not the case, we'll squawk for the time being... - if(getCategory() == c_NoCategory || - getCategory() == c_CompareInsn || - getCategory() == c_PrefetchInsn) + } + + INSTRUCTION_EXPORT bool Instruction::isRead(Expression::Ptr candidate) const { - return Expression::Ptr(); + DECODE_OPERANDS(); + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + // Check if the candidate is read as an explicit operand + if(curOperand->isRead(candidate)) + { + return true; + } + } + // Check if the candidate is read as an implicit operand + return m_InsnOp.isRead(candidate); } - if(getCategory() == c_ReturnInsn) + + INSTRUCTION_EXPORT bool Instruction::isWritten(Expression::Ptr candidate) const { - return makeReturnExpression(); + DECODE_OPERANDS(); + + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + if(curOperand->isWritten(candidate)) + { + return true; + } + } + return m_InsnOp.isWritten(candidate); } - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); + + INSTRUCTION_EXPORT bool Instruction::readsMemory() const + { + DECODE_OPERANDS(); + if(getCategory() == c_PrefetchInsn) + { + return false; + } + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + if(curOperand->readsMemory()) + { + return true; + } + } + return !m_InsnOp.getImplicitMemReads().empty(); } - if(m_Successors.empty()) + INSTRUCTION_EXPORT bool Instruction::writesMemory() const { - return Expression::Ptr(); + DECODE_OPERANDS(); + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + if(curOperand->writesMemory()) + { + return true; + } + } + return !m_InsnOp.getImplicitMemWrites().empty(); } - return m_Successors.front().target; - } - INSTRUCTION_EXPORT ArchSpecificFormatter& Instruction::getFormatter() const { - return formatter; - } + INSTRUCTION_EXPORT void Instruction::getMemoryReadOperands(std::set& memAccessors) const + { + DECODE_OPERANDS(); + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + curOperand->addEffectiveReadAddresses(memAccessors); + } + std::copy(m_InsnOp.getImplicitMemReads().begin(), m_InsnOp.getImplicitMemReads().end(), std::inserter(memAccessors, + memAccessors.begin())); + } - INSTRUCTION_EXPORT std::string Instruction::format(Address addr) const - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); + INSTRUCTION_EXPORT void Instruction::getMemoryWriteOperands(std::set& memAccessors) const + { + DECODE_OPERANDS(); + for(std::list::const_iterator curOperand = m_Operands.begin(); + curOperand != m_Operands.end(); + ++curOperand) + { + curOperand->addEffectiveWriteAddresses(memAccessors); + } + std::copy(m_InsnOp.getImplicitMemWrites().begin(), m_InsnOp.getImplicitMemWrites().end(), std::inserter(memAccessors, + memAccessors.begin())); } - //remove this once ArchSpecificFormatter is extended for all architectures + INSTRUCTION_EXPORT Operand Instruction::getPredicateOperand() const + { + DECODE_OPERANDS(); + for(auto const &op : m_Operands) { + if (op.isTruePredicate() || op.isFalsePredicate()) { + return op; + } + } - std::string opstr = m_InsnOp.format(); - opstr += " "; - std::list::const_iterator currOperand; - std::vector formattedOperands; - int op = 0; - for(currOperand = m_Operands.begin(); - currOperand != m_Operands.end(); - op++, ++currOperand) + return Operand(Expression::Ptr(), false, false); + } + INSTRUCTION_EXPORT bool Instruction::hasPredicateOperand() const { - /* If this operand is implicit, don't put it in the list of operands. */ - if(currOperand->isImplicit()) - continue; + DECODE_OPERANDS(); + for(auto const &op : m_Operands) { + if (op.isTruePredicate() || op.isFalsePredicate()) { + return true; + } + } + + return false; + } - formattedOperands.push_back(currOperand->format(getArch(), addr)); + INSTRUCTION_EXPORT Expression::Ptr Instruction::getControlFlowTarget() const + { + // We assume control flow transfer instructions have the PC as + // an implicit write, and that we have decoded the control flow + // target's full location as the first and only operand. + // If this is not the case, we'll squawk for the time being... + if(getCategory() == c_NoCategory || + getCategory() == c_CompareInsn || + getCategory() == c_PrefetchInsn) + { + return Expression::Ptr(); + } + if(getCategory() == c_ReturnInsn) + { + return makeReturnExpression(); + } + DECODE_OPERANDS(); + if(m_Successors.empty()) + { + return Expression::Ptr(); + } + return m_Successors.front().target; } + INSTRUCTION_EXPORT ArchSpecificFormatter& Instruction::getFormatter() const { + return formatter; + } + + INSTRUCTION_EXPORT std::string Instruction::format(Address addr) const + { + DECODE_OPERANDS(); + //remove this once ArchSpecificFormatter is extended for all architectures + + std::string opstr = m_InsnOp.format(); + opstr += " "; + std::list::const_iterator currOperand; + std::vector formattedOperands; + int op = 0; + for(currOperand = m_Operands.begin(); + currOperand != m_Operands.end(); + op++, ++currOperand) + { + /* If this operand is implicit, don't put it in the list of operands. */ + if(currOperand->isImplicit()) + continue; + + formattedOperands.push_back(currOperand->format(getArch(), addr)); + } + #if defined(DEBUG_READ_WRITE) - std::set tmp; - getReadSet(tmp); - cout << "Read set:" << endl; - for(std::set::iterator i = tmp.begin(); - i != tmp.end(); - ++i) - { - cout << (*i)->format() << " "; - } - cout << endl; - tmp.clear(); - getWriteSet(tmp); - cout << "Write set:" << endl; - for(std::set::iterator i = tmp.begin(); - i != tmp.end(); - ++i) - { - cout << (*i)->format() << " "; - } - cout << endl; - std::set mem; - getMemoryReadOperands(mem); - cout << "Read mem:" << endl; - for(std::set::iterator i = mem.begin(); - i != mem.end(); - ++i) - { - cout << (*i)->format() << " "; - } - cout << endl; - mem.clear(); - getMemoryWriteOperands(mem); - cout << "Write mem:" << endl; - for(std::set::iterator i = mem.begin(); - i != mem.end(); - ++i) - { - cout << (*i)->format() << " "; - } - cout << endl; + std::set tmp; + getReadSet(tmp); + cout << "Read set:" << endl; + for(std::set::iterator i = tmp.begin(); + i != tmp.end(); + ++i) + { + cout << (*i)->format() << " "; + } + cout << endl; + tmp.clear(); + getWriteSet(tmp); + cout << "Write set:" << endl; + for(std::set::iterator i = tmp.begin(); + i != tmp.end(); + ++i) + { + cout << (*i)->format() << " "; + } + cout << endl; + std::set mem; + getMemoryReadOperands(mem); + cout << "Read mem:" << endl; + for(std::set::iterator i = mem.begin(); + i != mem.end(); + ++i) + { + cout << (*i)->format() << " "; + } + cout << endl; + mem.clear(); + getMemoryWriteOperands(mem); + cout << "Write mem:" << endl; + for(std::set::iterator i = mem.begin(); + i != mem.end(); + ++i) + { + cout << (*i)->format() << " "; + } + cout << endl; #endif // defined(DEBUG_READ_WRITE) - return opstr + formatter.getInstructionString(formattedOperands); - } + return opstr + formatter.getInstructionString(formattedOperands); + } - INSTRUCTION_EXPORT bool Instruction::allowsFallThrough() const - { - switch(m_InsnOp.getID()) - { - case e_ret_far: - case e_ret_near: - case e_iret: - case e_jmp: - case e_hlt: - case e_sysret: - case e_sysexit: - case e_call: - case e_syscall: - case amdgpu_op_s_swappc_b64: - return false; - case e_jnb: - case e_jb: - case e_jb_jnaej_j: - case e_jbe: - case e_jcxz_jec: - case e_jl: - case e_jle: - case e_jnb_jae_j: - case e_jnbe: - case e_jnl: - case e_jnle: - case e_jno: - case e_jnp: - case e_jns: - case e_jnz: - case e_jo: - case e_jp: - case e_js: - case e_jz: - return true; - default: - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - for(cftConstIter targ = m_Successors.begin(); - targ != m_Successors.end(); - ++targ) - { - if(targ->isFallthrough) return true; - } - return m_Successors.empty(); - } - } - // can't happen but make the compiler happy - return false; - } - INSTRUCTION_EXPORT bool Instruction::isLegalInsn() const - { - return (m_InsnOp.getID() != e_No_Entry); - } + INSTRUCTION_EXPORT bool Instruction::allowsFallThrough() const + { + switch(m_InsnOp.getID()) + { + case e_ret_far: + case e_ret_near: + case e_iret: + case e_jmp: + case e_hlt: + case e_sysret: + case e_sysexit: + case e_call: + case e_syscall: + case amdgpu_op_s_swappc_b64: + return false; + case e_jnb: + case e_jb: + case e_jb_jnaej_j: + case e_jbe: + case e_jcxz_jec: + case e_jl: + case e_jle: + case e_jnb_jae_j: + case e_jnbe: + case e_jnl: + case e_jnle: + case e_jno: + case e_jnp: + case e_jns: + case e_jnz: + case e_jo: + case e_jp: + case e_js: + case e_jz: + return true; + default: + { + DECODE_OPERANDS(); + for(cftConstIter targ = m_Successors.begin(); + targ != m_Successors.end(); + ++targ) + { + if(targ->isFallthrough) return true; + } + return m_Successors.empty(); + } + } + // can't happen but make the compiler happy + return false; + } + INSTRUCTION_EXPORT bool Instruction::isLegalInsn() const + { + return (m_InsnOp.getID() != e_No_Entry); + } - INSTRUCTION_EXPORT Architecture Instruction::getArch() const { - return arch_decoded_from; - } + INSTRUCTION_EXPORT Architecture Instruction::getArch() const { + return arch_decoded_from; + } - Expression::Ptr Instruction::makeReturnExpression() const - { - Expression::Ptr stackPtr = Expression::Ptr(new RegisterAST(MachRegister::getStackPointer(arch_decoded_from), - 0, MachRegister::getStackPointer(arch_decoded_from).size())); - Expression::Ptr retLoc = Expression::Ptr(new Dereference(stackPtr, u32)); - return retLoc; - } - INSTRUCTION_EXPORT InsnCategory Instruction::getCategory() const - { - if(m_InsnOp.isVectorInsn) return c_VectorInsn; - InsnCategory c = entryToCategory(m_InsnOp.getID()); - if(c == c_BranchInsn && (arch_decoded_from == Arch_ppc32 || arch_decoded_from == Arch_ppc64)) - { - if (arch_decoded_from != Arch_cuda && m_Operands.empty()) { - decodeOperands(); - } - for(cftConstIter cft = cft_begin(); - cft != cft_end(); - ++cft) - { - if(cft->isCall) - { - return c_CallInsn; - } - } - if(m_InsnOp.getID() == power_op_bclr) - { - return c_ReturnInsn; - } - } - return c; - } - void Instruction::addSuccessor(Expression::Ptr e, - bool isCall, - bool isIndirect, - bool isConditional, - bool isFallthrough) const - { - CFT c(e, isCall, isIndirect, isConditional, isFallthrough); - m_Successors.push_back(c); - if (!isFallthrough) appendOperand(e, true, false); - } - void Instruction::appendOperand(Expression::Ptr e, bool isRead, bool isWritten) const - { - m_Operands.push_back(Operand(e, isRead, isWritten)); - } + Expression::Ptr Instruction::makeReturnExpression() const + { + Expression::Ptr stackPtr = Expression::Ptr(new RegisterAST(MachRegister::getStackPointer(arch_decoded_from), + 0, MachRegister::getStackPointer(arch_decoded_from).size())); + Expression::Ptr retLoc = Expression::Ptr(new Dereference(stackPtr, u32)); + return retLoc; + } + INSTRUCTION_EXPORT InsnCategory Instruction::getCategory() const + { + if(m_InsnOp.isVectorInsn) return c_VectorInsn; + InsnCategory c = entryToCategory(m_InsnOp.getID()); + if(c == c_BranchInsn && (arch_decoded_from == Arch_ppc32 || arch_decoded_from == Arch_ppc64)) + { + DECODE_OPERANDS(); + for(cftConstIter cft = cft_begin(); + cft != cft_end(); + ++cft) + { + if(cft->isCall) + { + return c_CallInsn; + } + } + if(m_InsnOp.getID() == power_op_bclr) + { + return c_ReturnInsn; + } + } + return c; + } + void Instruction::addSuccessor(Expression::Ptr e, + bool isCall, + bool isIndirect, + bool isConditional, + bool isFallthrough) const + { + CFT c(e, isCall, isIndirect, isConditional, isFallthrough); + m_Successors.push_back(c); + if (!isFallthrough) appendOperand(e, true, false); + } + void Instruction::appendOperand(Expression::Ptr e, bool isRead, bool isWritten) const + { + m_Operands.push_back(Operand(e, isRead, isWritten)); + } - void Instruction::appendOperand(Expression::Ptr e, - bool isRead, bool isWritten, bool isImplicit) const - { - m_Operands.push_back(Operand(e, isRead, isWritten, isImplicit)); - } - - void Instruction::appendOperand(Expression::Ptr e, - bool isRead, bool isWritten, bool isImplicit, bool trueP, bool falseP) const - { - m_Operands.push_back(Operand(e, isRead, isWritten, isImplicit, trueP, falseP)); - } + void Instruction::appendOperand(Expression::Ptr e, + bool isRead, bool isWritten, bool isImplicit) const + { + m_Operands.push_back(Operand(e, isRead, isWritten, isImplicit)); + } + void Instruction::appendOperand(Expression::Ptr e, + bool isRead, bool isWritten, bool isImplicit, bool trueP, bool falseP) const + { + m_Operands.push_back(Operand(e, isRead, isWritten, isImplicit, trueP, falseP)); + } - } + + } } diff --git a/instructionAPI/src/InstructionCategories.C b/instructionAPI/src/InstructionCategories.C index d0de937d91..703e018c16 100644 --- a/instructionAPI/src/InstructionCategories.C +++ b/instructionAPI/src/InstructionCategories.C @@ -44,6 +44,7 @@ namespace Dyninst case aarch64_op_ret: return c_ReturnInsn; case amdgpu_op_s_endpgm: // special treatment for endpgm + case amdgpu_cdna2_op_S_ENDPGM: // special treatment for endpgm return c_GPUKernelExitInsn; case e_call: case aarch64_op_bl: diff --git a/instructionAPI/src/InstructionDecoderImpl.C b/instructionAPI/src/InstructionDecoderImpl.C index 1784a2f446..424f96f706 100644 --- a/instructionAPI/src/InstructionDecoderImpl.C +++ b/instructionAPI/src/InstructionDecoderImpl.C @@ -33,7 +33,8 @@ #include "InstructionDecoder-x86.h" #include "InstructionDecoder-power.h" #include "InstructionDecoder-aarch64.h" -#include "InstructionDecoder-amdgpu-vega.h" +#include "AMDGPU/vega/InstructionDecoder-amdgpu-vega.h" +#include "AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h" #include "BinaryFunction.h" #include "Dereference.h" @@ -77,6 +78,8 @@ namespace Dyninst return Ptr(new InstructionDecoder_aarch64(a)); case Arch_amdgpu_vega: return Ptr(new InstructionDecoder_amdgpu_vega(a)); + case Arch_amdgpu_cdna2: + return Ptr(new InstructionDecoder_amdgpu_cdna2(a)); default: assert(0); return Ptr(); diff --git a/instructionAPI/src/Operand.C b/instructionAPI/src/Operand.C index 3bd216ed5d..ddab6629a7 100644 --- a/instructionAPI/src/Operand.C +++ b/instructionAPI/src/Operand.C @@ -41,109 +41,110 @@ using namespace std; namespace Dyninst { - namespace InstructionAPI - { - INSTRUCTION_EXPORT void Operand::getReadSet(std::set& regsRead) const + namespace InstructionAPI { - std::set useSet; - op_value->getUses(useSet); - std::set::const_iterator curUse; - for(curUse = useSet.begin(); curUse != useSet.end(); ++curUse) - { - RegisterAST::Ptr tmp = boost::dynamic_pointer_cast(*curUse); - if(tmp) - { - if(m_isRead || !(*tmp == *op_value)) - regsRead.insert(tmp); - } - } - } - INSTRUCTION_EXPORT void Operand::getWriteSet(std::set& regsWritten) const - { - RegisterAST::Ptr op_as_reg = boost::dynamic_pointer_cast(op_value); - if(m_isWritten && op_as_reg) - { - regsWritten.insert(op_as_reg); - } - } + INSTRUCTION_EXPORT void Operand::getReadSet(std::set& regsRead) const + { + std::set useSet; + // This thing returns something only for RegisterAST Expression + op_value->getUses(useSet); + std::set::const_iterator curUse; + for(curUse = useSet.begin(); curUse != useSet.end(); ++curUse) + { + RegisterAST::Ptr tmp = boost::dynamic_pointer_cast(*curUse); + if(tmp) + { + if(m_isRead || !(*tmp == *op_value)) + regsRead.insert(tmp); + } + } + } + INSTRUCTION_EXPORT void Operand::getWriteSet(std::set& regsWritten) const + { + RegisterAST::Ptr op_as_reg = boost::dynamic_pointer_cast(op_value); + if(m_isWritten && op_as_reg) + { + regsWritten.insert(op_as_reg); + } + } - INSTRUCTION_EXPORT RegisterAST::Ptr Operand::getPredicate() const - { - RegisterAST::Ptr op_as_reg = boost::dynamic_pointer_cast(op_value); - if (m_isTruePredicate || m_isFalsePredicate) { - return op_as_reg; - } - return nullptr; - } + INSTRUCTION_EXPORT RegisterAST::Ptr Operand::getPredicate() const + { + RegisterAST::Ptr op_as_reg = boost::dynamic_pointer_cast(op_value); + if (m_isTruePredicate || m_isFalsePredicate) { + return op_as_reg; + } + return nullptr; + } - INSTRUCTION_EXPORT bool Operand::isRead(Expression::Ptr candidate) const - { - // The whole expression of a read, any subexpression of a write - return op_value->isUsed(candidate) && (m_isRead || !(*candidate == *op_value)); - } - INSTRUCTION_EXPORT bool Operand::isWritten(Expression::Ptr candidate) const - { - // Whole expression of a write - return m_isWritten && (*op_value == *candidate); - } - INSTRUCTION_EXPORT bool Operand::readsMemory() const - { - return (boost::dynamic_pointer_cast(op_value) && m_isRead); - } - INSTRUCTION_EXPORT bool Operand::writesMemory() const - { - return (boost::dynamic_pointer_cast(op_value) && m_isWritten); - } - INSTRUCTION_EXPORT void Operand::addEffectiveReadAddresses(std::set& memAccessors) const - { - if(m_isRead && boost::dynamic_pointer_cast(op_value)) - { - std::vector tmp; - op_value->getChildren(tmp); - for(std::vector::const_iterator curKid = tmp.begin(); - curKid != tmp.end(); - ++curKid) - { - memAccessors.insert(*curKid); - } - } - } - INSTRUCTION_EXPORT void Operand::addEffectiveWriteAddresses(std::set& memAccessors) const - { - if(m_isWritten && boost::dynamic_pointer_cast(op_value)) - { - std::vector tmp; - op_value->getChildren(tmp); - for(std::vector::const_iterator curKid = tmp.begin(); - curKid != tmp.end(); - ++curKid) - { - memAccessors.insert(*curKid); - } - } - } + INSTRUCTION_EXPORT bool Operand::isRead(Expression::Ptr candidate) const + { + // The whole expression of a read, any subexpression of a write + return op_value->isUsed(candidate) && (m_isRead || !(*candidate == *op_value)); + } + INSTRUCTION_EXPORT bool Operand::isWritten(Expression::Ptr candidate) const + { + // Whole expression of a write + return m_isWritten && (*op_value == *candidate); + } + INSTRUCTION_EXPORT bool Operand::readsMemory() const + { + return (boost::dynamic_pointer_cast(op_value) && m_isRead); + } + INSTRUCTION_EXPORT bool Operand::writesMemory() const + { + return (boost::dynamic_pointer_cast(op_value) && m_isWritten); + } + INSTRUCTION_EXPORT void Operand::addEffectiveReadAddresses(std::set& memAccessors) const + { + if(m_isRead && boost::dynamic_pointer_cast(op_value)) + { + std::vector tmp; + op_value->getChildren(tmp); + for(std::vector::const_iterator curKid = tmp.begin(); + curKid != tmp.end(); + ++curKid) + { + memAccessors.insert(*curKid); + } + } + } + INSTRUCTION_EXPORT void Operand::addEffectiveWriteAddresses(std::set& memAccessors) const + { + if(m_isWritten && boost::dynamic_pointer_cast(op_value)) + { + std::vector tmp; + op_value->getChildren(tmp); + for(std::vector::const_iterator curKid = tmp.begin(); + curKid != tmp.end(); + ++curKid) + { + memAccessors.insert(*curKid); + } + } + } - INSTRUCTION_EXPORT std::string Operand::format(Architecture arch, Address addr) const - { - if(!op_value) return "ERROR: format() called on empty operand!"; - if (addr) { - Expression::Ptr thePC = Expression::Ptr(new RegisterAST(MachRegister::getPC(arch))); - op_value->bind(thePC.get(), Result(u32, addr)); - Result res = op_value->eval(); - if (res.defined) { - char hex[20]; - snprintf(hex, 20, "%lux", res.convert()); - return string(hex); - } - } - return op_value->format(arch); - } + INSTRUCTION_EXPORT std::string Operand::format(Architecture arch, Address addr) const + { + if(!op_value) return "ERROR: format() called on empty operand!"; + if (addr) { + Expression::Ptr thePC = Expression::Ptr(new RegisterAST(MachRegister::getPC(arch))); + op_value->bind(thePC.get(), Result(u32, addr)); + Result res = op_value->eval(); + if (res.defined) { + char hex[20]; + snprintf(hex, 20, "%lux", res.convert()); + return string(hex); + } + } + return op_value->format(arch); + } - INSTRUCTION_EXPORT Expression::Ptr Operand::getValue() const - { - return op_value; + INSTRUCTION_EXPORT Expression::Ptr Operand::getValue() const + { + return op_value; + } } - } } diff --git a/instructionAPI/src/Operation.C b/instructionAPI/src/Operation.C index 084312d878..fec8f1713d 100644 --- a/instructionAPI/src/Operation.C +++ b/instructionAPI/src/Operation.C @@ -49,503 +49,503 @@ using namespace NS_x86; namespace Dyninst { - namespace InstructionAPI - { - RegisterAST::Ptr makeRegFromID(MachRegister regID, unsigned int low, unsigned int high) + namespace InstructionAPI { - return make_shared(singleton_object_pool::construct(regID, low, high)); - } - RegisterAST::Ptr makeRegFromID(MachRegister regID) - { - return make_shared(singleton_object_pool::construct(regID, 0, regID.size() * 8)); - } + RegisterAST::Ptr makeRegFromID(MachRegister regID, unsigned int low, unsigned int high) + { + return make_shared(singleton_object_pool::construct(regID, low, high)); + } + RegisterAST::Ptr makeRegFromID(MachRegister regID) + { + return make_shared(singleton_object_pool::construct(regID, 0, regID.size() * 8)); + } - Operation_impl::Operation_impl(entryID id, std::string m, Architecture arch) - : operationID(id), archDecodedFrom(arch), prefixID(prefix_none) - { - switch(archDecodedFrom) + Operation_impl::Operation_impl(entryID id, std::string m, Architecture arch) + : operationID(id), archDecodedFrom(arch), prefixID(prefix_none) { - case Arch_x86: - case Arch_ppc32: - addrWidth = u32; - break; - default: - addrWidth = u64; - break; + switch(archDecodedFrom) + { + case Arch_x86: + case Arch_ppc32: + addrWidth = u32; + break; + default: + addrWidth = u64; + break; + } + segPrefix = 0; + isVectorInsn = false; + mnemonic = m; } - segPrefix = 0; - isVectorInsn = false; - mnemonic = m; - } - static bool getVectorizationInfo(ia32_entry* e) - { - for(int i = 0; i < 3; i++) + static bool getVectorizationInfo(ia32_entry* e) { - switch(e->operands[i].admet) + for(int i = 0; i < 3; i++) { - case am_V: - case am_W: - case am_P: - case am_Q: - case am_HK: - case am_H: - case am_X: - case am_XH: - case am_XU: - case am_XV: - case am_XW: - case am_Y: - case am_YH: - case am_YU: - case am_YV: - case am_YW: - case am_VK: - case am_WK: + switch(e->operands[i].admet) + { + case am_V: + case am_W: + case am_P: + case am_Q: + case am_HK: + case am_H: + case am_X: + case am_XH: + case am_XU: + case am_XV: + case am_XW: + case am_Y: + case am_YH: + case am_YU: + case am_YV: + case am_YW: + case am_VK: + case am_WK: - return true; + return true; + default: + break; + } + } + return false; + } + + Operation_impl::Operation_impl(ia32_entry* e, ia32_prefixes* p, ia32_locations* l, Architecture arch) : + archDecodedFrom(arch), prefixID(prefix_none) + { + segPrefix = 0; + isVectorInsn = getVectorizationInfo(e); + operationID = e->getID(l); + // Defaults for no size prefix + switch(archDecodedFrom) + { + case Arch_x86: + case Arch_ppc32: + addrWidth = u32; + break; default: + addrWidth = u64; break; } + if(p && p->getCount()) + { + if (p->getPrefix(0) == PREFIX_REP) prefixID = prefix_rep; + if (p->getPrefix(0) == PREFIX_REPNZ) prefixID = prefix_repnz; + segPrefix = p->getPrefix(1); + if(p->getAddrSzPrefix()) + { + addrWidth = u16; + } + } } - return false; - } - - Operation_impl::Operation_impl(ia32_entry* e, ia32_prefixes* p, ia32_locations* l, Architecture arch) : - archDecodedFrom(arch), prefixID(prefix_none) - { - segPrefix = 0; - isVectorInsn = getVectorizationInfo(e); - operationID = e->getID(l); - // Defaults for no size prefix - switch(archDecodedFrom) - { - case Arch_x86: - case Arch_ppc32: - addrWidth = u32; - break; - default: - addrWidth = u64; - break; - } - if(p && p->getCount()) - { - if (p->getPrefix(0) == PREFIX_REP) prefixID = prefix_rep; - if (p->getPrefix(0) == PREFIX_REPNZ) prefixID = prefix_repnz; - segPrefix = p->getPrefix(1); - if(p->getAddrSzPrefix()) + + Operation_impl::Operation_impl(const Operation_impl& o) { - addrWidth = u16; + operationID = o.operationID; + archDecodedFrom = o.archDecodedFrom; + prefixID = o.prefixID; + addrWidth = o.addrWidth; + segPrefix = o.segPrefix; + isVectorInsn = o.isVectorInsn; + mnemonic = o.mnemonic; + } + const Operation_impl& Operation_impl::operator=(const Operation_impl& o) + { + operationID = o.operationID; + archDecodedFrom = o.archDecodedFrom; + prefixID = o.prefixID; + addrWidth = o.addrWidth; + segPrefix = o.segPrefix; + isVectorInsn = o.isVectorInsn; + mnemonic = o.mnemonic; + return *this; + } + Operation_impl::Operation_impl() + { + operationID = e_No_Entry; + archDecodedFrom = Arch_none; + prefixID = prefix_none; + addrWidth = u64; + segPrefix = 0; + isVectorInsn = false; } - } - } - - Operation_impl::Operation_impl(const Operation_impl& o) - { - operationID = o.operationID; - archDecodedFrom = o.archDecodedFrom; - prefixID = o.prefixID; - addrWidth = o.addrWidth; - segPrefix = o.segPrefix; - isVectorInsn = o.isVectorInsn; - mnemonic = o.mnemonic; - } - const Operation_impl& Operation_impl::operator=(const Operation_impl& o) - { - operationID = o.operationID; - archDecodedFrom = o.archDecodedFrom; - prefixID = o.prefixID; - addrWidth = o.addrWidth; - segPrefix = o.segPrefix; - isVectorInsn = o.isVectorInsn; - mnemonic = o.mnemonic; - return *this; - } - Operation_impl::Operation_impl() - { - operationID = e_No_Entry; - archDecodedFrom = Arch_none; - prefixID = prefix_none; - addrWidth = u64; - segPrefix = 0; - isVectorInsn = false; - } - - const Operation_impl::registerSet& Operation_impl::implicitReads() - { - SetUpNonOperandData(); - - return otherRead; - } - const Operation_impl::registerSet& Operation_impl::implicitWrites() - { - SetUpNonOperandData(); - return otherWritten; - } - bool Operation_impl::isRead(Expression::Ptr candidate) - { - - SetUpNonOperandData(); - - for(registerSet::const_iterator r = otherRead.begin(); - r != otherRead.end(); - ++r) - { - if(*candidate == *(*r)) - { - return true; - } - } - for(VCSet::const_iterator e = otherEffAddrsRead.begin(); - e != otherEffAddrsRead.end(); - ++e) - { - if(*candidate == *(*e)) - { - return true; - } - } - return false; - } - const Operation_impl::VCSet& Operation_impl::getImplicitMemReads() - { - SetUpNonOperandData(); - return otherEffAddrsRead; - } - const Operation_impl::VCSet& Operation_impl::getImplicitMemWrites() - { - SetUpNonOperandData(); - return otherEffAddrsWritten; - } + const Operation_impl::registerSet& Operation_impl::implicitReads() + { + SetUpNonOperandData(); - bool Operation_impl::isWritten(Expression::Ptr candidate) - { - - SetUpNonOperandData(); - - for(registerSet::const_iterator r = otherWritten.begin(); - r != otherWritten.end(); - ++r) - { - if(*candidate == *(*r)) - { - return true; - } - } - for(VCSet::const_iterator e = otherEffAddrsWritten.begin(); - e != otherEffAddrsWritten.end(); - ++e) - { - if(*candidate == *(*e)) - { - return true; - } - } - return false; - } - - std::string Operation_impl::format() const - { - if(mnemonic != "") + return otherRead; + } + const Operation_impl::registerSet& Operation_impl::implicitWrites() { - return mnemonic; + SetUpNonOperandData(); + + return otherWritten; } - dyn_hash_map::const_iterator foundPrefix = prefixEntryNames_IAPI.find(prefixID); - dyn_hash_map::const_iterator found = entryNames_IAPI.find(operationID); - std::string result; - if(foundPrefix != prefixEntryNames_IAPI.end()) - { - result += (foundPrefix->second + " "); - } - if(found != entryNames_IAPI.end()) - { - result += found->second; - } - else - { - result += "[INVALID]"; - } - return result; - } + bool Operation_impl::isRead(Expression::Ptr candidate) + { - entryID Operation_impl::getID() const - { - return operationID; - } + SetUpNonOperandData(); - prefixEntryID Operation_impl::getPrefixID() const - { - return prefixID; - } + for(registerSet::const_iterator r = otherRead.begin(); + r != otherRead.end(); + ++r) + { + if(*candidate == *(*r)) + { + return true; + } + } + for(VCSet::const_iterator e = otherEffAddrsRead.begin(); + e != otherEffAddrsRead.end(); + ++e) + { + if(*candidate == *(*e)) + { + return true; + } + } + return false; + } + const Operation_impl::VCSet& Operation_impl::getImplicitMemReads() + { + SetUpNonOperandData(); + return otherEffAddrsRead; + } + const Operation_impl::VCSet& Operation_impl::getImplicitMemWrites() + { + SetUpNonOperandData(); + return otherEffAddrsWritten; + } - struct OperationMaps - { - typedef dyn_c_hash_map reg_info_t; - typedef dyn_c_hash_map mem_info_t; - public: - OperationMaps(Architecture arch) - { - thePC.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(arch)))); - pcAndSP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(arch)))); - pcAndSP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); - stackPointer.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); - stackPointerAsExpr.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); - framePointer.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(arch)))); - spAndBP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); - spAndBP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(arch)))); - si.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rsi : x86::esi))); - di.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rdi : x86::edi))); - si_and_di.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rsi : x86::esi))); - si_and_di.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rdi : x86::edi))); - - nonOperandRegisterReads.insert(make_pair(e_call, pcAndSP)); - nonOperandRegisterReads.insert(make_pair(e_ret_near, stackPointer)); - nonOperandRegisterReads.insert(make_pair(e_ret_far, stackPointer)); - nonOperandRegisterReads.insert(make_pair(e_leave, framePointer)); - nonOperandRegisterReads.insert(make_pair(e_enter, spAndBP)); - - nonOperandRegisterWrites.insert(make_pair(e_call, pcAndSP)); - nonOperandRegisterWrites.insert(make_pair(e_ret_near, pcAndSP)); - nonOperandRegisterWrites.insert(make_pair(e_ret_far, pcAndSP)); - nonOperandRegisterWrites.insert(make_pair(e_leave, spAndBP)); - nonOperandRegisterWrites.insert(make_pair(e_enter, spAndBP)); - - nonOperandRegisterWrites.insert(make_pair(e_loop, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_loope, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_loopn, thePC)); - - nonOperandRegisterWrites.insert(make_pair(e_jb, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jb_jnaej_j, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jbe, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jcxz_jec, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jl, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jle, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jmp, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnb, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnb_jae_j, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnbe, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnl, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnle, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jno, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnp, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jns, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jnz, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jo, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jp, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_js, thePC)); - nonOperandRegisterWrites.insert(make_pair(e_jz, thePC)); - - nonOperandMemoryReads.insert(make_pair(e_pop, stackPointerAsExpr)); - nonOperandMemoryReads.insert(make_pair(e_popa, stackPointerAsExpr)); - nonOperandMemoryReads.insert(make_pair(e_popad, stackPointerAsExpr)); - nonOperandMemoryWrites.insert(make_pair(e_push, stackPointerAsExpr)); - nonOperandMemoryWrites.insert(make_pair(e_pusha, stackPointerAsExpr)); - nonOperandMemoryWrites.insert(make_pair(e_pushad, stackPointerAsExpr)); - nonOperandMemoryWrites.insert(make_pair(e_call, stackPointerAsExpr)); - nonOperandMemoryReads.insert(make_pair(e_ret_near, stackPointerAsExpr)); - nonOperandMemoryReads.insert(make_pair(e_ret_far, stackPointerAsExpr)); - nonOperandMemoryReads.insert(make_pair(e_leave, stackPointerAsExpr)); - - nonOperandRegisterWrites.insert(make_pair(e_cmpsb, si_and_di)); - nonOperandRegisterWrites.insert(make_pair(e_cmpsd, si_and_di)); - nonOperandRegisterWrites.insert(make_pair(e_cmpsw, si_and_di)); - nonOperandRegisterWrites.insert(make_pair(e_movsb, si_and_di)); - nonOperandRegisterWrites.insert(make_pair(e_movsd, si_and_di)); - nonOperandRegisterWrites.insert(make_pair(e_movsw, si_and_di)); - nonOperandRegisterWrites.insert(make_pair(e_insb, di)); - nonOperandRegisterWrites.insert(make_pair(e_insd, di)); - nonOperandRegisterWrites.insert(make_pair(e_insw, di)); - nonOperandRegisterWrites.insert(make_pair(e_stosb, di)); - nonOperandRegisterWrites.insert(make_pair(e_stosd, di)); - nonOperandRegisterWrites.insert(make_pair(e_stosw, di)); - nonOperandRegisterWrites.insert(make_pair(e_scasb, di)); - nonOperandRegisterWrites.insert(make_pair(e_scasd, di)); - nonOperandRegisterWrites.insert(make_pair(e_scasw, di)); - nonOperandRegisterWrites.insert(make_pair(e_lodsb, di)); - nonOperandRegisterWrites.insert(make_pair(e_lodsd, di)); - nonOperandRegisterWrites.insert(make_pair(e_lodsw, di)); - nonOperandRegisterWrites.insert(make_pair(e_outsb, di)); - nonOperandRegisterWrites.insert(make_pair(e_outsd, di)); - nonOperandRegisterWrites.insert(make_pair(e_outsw, di)); - - - } - Operation_impl::registerSet thePC; - Operation_impl::registerSet pcAndSP; - Operation_impl::registerSet stackPointer; - Operation_impl::VCSet stackPointerAsExpr; - Operation_impl::registerSet framePointer; - Operation_impl::registerSet spAndBP; - Operation_impl::registerSet si; - Operation_impl::registerSet di; - Operation_impl::registerSet si_and_di; - - reg_info_t nonOperandRegisterReads; - reg_info_t nonOperandRegisterWrites; - - mem_info_t nonOperandMemoryReads; - mem_info_t nonOperandMemoryWrites; - }; - OperationMaps op_data_32(Arch_x86); - OperationMaps op_data_64(Arch_x86_64); - const OperationMaps& op_data(Architecture arch) - { - switch(arch) + bool Operation_impl::isWritten(Expression::Ptr candidate) { - case Arch_x86: - return op_data_32; - case Arch_x86_64: - return op_data_64; - default: - return op_data_32; + + SetUpNonOperandData(); + + for(registerSet::const_iterator r = otherWritten.begin(); + r != otherWritten.end(); + ++r) + { + if(*candidate == *(*r)) + { + return true; + } + } + for(VCSet::const_iterator e = otherEffAddrsWritten.begin(); + e != otherEffAddrsWritten.end(); + ++e) + { + if(*candidate == *(*e)) + { + return true; + } + } + return false; } - } - void Operation_impl::SetUpNonOperandData() - { - if (archDecodedFrom != Arch_x86 && archDecodedFrom != Arch_x86_64) return; - std::call_once(data_initialized, [&]() { - if (prefixID == prefix_rep || prefixID == prefix_repnz) { - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::df : x86_64::df)); - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ecx : x86_64::rcx)); - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ecx : x86_64::rcx)); - if(prefixID == prefix_repnz) + + std::string Operation_impl::format() const + { + if(mnemonic != "") + { + return mnemonic; + } + dyn_hash_map::const_iterator foundPrefix = prefixEntryNames_IAPI.find(prefixID); + dyn_hash_map::const_iterator found = entryNames_IAPI.find(operationID); + std::string result; + if(foundPrefix != prefixEntryNames_IAPI.end()) + { + result += (foundPrefix->second + " "); + } + if(found != entryNames_IAPI.end()) + { + result += found->second; + } + else { - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::zf : x86_64::zf)); + result += "[INVALID]"; } + return result; } - switch(segPrefix) + + entryID Operation_impl::getID() const { - case PREFIX_SEGCS: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::cs : x86_64::cs)); - break; - case PREFIX_SEGDS: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ds : x86_64::ds)); - break; - case PREFIX_SEGES: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::es : x86_64::es)); - break; - case PREFIX_SEGFS: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::fs : x86_64::fs)); - break; - case PREFIX_SEGGS: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::gs : x86_64::gs)); - break; - case PREFIX_SEGSS: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ss : x86_64::ss)); - break; + return operationID; } - OperationMaps::reg_info_t::const_accessor a, b; - if (op_data(archDecodedFrom).nonOperandRegisterReads.find(a, operationID)) { - otherRead.insert(a->second.begin(), a->second.end()); - } - if (op_data(archDecodedFrom).nonOperandRegisterWrites.find(b, operationID)) { - otherWritten.insert(b->second.begin(), b->second.end()); - } - OperationMaps::mem_info_t::const_accessor c, d; - if (op_data(archDecodedFrom).nonOperandMemoryReads.find(c, operationID)) { - otherEffAddrsRead.insert(c->second.begin(), c->second.end()); + prefixEntryID Operation_impl::getPrefixID() const + { + return prefixID; + } + + struct OperationMaps + { + typedef dyn_c_hash_map reg_info_t; + typedef dyn_c_hash_map mem_info_t; + public: + OperationMaps(Architecture arch) + { + thePC.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(arch)))); + pcAndSP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(arch)))); + pcAndSP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); + stackPointer.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); + stackPointerAsExpr.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); + framePointer.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(arch)))); + spAndBP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(arch)))); + spAndBP.insert(RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(arch)))); + si.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rsi : x86::esi))); + di.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rdi : x86::edi))); + si_and_di.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rsi : x86::esi))); + si_and_di.insert(RegisterAST::Ptr(new RegisterAST(arch == Arch_x86_64 ? x86_64::rdi : x86::edi))); + + nonOperandRegisterReads.insert(make_pair(e_call, pcAndSP)); + nonOperandRegisterReads.insert(make_pair(e_ret_near, stackPointer)); + nonOperandRegisterReads.insert(make_pair(e_ret_far, stackPointer)); + nonOperandRegisterReads.insert(make_pair(e_leave, framePointer)); + nonOperandRegisterReads.insert(make_pair(e_enter, spAndBP)); + + nonOperandRegisterWrites.insert(make_pair(e_call, pcAndSP)); + nonOperandRegisterWrites.insert(make_pair(e_ret_near, pcAndSP)); + nonOperandRegisterWrites.insert(make_pair(e_ret_far, pcAndSP)); + nonOperandRegisterWrites.insert(make_pair(e_leave, spAndBP)); + nonOperandRegisterWrites.insert(make_pair(e_enter, spAndBP)); + + nonOperandRegisterWrites.insert(make_pair(e_loop, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_loope, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_loopn, thePC)); + + nonOperandRegisterWrites.insert(make_pair(e_jb, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jb_jnaej_j, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jbe, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jcxz_jec, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jl, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jle, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jmp, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnb, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnb_jae_j, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnbe, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnl, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnle, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jno, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnp, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jns, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jnz, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jo, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jp, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_js, thePC)); + nonOperandRegisterWrites.insert(make_pair(e_jz, thePC)); + + nonOperandMemoryReads.insert(make_pair(e_pop, stackPointerAsExpr)); + nonOperandMemoryReads.insert(make_pair(e_popa, stackPointerAsExpr)); + nonOperandMemoryReads.insert(make_pair(e_popad, stackPointerAsExpr)); + nonOperandMemoryWrites.insert(make_pair(e_push, stackPointerAsExpr)); + nonOperandMemoryWrites.insert(make_pair(e_pusha, stackPointerAsExpr)); + nonOperandMemoryWrites.insert(make_pair(e_pushad, stackPointerAsExpr)); + nonOperandMemoryWrites.insert(make_pair(e_call, stackPointerAsExpr)); + nonOperandMemoryReads.insert(make_pair(e_ret_near, stackPointerAsExpr)); + nonOperandMemoryReads.insert(make_pair(e_ret_far, stackPointerAsExpr)); + nonOperandMemoryReads.insert(make_pair(e_leave, stackPointerAsExpr)); + + nonOperandRegisterWrites.insert(make_pair(e_cmpsb, si_and_di)); + nonOperandRegisterWrites.insert(make_pair(e_cmpsd, si_and_di)); + nonOperandRegisterWrites.insert(make_pair(e_cmpsw, si_and_di)); + nonOperandRegisterWrites.insert(make_pair(e_movsb, si_and_di)); + nonOperandRegisterWrites.insert(make_pair(e_movsd, si_and_di)); + nonOperandRegisterWrites.insert(make_pair(e_movsw, si_and_di)); + nonOperandRegisterWrites.insert(make_pair(e_insb, di)); + nonOperandRegisterWrites.insert(make_pair(e_insd, di)); + nonOperandRegisterWrites.insert(make_pair(e_insw, di)); + nonOperandRegisterWrites.insert(make_pair(e_stosb, di)); + nonOperandRegisterWrites.insert(make_pair(e_stosd, di)); + nonOperandRegisterWrites.insert(make_pair(e_stosw, di)); + nonOperandRegisterWrites.insert(make_pair(e_scasb, di)); + nonOperandRegisterWrites.insert(make_pair(e_scasd, di)); + nonOperandRegisterWrites.insert(make_pair(e_scasw, di)); + nonOperandRegisterWrites.insert(make_pair(e_lodsb, di)); + nonOperandRegisterWrites.insert(make_pair(e_lodsd, di)); + nonOperandRegisterWrites.insert(make_pair(e_lodsw, di)); + nonOperandRegisterWrites.insert(make_pair(e_outsb, di)); + nonOperandRegisterWrites.insert(make_pair(e_outsd, di)); + nonOperandRegisterWrites.insert(make_pair(e_outsw, di)); + + } - if (operationID == e_push) { - BinaryFunction::funcT::Ptr adder(new BinaryFunction::addResult()); - // special case for push: we write at the new value of the SP. - Result dummy(addrWidth, 0); - Expression::Ptr push_addr(new BinaryFunction( - *(op_data(archDecodedFrom).stackPointerAsExpr.begin()), - Immediate::makeImmediate(Result(s8, -(dummy.size()))), - addrWidth, - adder)); - - otherEffAddrsWritten.insert(push_addr); - - } else { - if (op_data(archDecodedFrom).nonOperandMemoryWrites.find(d, operationID)) { - otherEffAddrsWritten.insert(d->second.begin(), d->second.end()); - } + Operation_impl::registerSet thePC; + Operation_impl::registerSet pcAndSP; + Operation_impl::registerSet stackPointer; + Operation_impl::VCSet stackPointerAsExpr; + Operation_impl::registerSet framePointer; + Operation_impl::registerSet spAndBP; + Operation_impl::registerSet si; + Operation_impl::registerSet di; + Operation_impl::registerSet si_and_di; + + reg_info_t nonOperandRegisterReads; + reg_info_t nonOperandRegisterWrites; + + mem_info_t nonOperandMemoryReads; + mem_info_t nonOperandMemoryWrites; + }; + OperationMaps op_data_32(Arch_x86); + OperationMaps op_data_64(Arch_x86_64); + const OperationMaps& op_data(Architecture arch) + { + switch(arch) + { + case Arch_x86: + return op_data_32; + case Arch_x86_64: + return op_data_64; + default: + return op_data_32; } + } + void Operation_impl::SetUpNonOperandData() + { + if (archDecodedFrom != Arch_x86 && archDecodedFrom != Arch_x86_64) return; + std::call_once(data_initialized, [&]() { + if (prefixID == prefix_rep || prefixID == prefix_repnz) { + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::df : x86_64::df)); + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ecx : x86_64::rcx)); + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ecx : x86_64::rcx)); + if(prefixID == prefix_repnz) + { + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::zf : x86_64::zf)); + } + } + switch(segPrefix) + { + case PREFIX_SEGCS: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::cs : x86_64::cs)); + break; + case PREFIX_SEGDS: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ds : x86_64::ds)); + break; + case PREFIX_SEGES: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::es : x86_64::es)); + break; + case PREFIX_SEGFS: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::fs : x86_64::fs)); + break; + case PREFIX_SEGGS: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::gs : x86_64::gs)); + break; + case PREFIX_SEGSS: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::ss : x86_64::ss)); + break; + } - dyn_hash_map::const_iterator found = ia32_instruction::getFlagTable().find(operationID); - if (found != ia32_instruction::getFlagTable().end()) { - for (unsigned i = 0; i < found->second.readFlags.size(); i++) { - switch (found->second.readFlags[i]) { - case x86::icf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::cf : x86_64::cf)); - break; - case x86::ipf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::pf : x86_64::pf)); - break; - case x86::iaf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::af : x86_64::af)); - break; - case x86::izf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::zf : x86_64::zf)); - break; - case x86::isf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::sf : x86_64::sf)); - break; - case x86::itf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::tf : x86_64::tf)); - break; - case x86::idf: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::df : x86_64::df)); - break; - case x86::iof: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::of : x86_64::of)); - break; - case x86::int_: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::nt_ : x86_64::nt_)); - break; - case x86::iif_: - otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::if_ : x86_64::if_)); - break; - default: - assert(0); + OperationMaps::reg_info_t::const_accessor a, b; + if (op_data(archDecodedFrom).nonOperandRegisterReads.find(a, operationID)) { + otherRead.insert(a->second.begin(), a->second.end()); } - } + if (op_data(archDecodedFrom).nonOperandRegisterWrites.find(b, operationID)) { + otherWritten.insert(b->second.begin(), b->second.end()); + } + OperationMaps::mem_info_t::const_accessor c, d; + if (op_data(archDecodedFrom).nonOperandMemoryReads.find(c, operationID)) { + otherEffAddrsRead.insert(c->second.begin(), c->second.end()); + } + if (operationID == e_push) { + BinaryFunction::funcT::Ptr adder(new BinaryFunction::addResult()); + // special case for push: we write at the new value of the SP. + Result dummy(addrWidth, 0); + Expression::Ptr push_addr(new BinaryFunction( + *(op_data(archDecodedFrom).stackPointerAsExpr.begin()), + Immediate::makeImmediate(Result(s8, -(dummy.size()))), + addrWidth, + adder)); + + otherEffAddrsWritten.insert(push_addr); - for (unsigned j = 0; j < found->second.writtenFlags.size(); j++) { - switch (found->second.writtenFlags[j]) { - case x86::icf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::cf : x86_64::cf)); - break; - case x86::ipf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::pf : x86_64::pf)); - break; - case x86::iaf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::af : x86_64::af)); - break; - case x86::izf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::zf : x86_64::zf)); - break; - case x86::isf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::sf : x86_64::sf)); - break; - case x86::itf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::tf : x86_64::tf)); - break; - case x86::idf: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::df : x86_64::df)); - break; - case x86::iof: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::of : x86_64::of)); - break; - case x86::int_: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::nt_ : x86_64::nt_)); - break; - case x86::iif_: - otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::if_ : x86_64::if_)); - break; - default: - fprintf(stderr, "ERROR: unhandled entry %s\n", - found->second.writtenFlags[j].name().c_str()); - assert(0); + } else { + if (op_data(archDecodedFrom).nonOperandMemoryWrites.find(d, operationID)) { + otherEffAddrsWritten.insert(d->second.begin(), d->second.end()); + } } - } - } - }); - return; + + dyn_hash_map::const_iterator found = ia32_instruction::getFlagTable().find(operationID); + if (found != ia32_instruction::getFlagTable().end()) { + for (unsigned i = 0; i < found->second.readFlags.size(); i++) { + switch (found->second.readFlags[i]) { + case x86::icf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::cf : x86_64::cf)); + break; + case x86::ipf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::pf : x86_64::pf)); + break; + case x86::iaf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::af : x86_64::af)); + break; + case x86::izf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::zf : x86_64::zf)); + break; + case x86::isf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::sf : x86_64::sf)); + break; + case x86::itf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::tf : x86_64::tf)); + break; + case x86::idf: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::df : x86_64::df)); + break; + case x86::iof: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::of : x86_64::of)); + break; + case x86::int_: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::nt_ : x86_64::nt_)); + break; + case x86::iif_: + otherRead.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::if_ : x86_64::if_)); + break; + default: + assert(0); + } + } + + for (unsigned j = 0; j < found->second.writtenFlags.size(); j++) { + switch (found->second.writtenFlags[j]) { + case x86::icf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::cf : x86_64::cf)); + break; + case x86::ipf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::pf : x86_64::pf)); + break; + case x86::iaf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::af : x86_64::af)); + break; + case x86::izf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::zf : x86_64::zf)); + break; + case x86::isf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::sf : x86_64::sf)); + break; + case x86::itf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::tf : x86_64::tf)); + break; + case x86::idf: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::df : x86_64::df)); + break; + case x86::iof: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::of : x86_64::of)); + break; + case x86::int_: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::nt_ : x86_64::nt_)); + break; + case x86::iif_: + otherWritten.insert(makeRegFromID((archDecodedFrom == Arch_x86) ? x86::if_ : x86_64::if_)); + break; + default: + fprintf(stderr, "ERROR: unhandled entry %s\n", + found->second.writtenFlags[j].name().c_str()); + assert(0); + } + } + } + }); + return; + } } - } } diff --git a/instructionAPI/src/Register.C b/instructionAPI/src/Register.C index 306328ae93..f5b612fef0 100644 --- a/instructionAPI/src/Register.C +++ b/instructionAPI/src/Register.C @@ -91,7 +91,7 @@ namespace Dyninst std::string RegisterAST::format(Architecture arch, formatStyle f) const { - if(arch == Arch_amdgpu_vega){ + if(arch == Arch_amdgpu_vega || arch == Arch_amdgpu_cdna2){ return RegisterAST::format(f); } return ArchSpecificFormatter::getFormatter(arch).formatRegister(m_Reg.name()); @@ -100,15 +100,35 @@ namespace Dyninst std::string RegisterAST::format(formatStyle) const { std::string name = m_Reg.name(); - std::string::size_type substr = name.rfind(':'); - if(substr != std::string::npos) + std::string::size_type substr = name.rfind("::"); + Architecture arch = m_Reg.getArchitecture(); + if(/*arch != Arch_amdgpu_vega && arch != Arch_amdgpu_cdna2 && */substr != std::string::npos) { - name = name.substr(substr + 1, name.length()); - } - if ( m_Reg.size()*8 != m_High - m_Low){ - name += "["+to_string(m_Low)+":"+to_string(m_High)+"]"; + name = name.substr(substr + 2, name.length()); } + // Size of base register * 8 != m_High - mLow ( in bits) when we it is a register vector + if ( m_High -m_Low > 32 && m_Reg.size()*8 != m_High - m_Low){ + uint32_t id = m_Reg & 0xff ; + uint32_t regClass = m_Reg.regClass(); + uint32_t size = (m_High - m_Low ) / 32; + if( regClass == amdgpu_cdna2::SGPR || regClass == amdgpu_vega::SGPR){ + return "S["+to_string(id) + ":" + to_string(id+size-1)+"]"; + } + + if(regClass == amdgpu_cdna2::VGPR || regClass == amdgpu_vega::VGPR){ + return "V["+to_string(id) + ":" + to_string(id+size-1)+"]"; + } + + if(regClass == amdgpu_cdna2::ACC_VGPR){ + return "ACC["+to_string(id) + ":" + to_string(id+size-1)+"]"; + } + if(m_Reg == amdgpu_cdna2::vcc_lo || m_Reg == amdgpu_vega::vcc_lo) + return "VCC"; + if(m_Reg == amdgpu_cdna2::exec_lo || m_Reg == amdgpu_vega::exec_lo) + return "EXEC"; + name += "["+to_string(m_Low)+":"+to_string(m_High)+"]"; + } /* we have moved to AT&T syntax (lowercase registers) */ for(char &c : name) c = std::toupper(c); diff --git a/instructionAPI/src/amdgpu_branchinsn_table.h b/instructionAPI/src/amdgpu_branchinsn_table.h index b6b9bcfd7a..c6ecc58feb 100644 --- a/instructionAPI/src/amdgpu_branchinsn_table.h +++ b/instructionAPI/src/amdgpu_branchinsn_table.h @@ -14,3 +14,19 @@ case amdgpu_op_s_cbranch_g_fork: case amdgpu_op_s_cbranch_i_fork: case amdgpu_op_s_call_b64: + case amdgpu_cdna2_op_S_BRANCH: + case amdgpu_cdna2_op_S_CBRANCH_SCC0: + case amdgpu_cdna2_op_S_CBRANCH_SCC1: + case amdgpu_cdna2_op_S_CBRANCH_VCCZ: + case amdgpu_cdna2_op_S_CBRANCH_VCCNZ: + case amdgpu_cdna2_op_S_CBRANCH_EXECZ: + case amdgpu_cdna2_op_S_CBRANCH_EXECNZ: + case amdgpu_cdna2_op_S_CBRANCH_CDBGSYS: + case amdgpu_cdna2_op_S_CBRANCH_CDBGUSER: + case amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_AND_USER: + case amdgpu_cdna2_op_S_SETPC_B64: + case amdgpu_cdna2_op_S_SWAPPC_B64: + case amdgpu_cdna2_op_S_RFE_B64: + case amdgpu_cdna2_op_S_CBRANCH_G_FORK: + case amdgpu_cdna2_op_S_CBRANCH_I_FORK: + case amdgpu_cdna2_op_S_CALL_B64: diff --git a/instructionAPI/src/amdgpu_insn_entry.h b/instructionAPI/src/amdgpu_insn_entry.h deleted file mode 100644 index 2f13df5b88..0000000000 --- a/instructionAPI/src/amdgpu_insn_entry.h +++ /dev/null @@ -1,24 +0,0 @@ -struct amdgpu_insn_entry { - entryID op; - const char *mnemonic; - std::size_t operandCnt; - const operandFactory *operands; - static const amdgpu_insn_table main_insn_table; - static const operandFactory operandTable[]; - static const amdgpu_insn_table sop2_insn_table; - static const amdgpu_insn_table sop1_insn_table; - static const amdgpu_insn_table sopk_insn_table; - static const amdgpu_insn_table sopc_insn_table; - static const amdgpu_insn_table sopp_insn_table; - static const amdgpu_insn_table smem_insn_table; - static const amdgpu_insn_table vop2_insn_table; - static const amdgpu_insn_table vop1_insn_table; - static const amdgpu_insn_table vopc_insn_table; - static const amdgpu_insn_table vintrp_insn_table; - static const amdgpu_insn_table ds_insn_table; - static const amdgpu_insn_table mtbuf_insn_table; - static const amdgpu_insn_table mubuf_insn_table; - static const amdgpu_insn_table vop3ab_insn_table; - static const amdgpu_insn_table vop3p_insn_table; - static const amdgpu_insn_table flat_insn_table; -}; diff --git a/parseAPI/src/IA_IAPI.C b/parseAPI/src/IA_IAPI.C index 5ffc9a6ed6..948be3001f 100644 --- a/parseAPI/src/IA_IAPI.C +++ b/parseAPI/src/IA_IAPI.C @@ -123,6 +123,10 @@ IA_IAPI* IA_IAPI::makePlatformIA_IAPI(Architecture arch, case Arch_amdgpu_vega: return new IA_amdgpu(dec_, where_, o, r, isrc, curBlk_); + case Arch_amdgpu_cdna2: + + return new IA_amdgpu(dec_, where_, o, r, isrc, curBlk_); + default: assert(!"unimplemented architecture"); } @@ -136,21 +140,23 @@ void IA_IAPI::initASTs() std::call_once(IA_IAPI::ptrInit, [&]{ if(framePtr.empty()) { - framePtr[Arch_x86] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_x86))); - framePtr[Arch_x86_64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_x86_64))); - framePtr[Arch_ppc32] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_ppc32))); - framePtr[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_ppc64))); - framePtr[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_aarch64))); - framePtr[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_amdgpu_vega))); + framePtr[Arch_x86] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_x86))); + framePtr[Arch_x86_64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_x86_64))); + framePtr[Arch_ppc32] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_ppc32))); + framePtr[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_ppc64))); + framePtr[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_aarch64))); + framePtr[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_amdgpu_vega))); + framePtr[Arch_amdgpu_cdna2] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_amdgpu_cdna2))); } if(stackPtr.empty()) { - stackPtr[Arch_x86] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_x86))); - stackPtr[Arch_x86_64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_x86_64))); - stackPtr[Arch_ppc32] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_ppc32))); - stackPtr[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_ppc64))); - stackPtr[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_aarch64))); - stackPtr[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_amdgpu_vega))); + stackPtr[Arch_x86] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_x86))); + stackPtr[Arch_x86_64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_x86_64))); + stackPtr[Arch_ppc32] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_ppc32))); + stackPtr[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_ppc64))); + stackPtr[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_aarch64))); + stackPtr[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_amdgpu_vega))); + stackPtr[Arch_amdgpu_cdna2] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_amdgpu_cdna2))); } if(thePC.empty()) { @@ -160,6 +166,7 @@ void IA_IAPI::initASTs() thePC[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_ppc64))); thePC[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_aarch64))); thePC[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_amdgpu_vega))); + thePC[Arch_amdgpu_cdna2] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_amdgpu_cdna2))); } ANNOTATE_HAPPENS_BEFORE(&IA_IAPI::ptrInit); }); diff --git a/parseAPI/src/IA_amdgpu.C b/parseAPI/src/IA_amdgpu.C index c3305017cc..463fe7f9c7 100644 --- a/parseAPI/src/IA_amdgpu.C +++ b/parseAPI/src/IA_amdgpu.C @@ -73,7 +73,8 @@ bool IA_amdgpu::isFrameSetupInsn(Instruction ) const bool IA_amdgpu::isNop() const { Instruction ci = curInsn(); - if(ci.getOperation().getID() == amdgpu_op_s_nop) + auto id = ci.getOperation().getID(); + if(id == amdgpu_op_s_nop || id == amdgpu_cdna2_op_S_NOP ) return true; return false; } diff --git a/parseAPI/src/SymbolicExpression.C b/parseAPI/src/SymbolicExpression.C index e44a0582de..b9f556f28a 100644 --- a/parseAPI/src/SymbolicExpression.C +++ b/parseAPI/src/SymbolicExpression.C @@ -423,9 +423,9 @@ Address SymbolicExpression::PCValue(Address cur, size_t insnSize, Architecture a case Arch_x86: case Arch_x86_64: case Arch_amdgpu_vega: + case Arch_amdgpu_cdna2: return cur + insnSize; case Arch_aarch64: - case Arch_amdgpu_rdna: case Arch_ppc32: case Arch_ppc64: return cur; diff --git a/proccontrol/src/process.C b/proccontrol/src/process.C index 4d50a2559b..1fb3da15ee 100644 --- a/proccontrol/src/process.C +++ b/proccontrol/src/process.C @@ -1938,7 +1938,8 @@ int int_process::getAddressWidth() case Arch_intelGen9: return 8; case Arch_amdgpu_vega: // according to the vega architecture, there are 32/64 address mode - case Arch_amdgpu_rdna: + case Arch_amdgpu_cdna2: + return 8; case Arch_none: assert(0); } From ee629d08b3a76d36d4fbded2395e7c8780cb65da Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 24 Feb 2022 15:53:26 -0600 Subject: [PATCH 077/505] Build fixes for amdgpu/cdna2 (#1203) * Clean up duplicate cdna2 sys_reg headers (#1200) * add install rule to install amdgpu headers under common/h (#1201) Co-authored-by: bbiiggppiigg --- common/CMakeLists.txt | 7 + .../cdna2}/amdgpu_cdna2_op_table.h | 0 common/h/amdgpu_cdna2_sys_regs.h | 1563 ----------------- common/h/entryIDs.h | 2 +- 4 files changed, 8 insertions(+), 1564 deletions(-) rename common/h/{ => AMDGPU/cdna2}/amdgpu_cdna2_op_table.h (100%) delete mode 100644 common/h/amdgpu_cdna2_sys_regs.h diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 5bde2b9e5c..91e0ea258a 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -136,3 +136,10 @@ target_link_libraries(common PUBLIC ${TBB_LIBRARIES}) if(USE_OpenMP) set_target_properties(common PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} LINK_FLAGS ${OpenMP_CXX_FLAGS}) endif() + +# Install AMDGPU headers under subdirectory of common/h/AMDGPU +set(AMDGPU_HEADER + ${DYNINST_ROOT}/common/h/AMDGPU +) +install(DIRECTORY ${AMDGPU_HEADER} DESTINATION ${INSTALL_INCLUDE_DIR}) + diff --git a/common/h/amdgpu_cdna2_op_table.h b/common/h/AMDGPU/cdna2/amdgpu_cdna2_op_table.h similarity index 100% rename from common/h/amdgpu_cdna2_op_table.h rename to common/h/AMDGPU/cdna2/amdgpu_cdna2_op_table.h diff --git a/common/h/amdgpu_cdna2_sys_regs.h b/common/h/amdgpu_cdna2_sys_regs.h deleted file mode 100644 index eb74b6cf98..0000000000 --- a/common/h/amdgpu_cdna2_sys_regs.h +++ /dev/null @@ -1,1563 +0,0 @@ -#ifndef DYNINST_AMDGPU_CDNA2_SYS_REGS_H -#define DYNINST_AMDGPU_CDNA2_SYS_REGS_H -DEF_REGISTER(address_mode_32, Arch_amdgpu_cdna2 | HWR | BITS_32 | 0,"amdgpu_cdna2"); -DEF_REGISTER(exec, Arch_amdgpu_cdna2 | HWR | BITS_64 | 1,"amdgpu_cdna2"); -DEF_REGISTER(exec_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 1,"amdgpu_cdna2"); -DEF_REGISTER(exec_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 1,"amdgpu_cdna2"); -DEF_REGISTER(expcnt, Arch_amdgpu_cdna2 | HWR | BITS_3 | 2,"amdgpu_cdna2"); -DEF_REGISTER(export_icount, Arch_amdgpu_cdna2 | HWR | BITS_8 | 3,"amdgpu_cdna2"); -DEF_REGISTER(flat_scratch, Arch_amdgpu_cdna2 | HWR | BITS_64 | 4,"amdgpu_cdna2"); -DEF_REGISTER(flat_scratch_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 4,"amdgpu_cdna2"); -DEF_REGISTER(flat_scratch_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 4,"amdgpu_cdna2"); -DEF_REGISTER(gpr_alloc, Arch_amdgpu_cdna2 | HWR | BITS_32 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_base, Arch_amdgpu_cdna2 | 0x0 | BITS_6 | 0x8000 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpt_size, Arch_amdgpu_cdna2 | 0x80000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_base, Arch_amdgpu_cdna2 | 0x100000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_size, Arch_amdgpu_cdna2 | 0x180000 | BITS_4 | 0x8000 | 5,"amdgpu_cdna2"); -DEF_REGISTER(ib_sts, Arch_amdgpu_cdna2 | HWR | BITS_32 | 6,"amdgpu_cdna2"); -DEF_REGISTER(exp_cnt, Arch_amdgpu_cdna2 | 0x40000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna2"); -DEF_REGISTER(lgkm_cnt, Arch_amdgpu_cdna2 | 0x80000 | BITS_4 | 0x8000 | 6,"amdgpu_cdna2"); -DEF_REGISTER(valu_cnt, Arch_amdgpu_cdna2 | 0xc0000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna2"); -DEF_REGISTER(vm_cnt, Arch_amdgpu_cdna2 | 0xf0000 | BITS_6 | 0x8000 | 6,"amdgpu_cdna2"); -DEF_REGISTER(lds_alloc, Arch_amdgpu_cdna2 | HWR | BITS_32 | 7,"amdgpu_cdna2"); -DEF_REGISTER(lds_base, Arch_amdgpu_cdna2 | 0x0 | BITS_8 | 0x8000 | 7,"amdgpu_cdna2"); -DEF_REGISTER(lds_size, Arch_amdgpu_cdna2 | 0xc0000 | BITS_9 | 0x8000 | 7,"amdgpu_cdna2"); -DEF_REGISTER(lds_gds_constant_message_count, Arch_amdgpu_cdna2 | HWR | BITS_8 | 8,"amdgpu_cdna2"); -DEF_REGISTER(lgkmcnt, Arch_amdgpu_cdna2 | HWR | BITS_4 | 9,"amdgpu_cdna2"); -DEF_REGISTER(m0, Arch_amdgpu_cdna2 | HWR | BITS_32 | 10,"amdgpu_cdna2"); -DEF_REGISTER(gds_size, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(lds_direct_address, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(lds_interpolation_parameter_offset, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(lds_memory_vfetch_offset, Arch_amdgpu_cdna2 | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(lds_direct_data_type, Arch_amdgpu_cdna2 | 0x100000 | BITS_3 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(lds_interpolation_new_prim_mask, Arch_amdgpu_cdna2 | 0x100000 | BITS_15 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(gds_base, Arch_amdgpu_cdna2 | 0x100000 | BITS_16 | 0x8000 | 10,"amdgpu_cdna2"); -DEF_REGISTER(mode, Arch_amdgpu_cdna2 | HWR | BITS_32 | 11,"amdgpu_cdna2"); -DEF_REGISTER(fp_round, Arch_amdgpu_cdna2 | 0x0 | BITS_4 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(fp_denorm, Arch_amdgpu_cdna2 | 0x40000 | BITS_4 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(dx10_clamp, Arch_amdgpu_cdna2 | 0x80000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(ieee, Arch_amdgpu_cdna2 | 0x90000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(lod_clamped, Arch_amdgpu_cdna2 | 0xa0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(debug, Arch_amdgpu_cdna2 | 0xb0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(excp_en, Arch_amdgpu_cdna2 | 0xc0000 | BITS_7 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(fp16_ovfl, Arch_amdgpu_cdna2 | 0x170000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(pops_packer0, Arch_amdgpu_cdna2 | 0x180000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(pops_packer1, Arch_amdgpu_cdna2 | 0x190000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(disable_perf, Arch_amdgpu_cdna2 | 0x1a0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(gpr_idx_en, Arch_amdgpu_cdna2 | 0x1b0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(vskip, Arch_amdgpu_cdna2 | 0x1c0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(csp, Arch_amdgpu_cdna2 | 0x1d0000 | BITS_3 | 0x8000 | 11,"amdgpu_cdna2"); -DEF_REGISTER(pc, Arch_amdgpu_cdna2 | PC | BITS_48 | 0,"amdgpu_cdna2"); -DEF_REGISTER(pops_exiting_wave_id, Arch_amdgpu_cdna2 | HWR | BITS_64 | 12,"amdgpu_cdna2"); -DEF_REGISTER(private_base, Arch_amdgpu_cdna2 | HWR | BITS_64 | 13,"amdgpu_cdna2"); -DEF_REGISTER(private_limit, Arch_amdgpu_cdna2 | HWR | BITS_64 | 14,"amdgpu_cdna2"); -DEF_REGISTER(shared_base, Arch_amdgpu_cdna2 | HWR | BITS_64 | 15,"amdgpu_cdna2"); -DEF_REGISTER(shared_limit, Arch_amdgpu_cdna2 | HWR | BITS_64 | 16,"amdgpu_cdna2"); -DEF_REGISTER(status, Arch_amdgpu_cdna2 | HWR | BITS_32 | 17,"amdgpu_cdna2"); -DEF_REGISTER(scc, Arch_amdgpu_cdna2 | 0x0 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(spi_prio, Arch_amdgpu_cdna2 | 0x10000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(wave_prio, Arch_amdgpu_cdna2 | 0x30000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(priv, Arch_amdgpu_cdna2 | 0x50000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(trap_en, Arch_amdgpu_cdna2 | 0x60000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(ttrace_en, Arch_amdgpu_cdna2 | 0x70000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(export_rdy, Arch_amdgpu_cdna2 | 0x80000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(execz, Arch_amdgpu_cdna2 | 0x90000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(vccz, Arch_amdgpu_cdna2 | 0xa0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(in_tg, Arch_amdgpu_cdna2 | 0xb0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(in_barrier, Arch_amdgpu_cdna2 | 0xc0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(halt, Arch_amdgpu_cdna2 | 0xd0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(trap, Arch_amdgpu_cdna2 | 0xe0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(ttrace_cu_en, Arch_amdgpu_cdna2 | 0xf0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(valid, Arch_amdgpu_cdna2 | 0x100000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(ecc_err, Arch_amdgpu_cdna2 | 0x110000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(skin_export, Arch_amdgpu_cdna2 | 0x120000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(perf_en, Arch_amdgpu_cdna2 | 0x130000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(cond_dbg_user, Arch_amdgpu_cdna2 | 0x140000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(cond_dbg_sys, Arch_amdgpu_cdna2 | 0x150000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(allow_replay, Arch_amdgpu_cdna2 | 0x160000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(must_export, Arch_amdgpu_cdna2 | 0x1b0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna2"); -DEF_REGISTER(tba, Arch_amdgpu_cdna2 | HWR | BITS_64 | 18,"amdgpu_cdna2"); -DEF_REGISTER(tid, Arch_amdgpu_cdna2 | HWR | BITS_32 | 19,"amdgpu_cdna2"); -DEF_REGISTER(tma, Arch_amdgpu_cdna2 | HWR | BITS_64 | 20,"amdgpu_cdna2"); -DEF_REGISTER(trap_base_address, Arch_amdgpu_cdna2 | HWR | BITS_64 | 21,"amdgpu_cdna2"); -DEF_REGISTER(trap_memory_address, Arch_amdgpu_cdna2 | HWR | BITS_64 | 22,"amdgpu_cdna2"); -DEF_REGISTER(ttmp0, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 0,"amdgpu_cdna2"); -DEF_REGISTER(ttmp1, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 1,"amdgpu_cdna2"); -DEF_REGISTER(ttmp10, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 2,"amdgpu_cdna2"); -DEF_REGISTER(ttmp11, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 3,"amdgpu_cdna2"); -DEF_REGISTER(ttmp12, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 4,"amdgpu_cdna2"); -DEF_REGISTER(ttmp13, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 5,"amdgpu_cdna2"); -DEF_REGISTER(ttmp14, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 6,"amdgpu_cdna2"); -DEF_REGISTER(ttmp15, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 7,"amdgpu_cdna2"); -DEF_REGISTER(ttmp2, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 8,"amdgpu_cdna2"); -DEF_REGISTER(ttmp3, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 9,"amdgpu_cdna2"); -DEF_REGISTER(ttmp4, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 10,"amdgpu_cdna2"); -DEF_REGISTER(ttmp5, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 11,"amdgpu_cdna2"); -DEF_REGISTER(ttmp6, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 12,"amdgpu_cdna2"); -DEF_REGISTER(ttmp7, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 13,"amdgpu_cdna2"); -DEF_REGISTER(ttmp8, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 14,"amdgpu_cdna2"); -DEF_REGISTER(ttmp9, Arch_amdgpu_cdna2 | TTMP_SGPR | BITS_32 | 15,"amdgpu_cdna2"); -DEF_REGISTER(vcc, Arch_amdgpu_cdna2 | HWR | BITS_64 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vcc_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vcc_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vectory_memory_icount, Arch_amdgpu_cdna2 | HWR | BITS_8 | 24,"amdgpu_cdna2"); -DEF_REGISTER(vmcnt, Arch_amdgpu_cdna2 | HWR | BITS_6 | 25,"amdgpu_cdna2"); -DEF_REGISTER(xnack_mask, Arch_amdgpu_cdna2 | HWR | BITS_64 | 26,"amdgpu_cdna2"); -DEF_REGISTER(xnack_mask_lo, Arch_amdgpu_cdna2 | 0x0 | BITS_32 | 0x8000 | 26,"amdgpu_cdna2"); -DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_cdna2 | 0x200000 | BITS_32 | 0x8000 | 26,"amdgpu_cdna2"); -DEF_REGISTER(sgpr0, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 0,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_0, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_0, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_0, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec16_0, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna2"); -DEF_REGISTER(sgpr1, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 1,"amdgpu_cdna2"); -DEF_REGISTER(sgpr2, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 2,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_2, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna2"); -DEF_REGISTER(sgpr3, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 3,"amdgpu_cdna2"); -DEF_REGISTER(sgpr4, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 4,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_4, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_4, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna2"); -DEF_REGISTER(sgpr5, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 5,"amdgpu_cdna2"); -DEF_REGISTER(sgpr6, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 6,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_6, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna2"); -DEF_REGISTER(sgpr7, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 7,"amdgpu_cdna2"); -DEF_REGISTER(sgpr8, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 8,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_8, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_8, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_8, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna2"); -DEF_REGISTER(sgpr9, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 9,"amdgpu_cdna2"); -DEF_REGISTER(sgpr10, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 10,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_10, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna2"); -DEF_REGISTER(sgpr11, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 11,"amdgpu_cdna2"); -DEF_REGISTER(sgpr12, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 12,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_12, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_12, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna2"); -DEF_REGISTER(sgpr13, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 13,"amdgpu_cdna2"); -DEF_REGISTER(sgpr14, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 14,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_14, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna2"); -DEF_REGISTER(sgpr15, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 15,"amdgpu_cdna2"); -DEF_REGISTER(sgpr16, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 16,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_16, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_16, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_16, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec16_16, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna2"); -DEF_REGISTER(sgpr17, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 17,"amdgpu_cdna2"); -DEF_REGISTER(sgpr18, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 18,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_18, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna2"); -DEF_REGISTER(sgpr19, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 19,"amdgpu_cdna2"); -DEF_REGISTER(sgpr20, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 20,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_20, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_20, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna2"); -DEF_REGISTER(sgpr21, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 21,"amdgpu_cdna2"); -DEF_REGISTER(sgpr22, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 22,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_22, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna2"); -DEF_REGISTER(sgpr23, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 23,"amdgpu_cdna2"); -DEF_REGISTER(sgpr24, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 24,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_24, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_24, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_24, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna2"); -DEF_REGISTER(sgpr25, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 25,"amdgpu_cdna2"); -DEF_REGISTER(sgpr26, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 26,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_26, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna2"); -DEF_REGISTER(sgpr27, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 27,"amdgpu_cdna2"); -DEF_REGISTER(sgpr28, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 28,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_28, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_28, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna2"); -DEF_REGISTER(sgpr29, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 29,"amdgpu_cdna2"); -DEF_REGISTER(sgpr30, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 30,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_30, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna2"); -DEF_REGISTER(sgpr31, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 31,"amdgpu_cdna2"); -DEF_REGISTER(sgpr32, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 32,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_32, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_32, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_32, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec16_32, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna2"); -DEF_REGISTER(sgpr33, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 33,"amdgpu_cdna2"); -DEF_REGISTER(sgpr34, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 34,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_34, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna2"); -DEF_REGISTER(sgpr35, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 35,"amdgpu_cdna2"); -DEF_REGISTER(sgpr36, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 36,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_36, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_36, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna2"); -DEF_REGISTER(sgpr37, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 37,"amdgpu_cdna2"); -DEF_REGISTER(sgpr38, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 38,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_38, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna2"); -DEF_REGISTER(sgpr39, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 39,"amdgpu_cdna2"); -DEF_REGISTER(sgpr40, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 40,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_40, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_40, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_40, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna2"); -DEF_REGISTER(sgpr41, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 41,"amdgpu_cdna2"); -DEF_REGISTER(sgpr42, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 42,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_42, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna2"); -DEF_REGISTER(sgpr43, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 43,"amdgpu_cdna2"); -DEF_REGISTER(sgpr44, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 44,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_44, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_44, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna2"); -DEF_REGISTER(sgpr45, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 45,"amdgpu_cdna2"); -DEF_REGISTER(sgpr46, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 46,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_46, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna2"); -DEF_REGISTER(sgpr47, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 47,"amdgpu_cdna2"); -DEF_REGISTER(sgpr48, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 48,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_48, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_48, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_48, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec16_48, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna2"); -DEF_REGISTER(sgpr49, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 49,"amdgpu_cdna2"); -DEF_REGISTER(sgpr50, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 50,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_50, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna2"); -DEF_REGISTER(sgpr51, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 51,"amdgpu_cdna2"); -DEF_REGISTER(sgpr52, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 52,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_52, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_52, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna2"); -DEF_REGISTER(sgpr53, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 53,"amdgpu_cdna2"); -DEF_REGISTER(sgpr54, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 54,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_54, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna2"); -DEF_REGISTER(sgpr55, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 55,"amdgpu_cdna2"); -DEF_REGISTER(sgpr56, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 56,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_56, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_56, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_56, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna2"); -DEF_REGISTER(sgpr57, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 57,"amdgpu_cdna2"); -DEF_REGISTER(sgpr58, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 58,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_58, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna2"); -DEF_REGISTER(sgpr59, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 59,"amdgpu_cdna2"); -DEF_REGISTER(sgpr60, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 60,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_60, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_60, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna2"); -DEF_REGISTER(sgpr61, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 61,"amdgpu_cdna2"); -DEF_REGISTER(sgpr62, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 62,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_62, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna2"); -DEF_REGISTER(sgpr63, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 63,"amdgpu_cdna2"); -DEF_REGISTER(sgpr64, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 64,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_64, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_64, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_64, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec16_64, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna2"); -DEF_REGISTER(sgpr65, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 65,"amdgpu_cdna2"); -DEF_REGISTER(sgpr66, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 66,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_66, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna2"); -DEF_REGISTER(sgpr67, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 67,"amdgpu_cdna2"); -DEF_REGISTER(sgpr68, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 68,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_68, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_68, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna2"); -DEF_REGISTER(sgpr69, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 69,"amdgpu_cdna2"); -DEF_REGISTER(sgpr70, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 70,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_70, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna2"); -DEF_REGISTER(sgpr71, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 71,"amdgpu_cdna2"); -DEF_REGISTER(sgpr72, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 72,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_72, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_72, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_72, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna2"); -DEF_REGISTER(sgpr73, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 73,"amdgpu_cdna2"); -DEF_REGISTER(sgpr74, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 74,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_74, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna2"); -DEF_REGISTER(sgpr75, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 75,"amdgpu_cdna2"); -DEF_REGISTER(sgpr76, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 76,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_76, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_76, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna2"); -DEF_REGISTER(sgpr77, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 77,"amdgpu_cdna2"); -DEF_REGISTER(sgpr78, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 78,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_78, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna2"); -DEF_REGISTER(sgpr79, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 79,"amdgpu_cdna2"); -DEF_REGISTER(sgpr80, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 80,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_80, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_80, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_80, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec16_80, Arch_amdgpu_cdna2 | SGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna2"); -DEF_REGISTER(sgpr81, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 81,"amdgpu_cdna2"); -DEF_REGISTER(sgpr82, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 82,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_82, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna2"); -DEF_REGISTER(sgpr83, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 83,"amdgpu_cdna2"); -DEF_REGISTER(sgpr84, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 84,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_84, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_84, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna2"); -DEF_REGISTER(sgpr85, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 85,"amdgpu_cdna2"); -DEF_REGISTER(sgpr86, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 86,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_86, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna2"); -DEF_REGISTER(sgpr87, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 87,"amdgpu_cdna2"); -DEF_REGISTER(sgpr88, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 88,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_88, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_88, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_88, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna2"); -DEF_REGISTER(sgpr89, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 89,"amdgpu_cdna2"); -DEF_REGISTER(sgpr90, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 90,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_90, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna2"); -DEF_REGISTER(sgpr91, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 91,"amdgpu_cdna2"); -DEF_REGISTER(sgpr92, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 92,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_92, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_92, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna2"); -DEF_REGISTER(sgpr93, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 93,"amdgpu_cdna2"); -DEF_REGISTER(sgpr94, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 94,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_94, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna2"); -DEF_REGISTER(sgpr95, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 95,"amdgpu_cdna2"); -DEF_REGISTER(sgpr96, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 96,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_96, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_96, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec8_96, Arch_amdgpu_cdna2 | SGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna2"); -DEF_REGISTER(sgpr97, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 97,"amdgpu_cdna2"); -DEF_REGISTER(sgpr98, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 98,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_98, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna2"); -DEF_REGISTER(sgpr99, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 99,"amdgpu_cdna2"); -DEF_REGISTER(sgpr100, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 100,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_100, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec4_100, Arch_amdgpu_cdna2 | SGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna2"); -DEF_REGISTER(sgpr101, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 101,"amdgpu_cdna2"); -DEF_REGISTER(sgpr102, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 102,"amdgpu_cdna2"); -DEF_REGISTER(sgpr_vec2_102, Arch_amdgpu_cdna2 | SGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna2"); -DEF_REGISTER(sgpr103, Arch_amdgpu_cdna2 | SGPR | BITS_32 | 103,"amdgpu_cdna2"); -DEF_REGISTER(vgpr0, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 0,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_0, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_0, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_0, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_0, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna2"); -DEF_REGISTER(vgpr1, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 1,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_1, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 1,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_1, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 1,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_1, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 1,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_1, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 1,"amdgpu_cdna2"); -DEF_REGISTER(vgpr2, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 2,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_2, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_2, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 2,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_2, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 2,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_2, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 2,"amdgpu_cdna2"); -DEF_REGISTER(vgpr3, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 3,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_3, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 3,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_3, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 3,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_3, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 3,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_3, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 3,"amdgpu_cdna2"); -DEF_REGISTER(vgpr4, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 4,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_4, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_4, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_4, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 4,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_4, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 4,"amdgpu_cdna2"); -DEF_REGISTER(vgpr5, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_5, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_5, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_5, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_5, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 5,"amdgpu_cdna2"); -DEF_REGISTER(vgpr6, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 6,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_6, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_6, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 6,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_6, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 6,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_6, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 6,"amdgpu_cdna2"); -DEF_REGISTER(vgpr7, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 7,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_7, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 7,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_7, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 7,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_7, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 7,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_7, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 7,"amdgpu_cdna2"); -DEF_REGISTER(vgpr8, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 8,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_8, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_8, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_8, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_8, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 8,"amdgpu_cdna2"); -DEF_REGISTER(vgpr9, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 9,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_9, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 9,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_9, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 9,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_9, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 9,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_9, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 9,"amdgpu_cdna2"); -DEF_REGISTER(vgpr10, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 10,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_10, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_10, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 10,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_10, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 10,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_10, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 10,"amdgpu_cdna2"); -DEF_REGISTER(vgpr11, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 11,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_11, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 11,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_11, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 11,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_11, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 11,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_11, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 11,"amdgpu_cdna2"); -DEF_REGISTER(vgpr12, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 12,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_12, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_12, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_12, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 12,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_12, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 12,"amdgpu_cdna2"); -DEF_REGISTER(vgpr13, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 13,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_13, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 13,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_13, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 13,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_13, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 13,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_13, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 13,"amdgpu_cdna2"); -DEF_REGISTER(vgpr14, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 14,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_14, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_14, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 14,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_14, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 14,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_14, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 14,"amdgpu_cdna2"); -DEF_REGISTER(vgpr15, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 15,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_15, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 15,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_15, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 15,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_15, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 15,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_15, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 15,"amdgpu_cdna2"); -DEF_REGISTER(vgpr16, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 16,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_16, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_16, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_16, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_16, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna2"); -DEF_REGISTER(vgpr17, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 17,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_17, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 17,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_17, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 17,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_17, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 17,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_17, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 17,"amdgpu_cdna2"); -DEF_REGISTER(vgpr18, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 18,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_18, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_18, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 18,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_18, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 18,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_18, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 18,"amdgpu_cdna2"); -DEF_REGISTER(vgpr19, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 19,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_19, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 19,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_19, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 19,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_19, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 19,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_19, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 19,"amdgpu_cdna2"); -DEF_REGISTER(vgpr20, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 20,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_20, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_20, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_20, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 20,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_20, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 20,"amdgpu_cdna2"); -DEF_REGISTER(vgpr21, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 21,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_21, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 21,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_21, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 21,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_21, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 21,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_21, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 21,"amdgpu_cdna2"); -DEF_REGISTER(vgpr22, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 22,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_22, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_22, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 22,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_22, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 22,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_22, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 22,"amdgpu_cdna2"); -DEF_REGISTER(vgpr23, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_23, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_23, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_23, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_23, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 23,"amdgpu_cdna2"); -DEF_REGISTER(vgpr24, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 24,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_24, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_24, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_24, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_24, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 24,"amdgpu_cdna2"); -DEF_REGISTER(vgpr25, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 25,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_25, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 25,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_25, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 25,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_25, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 25,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_25, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 25,"amdgpu_cdna2"); -DEF_REGISTER(vgpr26, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 26,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_26, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_26, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 26,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_26, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 26,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_26, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 26,"amdgpu_cdna2"); -DEF_REGISTER(vgpr27, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 27,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_27, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 27,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_27, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 27,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_27, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 27,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_27, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 27,"amdgpu_cdna2"); -DEF_REGISTER(vgpr28, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 28,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_28, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_28, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_28, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 28,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_28, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 28,"amdgpu_cdna2"); -DEF_REGISTER(vgpr29, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 29,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_29, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 29,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_29, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 29,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_29, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 29,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_29, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 29,"amdgpu_cdna2"); -DEF_REGISTER(vgpr30, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 30,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_30, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_30, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 30,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_30, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 30,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_30, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 30,"amdgpu_cdna2"); -DEF_REGISTER(vgpr31, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 31,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_31, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 31,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_31, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 31,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_31, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 31,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_31, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 31,"amdgpu_cdna2"); -DEF_REGISTER(vgpr32, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 32,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_32, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_32, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_32, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_32, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna2"); -DEF_REGISTER(vgpr33, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 33,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_33, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 33,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_33, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 33,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_33, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 33,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_33, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 33,"amdgpu_cdna2"); -DEF_REGISTER(vgpr34, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 34,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_34, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_34, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 34,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_34, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 34,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_34, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 34,"amdgpu_cdna2"); -DEF_REGISTER(vgpr35, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 35,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_35, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 35,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_35, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 35,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_35, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 35,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_35, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 35,"amdgpu_cdna2"); -DEF_REGISTER(vgpr36, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 36,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_36, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_36, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_36, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 36,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_36, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 36,"amdgpu_cdna2"); -DEF_REGISTER(vgpr37, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 37,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_37, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 37,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_37, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 37,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_37, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 37,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_37, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 37,"amdgpu_cdna2"); -DEF_REGISTER(vgpr38, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 38,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_38, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_38, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 38,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_38, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 38,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_38, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 38,"amdgpu_cdna2"); -DEF_REGISTER(vgpr39, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 39,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_39, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 39,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_39, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 39,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_39, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 39,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_39, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 39,"amdgpu_cdna2"); -DEF_REGISTER(vgpr40, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 40,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_40, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_40, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_40, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_40, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 40,"amdgpu_cdna2"); -DEF_REGISTER(vgpr41, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 41,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_41, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 41,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_41, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 41,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_41, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 41,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_41, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 41,"amdgpu_cdna2"); -DEF_REGISTER(vgpr42, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 42,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_42, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_42, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 42,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_42, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 42,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_42, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 42,"amdgpu_cdna2"); -DEF_REGISTER(vgpr43, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 43,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_43, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 43,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_43, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 43,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_43, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 43,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_43, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 43,"amdgpu_cdna2"); -DEF_REGISTER(vgpr44, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 44,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_44, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_44, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_44, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 44,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_44, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 44,"amdgpu_cdna2"); -DEF_REGISTER(vgpr45, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 45,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_45, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 45,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_45, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 45,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_45, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 45,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_45, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 45,"amdgpu_cdna2"); -DEF_REGISTER(vgpr46, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 46,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_46, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_46, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 46,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_46, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 46,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_46, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 46,"amdgpu_cdna2"); -DEF_REGISTER(vgpr47, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 47,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_47, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 47,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_47, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 47,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_47, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 47,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_47, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 47,"amdgpu_cdna2"); -DEF_REGISTER(vgpr48, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 48,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_48, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_48, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_48, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_48, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna2"); -DEF_REGISTER(vgpr49, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 49,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_49, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 49,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_49, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 49,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_49, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 49,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_49, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 49,"amdgpu_cdna2"); -DEF_REGISTER(vgpr50, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 50,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_50, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_50, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 50,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_50, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 50,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_50, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 50,"amdgpu_cdna2"); -DEF_REGISTER(vgpr51, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 51,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_51, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 51,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_51, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 51,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_51, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 51,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_51, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 51,"amdgpu_cdna2"); -DEF_REGISTER(vgpr52, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 52,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_52, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_52, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_52, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 52,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_52, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 52,"amdgpu_cdna2"); -DEF_REGISTER(vgpr53, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 53,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_53, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 53,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_53, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 53,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_53, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 53,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_53, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 53,"amdgpu_cdna2"); -DEF_REGISTER(vgpr54, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 54,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_54, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_54, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 54,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_54, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 54,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_54, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 54,"amdgpu_cdna2"); -DEF_REGISTER(vgpr55, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 55,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_55, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 55,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_55, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 55,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_55, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 55,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_55, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 55,"amdgpu_cdna2"); -DEF_REGISTER(vgpr56, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 56,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_56, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_56, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_56, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_56, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 56,"amdgpu_cdna2"); -DEF_REGISTER(vgpr57, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 57,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_57, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 57,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_57, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 57,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_57, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 57,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_57, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 57,"amdgpu_cdna2"); -DEF_REGISTER(vgpr58, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 58,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_58, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_58, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 58,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_58, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 58,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_58, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 58,"amdgpu_cdna2"); -DEF_REGISTER(vgpr59, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 59,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_59, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 59,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_59, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 59,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_59, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 59,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_59, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 59,"amdgpu_cdna2"); -DEF_REGISTER(vgpr60, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 60,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_60, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_60, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_60, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 60,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_60, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 60,"amdgpu_cdna2"); -DEF_REGISTER(vgpr61, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 61,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_61, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 61,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_61, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 61,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_61, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 61,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_61, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 61,"amdgpu_cdna2"); -DEF_REGISTER(vgpr62, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 62,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_62, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_62, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 62,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_62, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 62,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_62, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 62,"amdgpu_cdna2"); -DEF_REGISTER(vgpr63, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 63,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_63, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 63,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_63, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 63,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_63, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 63,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_63, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 63,"amdgpu_cdna2"); -DEF_REGISTER(vgpr64, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 64,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_64, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_64, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_64, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_64, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna2"); -DEF_REGISTER(vgpr65, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 65,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_65, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 65,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_65, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 65,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_65, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 65,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_65, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 65,"amdgpu_cdna2"); -DEF_REGISTER(vgpr66, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 66,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_66, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_66, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 66,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_66, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 66,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_66, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 66,"amdgpu_cdna2"); -DEF_REGISTER(vgpr67, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 67,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_67, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 67,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_67, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 67,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_67, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 67,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_67, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 67,"amdgpu_cdna2"); -DEF_REGISTER(vgpr68, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 68,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_68, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_68, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_68, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 68,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_68, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 68,"amdgpu_cdna2"); -DEF_REGISTER(vgpr69, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 69,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_69, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 69,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_69, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 69,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_69, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 69,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_69, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 69,"amdgpu_cdna2"); -DEF_REGISTER(vgpr70, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 70,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_70, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_70, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 70,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_70, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 70,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_70, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 70,"amdgpu_cdna2"); -DEF_REGISTER(vgpr71, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 71,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_71, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 71,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_71, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 71,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_71, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 71,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_71, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 71,"amdgpu_cdna2"); -DEF_REGISTER(vgpr72, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 72,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_72, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_72, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_72, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_72, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 72,"amdgpu_cdna2"); -DEF_REGISTER(vgpr73, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 73,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_73, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 73,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_73, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 73,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_73, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 73,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_73, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 73,"amdgpu_cdna2"); -DEF_REGISTER(vgpr74, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 74,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_74, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_74, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 74,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_74, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 74,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_74, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 74,"amdgpu_cdna2"); -DEF_REGISTER(vgpr75, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 75,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_75, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 75,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_75, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 75,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_75, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 75,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_75, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 75,"amdgpu_cdna2"); -DEF_REGISTER(vgpr76, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 76,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_76, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_76, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_76, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 76,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_76, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 76,"amdgpu_cdna2"); -DEF_REGISTER(vgpr77, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 77,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_77, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 77,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_77, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 77,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_77, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 77,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_77, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 77,"amdgpu_cdna2"); -DEF_REGISTER(vgpr78, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 78,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_78, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_78, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 78,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_78, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 78,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_78, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 78,"amdgpu_cdna2"); -DEF_REGISTER(vgpr79, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 79,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_79, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 79,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_79, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 79,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_79, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 79,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_79, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 79,"amdgpu_cdna2"); -DEF_REGISTER(vgpr80, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 80,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_80, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_80, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_80, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_80, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna2"); -DEF_REGISTER(vgpr81, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 81,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_81, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 81,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_81, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 81,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_81, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 81,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_81, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 81,"amdgpu_cdna2"); -DEF_REGISTER(vgpr82, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 82,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_82, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_82, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 82,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_82, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 82,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_82, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 82,"amdgpu_cdna2"); -DEF_REGISTER(vgpr83, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 83,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_83, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 83,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_83, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 83,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_83, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 83,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_83, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 83,"amdgpu_cdna2"); -DEF_REGISTER(vgpr84, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 84,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_84, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_84, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_84, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 84,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_84, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 84,"amdgpu_cdna2"); -DEF_REGISTER(vgpr85, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 85,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_85, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 85,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_85, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 85,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_85, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 85,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_85, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 85,"amdgpu_cdna2"); -DEF_REGISTER(vgpr86, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 86,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_86, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_86, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 86,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_86, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 86,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_86, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 86,"amdgpu_cdna2"); -DEF_REGISTER(vgpr87, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 87,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_87, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 87,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_87, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 87,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_87, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 87,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_87, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 87,"amdgpu_cdna2"); -DEF_REGISTER(vgpr88, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 88,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_88, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_88, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_88, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_88, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 88,"amdgpu_cdna2"); -DEF_REGISTER(vgpr89, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 89,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_89, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 89,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_89, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 89,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_89, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 89,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_89, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 89,"amdgpu_cdna2"); -DEF_REGISTER(vgpr90, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 90,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_90, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_90, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 90,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_90, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 90,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_90, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 90,"amdgpu_cdna2"); -DEF_REGISTER(vgpr91, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 91,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_91, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 91,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_91, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 91,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_91, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 91,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_91, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 91,"amdgpu_cdna2"); -DEF_REGISTER(vgpr92, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 92,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_92, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_92, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_92, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 92,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_92, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 92,"amdgpu_cdna2"); -DEF_REGISTER(vgpr93, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 93,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_93, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 93,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_93, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 93,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_93, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 93,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_93, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 93,"amdgpu_cdna2"); -DEF_REGISTER(vgpr94, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 94,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_94, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_94, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 94,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_94, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 94,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_94, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 94,"amdgpu_cdna2"); -DEF_REGISTER(vgpr95, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 95,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_95, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 95,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_95, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 95,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_95, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 95,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_95, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 95,"amdgpu_cdna2"); -DEF_REGISTER(vgpr96, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 96,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_96, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_96, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_96, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_96, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 96,"amdgpu_cdna2"); -DEF_REGISTER(vgpr97, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 97,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_97, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 97,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_97, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 97,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_97, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 97,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_97, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 97,"amdgpu_cdna2"); -DEF_REGISTER(vgpr98, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 98,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_98, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_98, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 98,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_98, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 98,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_98, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 98,"amdgpu_cdna2"); -DEF_REGISTER(vgpr99, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 99,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_99, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 99,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_99, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 99,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_99, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 99,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_99, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 99,"amdgpu_cdna2"); -DEF_REGISTER(vgpr100, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 100,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_100, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_100, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_100, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 100,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_100, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 100,"amdgpu_cdna2"); -DEF_REGISTER(vgpr101, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 101,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_101, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 101,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_101, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 101,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_101, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 101,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_101, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 101,"amdgpu_cdna2"); -DEF_REGISTER(vgpr102, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 102,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_102, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_102, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 102,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_102, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 102,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_102, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 102,"amdgpu_cdna2"); -DEF_REGISTER(vgpr103, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 103,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_103, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 103,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_103, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 103,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_103, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 103,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_103, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 103,"amdgpu_cdna2"); -DEF_REGISTER(vgpr104, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 104,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_104, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 104,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_104, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 104,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_104, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 104,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_104, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 104,"amdgpu_cdna2"); -DEF_REGISTER(vgpr105, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 105,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_105, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 105,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_105, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 105,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_105, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 105,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_105, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 105,"amdgpu_cdna2"); -DEF_REGISTER(vgpr106, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 106,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_106, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 106,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_106, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 106,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_106, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 106,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_106, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 106,"amdgpu_cdna2"); -DEF_REGISTER(vgpr107, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 107,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_107, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 107,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_107, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 107,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_107, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 107,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_107, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 107,"amdgpu_cdna2"); -DEF_REGISTER(vgpr108, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 108,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_108, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 108,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_108, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 108,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_108, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 108,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_108, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 108,"amdgpu_cdna2"); -DEF_REGISTER(vgpr109, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 109,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_109, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 109,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_109, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 109,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_109, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 109,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_109, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 109,"amdgpu_cdna2"); -DEF_REGISTER(vgpr110, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 110,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_110, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 110,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_110, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 110,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_110, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 110,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_110, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 110,"amdgpu_cdna2"); -DEF_REGISTER(vgpr111, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 111,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_111, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 111,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_111, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 111,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_111, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 111,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_111, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 111,"amdgpu_cdna2"); -DEF_REGISTER(vgpr112, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 112,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_112, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 112,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_112, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 112,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_112, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 112,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_112, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 112,"amdgpu_cdna2"); -DEF_REGISTER(vgpr113, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 113,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_113, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 113,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_113, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 113,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_113, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 113,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_113, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 113,"amdgpu_cdna2"); -DEF_REGISTER(vgpr114, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 114,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_114, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 114,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_114, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 114,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_114, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 114,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_114, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 114,"amdgpu_cdna2"); -DEF_REGISTER(vgpr115, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 115,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_115, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 115,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_115, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 115,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_115, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 115,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_115, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 115,"amdgpu_cdna2"); -DEF_REGISTER(vgpr116, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 116,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_116, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 116,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_116, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 116,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_116, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 116,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_116, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 116,"amdgpu_cdna2"); -DEF_REGISTER(vgpr117, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 117,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_117, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 117,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_117, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 117,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_117, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 117,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_117, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 117,"amdgpu_cdna2"); -DEF_REGISTER(vgpr118, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 118,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_118, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 118,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_118, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 118,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_118, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 118,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_118, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 118,"amdgpu_cdna2"); -DEF_REGISTER(vgpr119, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 119,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_119, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 119,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_119, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 119,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_119, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 119,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_119, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 119,"amdgpu_cdna2"); -DEF_REGISTER(vgpr120, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 120,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_120, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 120,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_120, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 120,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_120, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 120,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_120, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 120,"amdgpu_cdna2"); -DEF_REGISTER(vgpr121, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 121,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_121, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 121,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_121, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 121,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_121, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 121,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_121, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 121,"amdgpu_cdna2"); -DEF_REGISTER(vgpr122, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 122,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_122, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 122,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_122, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 122,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_122, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 122,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_122, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 122,"amdgpu_cdna2"); -DEF_REGISTER(vgpr123, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 123,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_123, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 123,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_123, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 123,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_123, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 123,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_123, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 123,"amdgpu_cdna2"); -DEF_REGISTER(vgpr124, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 124,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_124, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 124,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_124, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 124,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_124, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 124,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_124, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 124,"amdgpu_cdna2"); -DEF_REGISTER(vgpr125, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 125,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_125, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 125,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_125, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 125,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_125, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 125,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_125, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 125,"amdgpu_cdna2"); -DEF_REGISTER(vgpr126, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 126,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_126, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 126,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_126, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 126,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_126, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 126,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_126, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 126,"amdgpu_cdna2"); -DEF_REGISTER(vgpr127, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 127,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_127, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 127,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_127, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 127,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_127, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 127,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_127, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 127,"amdgpu_cdna2"); -DEF_REGISTER(vgpr128, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 128,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_128, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 128,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_128, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 128,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_128, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 128,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_128, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 128,"amdgpu_cdna2"); -DEF_REGISTER(vgpr129, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 129,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_129, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 129,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_129, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 129,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_129, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 129,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_129, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 129,"amdgpu_cdna2"); -DEF_REGISTER(vgpr130, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 130,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_130, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 130,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_130, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 130,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_130, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 130,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_130, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 130,"amdgpu_cdna2"); -DEF_REGISTER(vgpr131, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 131,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_131, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 131,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_131, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 131,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_131, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 131,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_131, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 131,"amdgpu_cdna2"); -DEF_REGISTER(vgpr132, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 132,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_132, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 132,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_132, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 132,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_132, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 132,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_132, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 132,"amdgpu_cdna2"); -DEF_REGISTER(vgpr133, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 133,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_133, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 133,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_133, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 133,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_133, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 133,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_133, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 133,"amdgpu_cdna2"); -DEF_REGISTER(vgpr134, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 134,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_134, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 134,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_134, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 134,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_134, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 134,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_134, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 134,"amdgpu_cdna2"); -DEF_REGISTER(vgpr135, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 135,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_135, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 135,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_135, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 135,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_135, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 135,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_135, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 135,"amdgpu_cdna2"); -DEF_REGISTER(vgpr136, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 136,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_136, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 136,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_136, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 136,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_136, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 136,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_136, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 136,"amdgpu_cdna2"); -DEF_REGISTER(vgpr137, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 137,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_137, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 137,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_137, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 137,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_137, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 137,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_137, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 137,"amdgpu_cdna2"); -DEF_REGISTER(vgpr138, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 138,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_138, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 138,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_138, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 138,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_138, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 138,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_138, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 138,"amdgpu_cdna2"); -DEF_REGISTER(vgpr139, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 139,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_139, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 139,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_139, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 139,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_139, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 139,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_139, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 139,"amdgpu_cdna2"); -DEF_REGISTER(vgpr140, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 140,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_140, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 140,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_140, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 140,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_140, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 140,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_140, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 140,"amdgpu_cdna2"); -DEF_REGISTER(vgpr141, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 141,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_141, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 141,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_141, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 141,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_141, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 141,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_141, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 141,"amdgpu_cdna2"); -DEF_REGISTER(vgpr142, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 142,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_142, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 142,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_142, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 142,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_142, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 142,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_142, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 142,"amdgpu_cdna2"); -DEF_REGISTER(vgpr143, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 143,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_143, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 143,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_143, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 143,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_143, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 143,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_143, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 143,"amdgpu_cdna2"); -DEF_REGISTER(vgpr144, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 144,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_144, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 144,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_144, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 144,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_144, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 144,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_144, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 144,"amdgpu_cdna2"); -DEF_REGISTER(vgpr145, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 145,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_145, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 145,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_145, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 145,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_145, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 145,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_145, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 145,"amdgpu_cdna2"); -DEF_REGISTER(vgpr146, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 146,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_146, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 146,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_146, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 146,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_146, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 146,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_146, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 146,"amdgpu_cdna2"); -DEF_REGISTER(vgpr147, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 147,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_147, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 147,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_147, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 147,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_147, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 147,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_147, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 147,"amdgpu_cdna2"); -DEF_REGISTER(vgpr148, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 148,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_148, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 148,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_148, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 148,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_148, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 148,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_148, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 148,"amdgpu_cdna2"); -DEF_REGISTER(vgpr149, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 149,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_149, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 149,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_149, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 149,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_149, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 149,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_149, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 149,"amdgpu_cdna2"); -DEF_REGISTER(vgpr150, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 150,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_150, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 150,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_150, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 150,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_150, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 150,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_150, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 150,"amdgpu_cdna2"); -DEF_REGISTER(vgpr151, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 151,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_151, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 151,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_151, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 151,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_151, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 151,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_151, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 151,"amdgpu_cdna2"); -DEF_REGISTER(vgpr152, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 152,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_152, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 152,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_152, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 152,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_152, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 152,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_152, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 152,"amdgpu_cdna2"); -DEF_REGISTER(vgpr153, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 153,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_153, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 153,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_153, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 153,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_153, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 153,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_153, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 153,"amdgpu_cdna2"); -DEF_REGISTER(vgpr154, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 154,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_154, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 154,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_154, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 154,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_154, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 154,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_154, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 154,"amdgpu_cdna2"); -DEF_REGISTER(vgpr155, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 155,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_155, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 155,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_155, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 155,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_155, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 155,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_155, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 155,"amdgpu_cdna2"); -DEF_REGISTER(vgpr156, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 156,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_156, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 156,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_156, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 156,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_156, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 156,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_156, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 156,"amdgpu_cdna2"); -DEF_REGISTER(vgpr157, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 157,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_157, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 157,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_157, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 157,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_157, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 157,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_157, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 157,"amdgpu_cdna2"); -DEF_REGISTER(vgpr158, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 158,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_158, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 158,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_158, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 158,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_158, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 158,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_158, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 158,"amdgpu_cdna2"); -DEF_REGISTER(vgpr159, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 159,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_159, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 159,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_159, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 159,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_159, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 159,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_159, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 159,"amdgpu_cdna2"); -DEF_REGISTER(vgpr160, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 160,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_160, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 160,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_160, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 160,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_160, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 160,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_160, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 160,"amdgpu_cdna2"); -DEF_REGISTER(vgpr161, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 161,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_161, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 161,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_161, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 161,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_161, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 161,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_161, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 161,"amdgpu_cdna2"); -DEF_REGISTER(vgpr162, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 162,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_162, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 162,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_162, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 162,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_162, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 162,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_162, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 162,"amdgpu_cdna2"); -DEF_REGISTER(vgpr163, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 163,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_163, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 163,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_163, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 163,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_163, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 163,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_163, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 163,"amdgpu_cdna2"); -DEF_REGISTER(vgpr164, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 164,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_164, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 164,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_164, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 164,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_164, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 164,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_164, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 164,"amdgpu_cdna2"); -DEF_REGISTER(vgpr165, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 165,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_165, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 165,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_165, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 165,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_165, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 165,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_165, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 165,"amdgpu_cdna2"); -DEF_REGISTER(vgpr166, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 166,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_166, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 166,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_166, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 166,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_166, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 166,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_166, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 166,"amdgpu_cdna2"); -DEF_REGISTER(vgpr167, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 167,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_167, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 167,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_167, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 167,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_167, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 167,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_167, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 167,"amdgpu_cdna2"); -DEF_REGISTER(vgpr168, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 168,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_168, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 168,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_168, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 168,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_168, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 168,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_168, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 168,"amdgpu_cdna2"); -DEF_REGISTER(vgpr169, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 169,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_169, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 169,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_169, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 169,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_169, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 169,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_169, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 169,"amdgpu_cdna2"); -DEF_REGISTER(vgpr170, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 170,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_170, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 170,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_170, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 170,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_170, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 170,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_170, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 170,"amdgpu_cdna2"); -DEF_REGISTER(vgpr171, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 171,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_171, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 171,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_171, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 171,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_171, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 171,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_171, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 171,"amdgpu_cdna2"); -DEF_REGISTER(vgpr172, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 172,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_172, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 172,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_172, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 172,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_172, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 172,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_172, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 172,"amdgpu_cdna2"); -DEF_REGISTER(vgpr173, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 173,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_173, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 173,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_173, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 173,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_173, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 173,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_173, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 173,"amdgpu_cdna2"); -DEF_REGISTER(vgpr174, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 174,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_174, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 174,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_174, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 174,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_174, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 174,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_174, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 174,"amdgpu_cdna2"); -DEF_REGISTER(vgpr175, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 175,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_175, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 175,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_175, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 175,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_175, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 175,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_175, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 175,"amdgpu_cdna2"); -DEF_REGISTER(vgpr176, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 176,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_176, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 176,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_176, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 176,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_176, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 176,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_176, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 176,"amdgpu_cdna2"); -DEF_REGISTER(vgpr177, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 177,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_177, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 177,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_177, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 177,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_177, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 177,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_177, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 177,"amdgpu_cdna2"); -DEF_REGISTER(vgpr178, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 178,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_178, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 178,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_178, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 178,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_178, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 178,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_178, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 178,"amdgpu_cdna2"); -DEF_REGISTER(vgpr179, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 179,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_179, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 179,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_179, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 179,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_179, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 179,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_179, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 179,"amdgpu_cdna2"); -DEF_REGISTER(vgpr180, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 180,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_180, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 180,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_180, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 180,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_180, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 180,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_180, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 180,"amdgpu_cdna2"); -DEF_REGISTER(vgpr181, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 181,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_181, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 181,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_181, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 181,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_181, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 181,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_181, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 181,"amdgpu_cdna2"); -DEF_REGISTER(vgpr182, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 182,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_182, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 182,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_182, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 182,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_182, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 182,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_182, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 182,"amdgpu_cdna2"); -DEF_REGISTER(vgpr183, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 183,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_183, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 183,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_183, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 183,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_183, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 183,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_183, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 183,"amdgpu_cdna2"); -DEF_REGISTER(vgpr184, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 184,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_184, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 184,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_184, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 184,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_184, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 184,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_184, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 184,"amdgpu_cdna2"); -DEF_REGISTER(vgpr185, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 185,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_185, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 185,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_185, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 185,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_185, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 185,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_185, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 185,"amdgpu_cdna2"); -DEF_REGISTER(vgpr186, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 186,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_186, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 186,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_186, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 186,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_186, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 186,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_186, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 186,"amdgpu_cdna2"); -DEF_REGISTER(vgpr187, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 187,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_187, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 187,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_187, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 187,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_187, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 187,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_187, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 187,"amdgpu_cdna2"); -DEF_REGISTER(vgpr188, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 188,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_188, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 188,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_188, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 188,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_188, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 188,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_188, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 188,"amdgpu_cdna2"); -DEF_REGISTER(vgpr189, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 189,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_189, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 189,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_189, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 189,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_189, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 189,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_189, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 189,"amdgpu_cdna2"); -DEF_REGISTER(vgpr190, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 190,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_190, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 190,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_190, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 190,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_190, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 190,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_190, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 190,"amdgpu_cdna2"); -DEF_REGISTER(vgpr191, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 191,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_191, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 191,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_191, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 191,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_191, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 191,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_191, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 191,"amdgpu_cdna2"); -DEF_REGISTER(vgpr192, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 192,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_192, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 192,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_192, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 192,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_192, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 192,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_192, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 192,"amdgpu_cdna2"); -DEF_REGISTER(vgpr193, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 193,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_193, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 193,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_193, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 193,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_193, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 193,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_193, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 193,"amdgpu_cdna2"); -DEF_REGISTER(vgpr194, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 194,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_194, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 194,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_194, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 194,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_194, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 194,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_194, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 194,"amdgpu_cdna2"); -DEF_REGISTER(vgpr195, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 195,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_195, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 195,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_195, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 195,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_195, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 195,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_195, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 195,"amdgpu_cdna2"); -DEF_REGISTER(vgpr196, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 196,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_196, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 196,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_196, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 196,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_196, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 196,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_196, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 196,"amdgpu_cdna2"); -DEF_REGISTER(vgpr197, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 197,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_197, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 197,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_197, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 197,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_197, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 197,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_197, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 197,"amdgpu_cdna2"); -DEF_REGISTER(vgpr198, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 198,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_198, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 198,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_198, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 198,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_198, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 198,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_198, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 198,"amdgpu_cdna2"); -DEF_REGISTER(vgpr199, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 199,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_199, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 199,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_199, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 199,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_199, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 199,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_199, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 199,"amdgpu_cdna2"); -DEF_REGISTER(vgpr200, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 200,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_200, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 200,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_200, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 200,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_200, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 200,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_200, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 200,"amdgpu_cdna2"); -DEF_REGISTER(vgpr201, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 201,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_201, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 201,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_201, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 201,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_201, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 201,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_201, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 201,"amdgpu_cdna2"); -DEF_REGISTER(vgpr202, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 202,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_202, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 202,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_202, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 202,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_202, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 202,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_202, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 202,"amdgpu_cdna2"); -DEF_REGISTER(vgpr203, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 203,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_203, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 203,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_203, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 203,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_203, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 203,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_203, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 203,"amdgpu_cdna2"); -DEF_REGISTER(vgpr204, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 204,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_204, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 204,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_204, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 204,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_204, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 204,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_204, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 204,"amdgpu_cdna2"); -DEF_REGISTER(vgpr205, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 205,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_205, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 205,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_205, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 205,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_205, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 205,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_205, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 205,"amdgpu_cdna2"); -DEF_REGISTER(vgpr206, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 206,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_206, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 206,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_206, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 206,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_206, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 206,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_206, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 206,"amdgpu_cdna2"); -DEF_REGISTER(vgpr207, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 207,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_207, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 207,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_207, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 207,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_207, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 207,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_207, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 207,"amdgpu_cdna2"); -DEF_REGISTER(vgpr208, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 208,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_208, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 208,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_208, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 208,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_208, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 208,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_208, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 208,"amdgpu_cdna2"); -DEF_REGISTER(vgpr209, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 209,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_209, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 209,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_209, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 209,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_209, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 209,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_209, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 209,"amdgpu_cdna2"); -DEF_REGISTER(vgpr210, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 210,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_210, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 210,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_210, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 210,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_210, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 210,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_210, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 210,"amdgpu_cdna2"); -DEF_REGISTER(vgpr211, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 211,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_211, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 211,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_211, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 211,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_211, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 211,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_211, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 211,"amdgpu_cdna2"); -DEF_REGISTER(vgpr212, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 212,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_212, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 212,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_212, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 212,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_212, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 212,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_212, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 212,"amdgpu_cdna2"); -DEF_REGISTER(vgpr213, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 213,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_213, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 213,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_213, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 213,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_213, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 213,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_213, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 213,"amdgpu_cdna2"); -DEF_REGISTER(vgpr214, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 214,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_214, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 214,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_214, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 214,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_214, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 214,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_214, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 214,"amdgpu_cdna2"); -DEF_REGISTER(vgpr215, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 215,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_215, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 215,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_215, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 215,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_215, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 215,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_215, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 215,"amdgpu_cdna2"); -DEF_REGISTER(vgpr216, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 216,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_216, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 216,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_216, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 216,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_216, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 216,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_216, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 216,"amdgpu_cdna2"); -DEF_REGISTER(vgpr217, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 217,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_217, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 217,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_217, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 217,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_217, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 217,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_217, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 217,"amdgpu_cdna2"); -DEF_REGISTER(vgpr218, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 218,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_218, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 218,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_218, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 218,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_218, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 218,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_218, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 218,"amdgpu_cdna2"); -DEF_REGISTER(vgpr219, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 219,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_219, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 219,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_219, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 219,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_219, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 219,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_219, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 219,"amdgpu_cdna2"); -DEF_REGISTER(vgpr220, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 220,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_220, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 220,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_220, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 220,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_220, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 220,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_220, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 220,"amdgpu_cdna2"); -DEF_REGISTER(vgpr221, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 221,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_221, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 221,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_221, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 221,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_221, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 221,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_221, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 221,"amdgpu_cdna2"); -DEF_REGISTER(vgpr222, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 222,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_222, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 222,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_222, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 222,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_222, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 222,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_222, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 222,"amdgpu_cdna2"); -DEF_REGISTER(vgpr223, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 223,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_223, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 223,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_223, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 223,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_223, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 223,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_223, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 223,"amdgpu_cdna2"); -DEF_REGISTER(vgpr224, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 224,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_224, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 224,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_224, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 224,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_224, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 224,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_224, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 224,"amdgpu_cdna2"); -DEF_REGISTER(vgpr225, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 225,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_225, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 225,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_225, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 225,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_225, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 225,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_225, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 225,"amdgpu_cdna2"); -DEF_REGISTER(vgpr226, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 226,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_226, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 226,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_226, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 226,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_226, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 226,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_226, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 226,"amdgpu_cdna2"); -DEF_REGISTER(vgpr227, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 227,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_227, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 227,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_227, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 227,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_227, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 227,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_227, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 227,"amdgpu_cdna2"); -DEF_REGISTER(vgpr228, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 228,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_228, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 228,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_228, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 228,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_228, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 228,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_228, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 228,"amdgpu_cdna2"); -DEF_REGISTER(vgpr229, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 229,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_229, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 229,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_229, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 229,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_229, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 229,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_229, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 229,"amdgpu_cdna2"); -DEF_REGISTER(vgpr230, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 230,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_230, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 230,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_230, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 230,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_230, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 230,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_230, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 230,"amdgpu_cdna2"); -DEF_REGISTER(vgpr231, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 231,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_231, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 231,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_231, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 231,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_231, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 231,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_231, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 231,"amdgpu_cdna2"); -DEF_REGISTER(vgpr232, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 232,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_232, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 232,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_232, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 232,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_232, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 232,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_232, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 232,"amdgpu_cdna2"); -DEF_REGISTER(vgpr233, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 233,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_233, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 233,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_233, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 233,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_233, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 233,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_233, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 233,"amdgpu_cdna2"); -DEF_REGISTER(vgpr234, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 234,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_234, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 234,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_234, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 234,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_234, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 234,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_234, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 234,"amdgpu_cdna2"); -DEF_REGISTER(vgpr235, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 235,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_235, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 235,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_235, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 235,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_235, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 235,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_235, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 235,"amdgpu_cdna2"); -DEF_REGISTER(vgpr236, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 236,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_236, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 236,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_236, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 236,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_236, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 236,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_236, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 236,"amdgpu_cdna2"); -DEF_REGISTER(vgpr237, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 237,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_237, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 237,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_237, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 237,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_237, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 237,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_237, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 237,"amdgpu_cdna2"); -DEF_REGISTER(vgpr238, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 238,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_238, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 238,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_238, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 238,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_238, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 238,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_238, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 238,"amdgpu_cdna2"); -DEF_REGISTER(vgpr239, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 239,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_239, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 239,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_239, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 239,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_239, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 239,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_239, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 239,"amdgpu_cdna2"); -DEF_REGISTER(vgpr240, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 240,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_240, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 240,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_240, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 240,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_240, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 240,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec16_240, Arch_amdgpu_cdna2 | VGPR_VEC16 | BITS_512 | 240,"amdgpu_cdna2"); -DEF_REGISTER(vgpr241, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 241,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_241, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 241,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_241, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 241,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_241, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 241,"amdgpu_cdna2"); -DEF_REGISTER(vgpr242, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 242,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_242, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 242,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_242, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 242,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_242, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 242,"amdgpu_cdna2"); -DEF_REGISTER(vgpr243, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 243,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_243, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 243,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_243, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 243,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_243, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 243,"amdgpu_cdna2"); -DEF_REGISTER(vgpr244, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 244,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_244, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 244,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_244, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 244,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_244, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 244,"amdgpu_cdna2"); -DEF_REGISTER(vgpr245, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 245,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_245, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 245,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_245, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 245,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_245, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 245,"amdgpu_cdna2"); -DEF_REGISTER(vgpr246, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 246,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_246, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 246,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_246, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 246,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_246, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 246,"amdgpu_cdna2"); -DEF_REGISTER(vgpr247, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 247,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_247, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 247,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_247, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 247,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_247, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 247,"amdgpu_cdna2"); -DEF_REGISTER(vgpr248, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 248,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_248, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 248,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_248, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 248,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec8_248, Arch_amdgpu_cdna2 | VGPR_VEC8 | BITS_256 | 248,"amdgpu_cdna2"); -DEF_REGISTER(vgpr249, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 249,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_249, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 249,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_249, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 249,"amdgpu_cdna2"); -DEF_REGISTER(vgpr250, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 250,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_250, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 250,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_250, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 250,"amdgpu_cdna2"); -DEF_REGISTER(vgpr251, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 251,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_251, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 251,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_251, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 251,"amdgpu_cdna2"); -DEF_REGISTER(vgpr252, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 252,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_252, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 252,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec4_252, Arch_amdgpu_cdna2 | VGPR_VEC4 | BITS_128 | 252,"amdgpu_cdna2"); -DEF_REGISTER(vgpr253, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 253,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_253, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 253,"amdgpu_cdna2"); -DEF_REGISTER(vgpr254, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 254,"amdgpu_cdna2"); -DEF_REGISTER(vgpr_vec2_254, Arch_amdgpu_cdna2 | VGPR_VEC2 | BITS_64 | 254,"amdgpu_cdna2"); -DEF_REGISTER(vgpr255, Arch_amdgpu_cdna2 | VGPR | BITS_32 | 255,"amdgpu_cdna2"); -#endif //DYNINST_AMDGPU_CDNA2_SYS_REGS_H diff --git a/common/h/entryIDs.h b/common/h/entryIDs.h index f812f84045..da6d489c55 100644 --- a/common/h/entryIDs.h +++ b/common/h/entryIDs.h @@ -3009,7 +3009,7 @@ power_op_dxex, amdgpu_op_sop1_nop, #include "amdgpu_op_table.h" #include "amdgpu_cdna_op_table.h" -#include "amdgpu_cdna2_op_table.h" +#include "AMDGPU/cdna2/amdgpu_cdna2_op_table.h" cuda_op_general, cuda_op_call, intel_gpu_op_general, From b5facb8f2a4f29d6fdedbcc11553c0844d33710c Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 24 Feb 2022 16:50:38 -0600 Subject: [PATCH 078/505] Fix compiler warnings in amdgpu cdna2 code (#1198) * Fix 'unused-variable' warnings from gcc * Fix 'unused-parameter' warnings from gcc --- common/src/dyn_regs.C | 10 +--------- .../src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C | 2 +- instructionAPI/src/AMDGPU/cdna2/decodeOperands.C | 8 ++++---- instructionAPI/src/Register.C | 3 +-- 4 files changed, 7 insertions(+), 16 deletions(-) diff --git a/common/src/dyn_regs.C b/common/src/dyn_regs.C index 9ecddaa534..7cfd5aa0d4 100644 --- a/common/src/dyn_regs.C +++ b/common/src/dyn_regs.C @@ -218,15 +218,7 @@ std::string MachRegister::name() const { } return ret; }else if(getArchitecture() == Arch_amdgpu_cdna2){ - signed int category = reg & 0x00ff0000; - signed int base_val = reg & 0x000000ff; - switch(category){ - default: - ret = iter->second; - break; - } - return ret; - + return iter->second; }else{ return iter->second; } diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C index 46e999577e..ede1f86a04 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -91,7 +91,7 @@ namespace Dyninst { // decoding opcodes // **************** - MachRegister InstructionDecoder_amdgpu_cdna2::makeAmdgpuRegID(MachRegister base, unsigned int encoding , unsigned int len) { + MachRegister InstructionDecoder_amdgpu_cdna2::makeAmdgpuRegID(MachRegister base, unsigned int encoding , unsigned int) { MachRegister realBase = base; /*if (base == amdgpu_cdna2::s0){ switch(len){ diff --git a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C index d170f06d0c..a27ced6083 100644 --- a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C +++ b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C @@ -318,7 +318,7 @@ case 2 : return makeRegisterExpression(amdgpu_cdna2::p0,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PC(uint64_t input,uint32_t){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::pc_all); default: return makeRegisterExpression(amdgpu_cdna2::invalid); @@ -4785,7 +4785,7 @@ case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_0_63_INLINES(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_0_63_INLINES(uint64_t input,uint32_t){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -4854,7 +4854,7 @@ case 191 : return Immediate::makeImmediate(Result(u32, 63)); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_INLINES(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_INLINES(uint64_t input,uint32_t){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -5587,7 +5587,7 @@ case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC(uint64_t input,uint32_t){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::vcc); default: return makeRegisterExpression(amdgpu_cdna2::invalid); diff --git a/instructionAPI/src/Register.C b/instructionAPI/src/Register.C index f5b612fef0..beaea43b0a 100644 --- a/instructionAPI/src/Register.C +++ b/instructionAPI/src/Register.C @@ -101,8 +101,7 @@ namespace Dyninst { std::string name = m_Reg.name(); std::string::size_type substr = name.rfind("::"); - Architecture arch = m_Reg.getArchitecture(); - if(/*arch != Arch_amdgpu_vega && arch != Arch_amdgpu_cdna2 && */substr != std::string::npos) + if(substr != std::string::npos) { name = name.substr(substr + 2, name.length()); } From 1c8a880e0b49ff4db1f44d3920903805fd77548a Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 25 Feb 2022 13:47:22 -0600 Subject: [PATCH 079/505] Tidy up classes in AMDGPU (#1204) * Remove dead code in makeAmdgpuRegID * Fix possible no-return cdna2 functions * Simplify code in bitfieldInsnAliasMap and condInsnAliasMap * Correctly initialize all members of InstructionDecoder_amdgpu_cdna2 * Inline InstructionDecoder_amdgpu_cdna2 constructor * Explicitly default ~InstructionDecoder_amdgpu_cdna2 * Fix possible non-return in decodeSGPRorM0 --- .../cdna2/InstructionDecoder-amdgpu-cdna2.C | 61 +++-------------- .../cdna2/InstructionDecoder-amdgpu-cdna2.h | 66 +++++++++---------- .../AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h | 2 +- 3 files changed, 42 insertions(+), 87 deletions(-) diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C index ede1f86a04..27b70c7eae 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -43,15 +43,13 @@ namespace Dyninst { "lt", "gt", "le", "al", "nv", } }; - const char* InstructionDecoder_amdgpu_cdna2::bitfieldInsnAliasMap(entryID e) { - switch(e) { - default: assert(!"no alias for entryID"); - }; + const char* InstructionDecoder_amdgpu_cdna2::bitfieldInsnAliasMap(entryID) { + assert(!"no alias for entryID"); + return nullptr; } - const char* InstructionDecoder_amdgpu_cdna2::condInsnAliasMap(entryID e) { - switch(e) { - default: assert(!"no alias for entryID"); - }; + const char* InstructionDecoder_amdgpu_cdna2::condInsnAliasMap(entryID) { + assert(!"no alias for entryID"); + return nullptr; } #include "amdgpu_cdna2_insn_entry.h" @@ -67,17 +65,6 @@ namespace Dyninst { #include "amdgpu_cdna2_opcode_tables.C" - InstructionDecoder_amdgpu_cdna2::InstructionDecoder_amdgpu_cdna2(Architecture a) - : InstructionDecoderImpl(a), - insn_size(0), immLen(0) , num_elements(1) , isSMEM(false), isLoad(false), isStore(false),isBuffer(false), - isScratch(false) , isBranch(false), isConditional(false) ,isCall(false), isModifyPC(false) - { - } - - InstructionDecoder_amdgpu_cdna2::~InstructionDecoder_amdgpu_cdna2() { - } - - using namespace std; void InstructionDecoder_amdgpu_cdna2::NOTHING() { } @@ -92,40 +79,7 @@ namespace Dyninst { // **************** MachRegister InstructionDecoder_amdgpu_cdna2::makeAmdgpuRegID(MachRegister base, unsigned int encoding , unsigned int) { - MachRegister realBase = base; - /*if (base == amdgpu_cdna2::s0){ - switch(len){ - case 2: - realBase = amdgpu_cdna2::sgpr_vec2_0; - break; - case 4: - realBase = amdgpu_cdna2::sgpr_vec4_0; - break; - case 8: - realBase = amdgpu_cdna2::sgpr_vec8_0; - break; - case 16: - realBase = amdgpu_cdna2::sgpr_vec16_0; - break; - } - }else if (base == amdgpu_cdna2::v0){ - switch(len){ - case 2: - realBase = amdgpu_cdna2::vgpr_vec2_0; - break; - case 4: - realBase = amdgpu_cdna2::vgpr_vec4_0; - break; - case 8: - realBase = amdgpu_cdna2::vgpr_vec8_0; - break; - case 16: - realBase = amdgpu_cdna2::vgpr_vec16_0; - break; - } - - }*/ - return MachRegister(realBase.val() + encoding); + return MachRegister(base.val() + encoding); } @@ -167,6 +121,7 @@ namespace Dyninst { return makeRegisterExpression(amdgpu_cdna2::m0); cerr << " unknown offset in sgpr or m0 " << offset << endl; assert(0 && "shouldn't reach here"); + return {}; } diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h index 7acd5e0a2b..d35482ffad 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h @@ -50,9 +50,9 @@ namespace Dyninst { enum DecodeFamily {sopp}; public: - InstructionDecoder_amdgpu_cdna2(Architecture a); + InstructionDecoder_amdgpu_cdna2(Architecture a) : InstructionDecoderImpl(a) {} - virtual ~InstructionDecoder_amdgpu_cdna2(); + virtual ~InstructionDecoder_amdgpu_cdna2() = default; virtual void decodeOpcode(InstructionDecoder::buffer &b); @@ -78,12 +78,12 @@ namespace Dyninst { private: virtual Result_Type makeSizeType(unsigned int opType); - bool is64Bit; + bool is64Bit{}; - unsigned int insn_size; // size of the instruction that we are currently working on - unsigned int insn; // the first 32 bit - unsigned int insn_high; // the second 32 bit - unsigned long long int insn_long; // the combined 64 bit: insn_high << 32 | insn + unsigned int insn_size{}; // size of the instruction that we are currently working on + unsigned int insn{}; // the first 32 bit + unsigned int insn_high{}; // the second 32 bit + unsigned long long int insn_long{}; // the combined 64 bit: insn_high << 32 | insn // the main process of decoding an instruciton, won't advance buffer void mainDecode(); @@ -154,23 +154,23 @@ namespace Dyninst { } - bool hasHw; - int hwField; + bool hasHw{}; + int hwField{}; void processHwFieldInsn(int, int); - bool hasShift; - int shiftField; + bool hasShift{}; + int shiftField{}; void makeBranchTarget(bool, bool, int, int); Expression::Ptr makeFallThroughExpr(); - int _szField, size; - int _typeField; - int cmode; - int op; - int simdAlphabetImm; + int _szField{}, size{}; + int _typeField{}; + int cmode{}; + int op{}; + int simdAlphabetImm{}; void processAlphabetImm(); @@ -200,33 +200,33 @@ namespace Dyninst { Expression::Ptr decodeSGPRorM0(unsigned int offset); - bool useImm; - uint32_t immLen; - uint32_t immLiteral; - uint32_t imm_at_32; - uint32_t imm_at_64; - uint32_t imm_at_96; + bool useImm{}; + uint32_t immLen{}; + uint32_t immLiteral{}; + uint32_t imm_at_32{}; + uint32_t imm_at_64{}; + uint32_t imm_at_96{}; - bool setSCC; + bool setSCC{}; #define IS_LD_ST() (isLoad || isStore ) - unsigned int num_elements ; // the number of elements that will be load or store by each instruction - bool isSMEM; // this is set when using smem instruction - bool isLoad; // this is set when a smem instruction is load, will set number of elements that are loaded at the same time - bool isStore; // similar to isLoad, but for store instructions - bool isBuffer; // - bool isScratch; + unsigned int num_elements{1}; // the number of elements that will be load or store by each instruction + bool isSMEM{}; // this is set when using smem instruction + bool isLoad{}; // this is set when a smem instruction is load, will set number of elements that are loaded at the same time + bool isStore{}; // similar to isLoad, but for store instructions + bool isBuffer{}; // + bool isScratch{}; - bool isBranch; // this is set for all branch instructions, - bool isConditional; // this is set for all conditional branch instruction, will set branchCond - bool isCall; // this is a call function + bool isBranch{}; // this is set for all branch instructions, + bool isConditional{}; // this is set for all conditional branch instruction, will set branchCond + bool isCall{}; // this is a call function // this is set for instructions that directly modify pc // namely s_setpc and s_swappc - bool isModifyPC; + bool isModifyPC{}; // reset the decoder internal state for decoding the next instruction void reset(); diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h index aad5a985a4..44327b6834 100644 --- a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.h @@ -44,7 +44,7 @@ enum InstructionFamily{ ENC_VOP3B = 20, ENC_VOP3P_MFMA = 21, }; -InstructionFamily instr_family; +InstructionFamily instr_family{}; typedef void (InstructionDecoder_amdgpu_cdna2::*func_ptr)(void); func_ptr decode_lookup_table [22] = { (&InstructionDecoder_amdgpu_cdna2::decodeENC_SOP1), From 4655b907f0dee6ad1062543ade0489e157ccdc58 Mon Sep 17 00:00:00 2001 From: bbiiggppiigg Date: Fri, 25 Feb 2022 22:39:49 +0000 Subject: [PATCH 080/505] Code clean up for AMDGPU (#1205) * Update the code layout for vega headers * Remove unused cda headers * remove duplicate cdna2 headers in instructionAPI --- .../vega/amdgpu_vega_op_table.h} | 0 .../{ => AMDGPU/vega}/amdgpu_vega_sys_regs.h | 0 common/h/amdgpu_cdna_op_table.h | 1152 ------------ common/h/amdgpu_cdna_sys_regs.h | 1563 ----------------- common/h/dyn_regs.h | 2 +- common/h/entryIDs.h | 3 +- .../src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h | 1135 ------------ .../src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h | 617 ------- 8 files changed, 2 insertions(+), 4470 deletions(-) rename common/h/{amdgpu_op_table.h => AMDGPU/vega/amdgpu_vega_op_table.h} (100%) rename common/h/{ => AMDGPU/vega}/amdgpu_vega_sys_regs.h (100%) delete mode 100644 common/h/amdgpu_cdna_op_table.h delete mode 100644 common/h/amdgpu_cdna_sys_regs.h delete mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h delete mode 100644 instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h diff --git a/common/h/amdgpu_op_table.h b/common/h/AMDGPU/vega/amdgpu_vega_op_table.h similarity index 100% rename from common/h/amdgpu_op_table.h rename to common/h/AMDGPU/vega/amdgpu_vega_op_table.h diff --git a/common/h/amdgpu_vega_sys_regs.h b/common/h/AMDGPU/vega/amdgpu_vega_sys_regs.h similarity index 100% rename from common/h/amdgpu_vega_sys_regs.h rename to common/h/AMDGPU/vega/amdgpu_vega_sys_regs.h diff --git a/common/h/amdgpu_cdna_op_table.h b/common/h/amdgpu_cdna_op_table.h deleted file mode 100644 index e27bcc8ff2..0000000000 --- a/common/h/amdgpu_cdna_op_table.h +++ /dev/null @@ -1,1152 +0,0 @@ -amdgpu_cdna_op_BUFFER_ATOMIC_ADD, -amdgpu_cdna_op_BUFFER_ATOMIC_ADD_F32, -amdgpu_cdna_op_BUFFER_ATOMIC_ADD_F64, -amdgpu_cdna_op_BUFFER_ATOMIC_ADD_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_AND, -amdgpu_cdna_op_BUFFER_ATOMIC_AND_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_CMPSWAP, -amdgpu_cdna_op_BUFFER_ATOMIC_CMPSWAP_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_DEC, -amdgpu_cdna_op_BUFFER_ATOMIC_DEC_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_INC, -amdgpu_cdna_op_BUFFER_ATOMIC_INC_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_MAX_F64, -amdgpu_cdna_op_BUFFER_ATOMIC_MIN_F64, -amdgpu_cdna_op_BUFFER_ATOMIC_OR, -amdgpu_cdna_op_BUFFER_ATOMIC_OR_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_PK_ADD_F16, -amdgpu_cdna_op_BUFFER_ATOMIC_SMAX, -amdgpu_cdna_op_BUFFER_ATOMIC_SMAX_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_SMIN, -amdgpu_cdna_op_BUFFER_ATOMIC_SMIN_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_SUB, -amdgpu_cdna_op_BUFFER_ATOMIC_SUB_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_SWAP, -amdgpu_cdna_op_BUFFER_ATOMIC_SWAP_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_UMAX, -amdgpu_cdna_op_BUFFER_ATOMIC_UMAX_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_UMIN, -amdgpu_cdna_op_BUFFER_ATOMIC_UMIN_X2, -amdgpu_cdna_op_BUFFER_ATOMIC_XOR, -amdgpu_cdna_op_BUFFER_ATOMIC_XOR_X2, -amdgpu_cdna_op_BUFFER_INV, -amdgpu_cdna_op_BUFFER_LOAD_DWORD, -amdgpu_cdna_op_BUFFER_LOAD_DWORDX2, -amdgpu_cdna_op_BUFFER_LOAD_DWORDX3, -amdgpu_cdna_op_BUFFER_LOAD_DWORDX4, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_HI_X, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_X, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_XY, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_XYZ, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_D16_XYZW, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_X, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_XY, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_XYZ, -amdgpu_cdna_op_BUFFER_LOAD_FORMAT_XYZW, -amdgpu_cdna_op_BUFFER_LOAD_SBYTE, -amdgpu_cdna_op_BUFFER_LOAD_SBYTE_D16, -amdgpu_cdna_op_BUFFER_LOAD_SBYTE_D16_HI, -amdgpu_cdna_op_BUFFER_LOAD_SHORT_D16, -amdgpu_cdna_op_BUFFER_LOAD_SHORT_D16_HI, -amdgpu_cdna_op_BUFFER_LOAD_SSHORT, -amdgpu_cdna_op_BUFFER_LOAD_UBYTE, -amdgpu_cdna_op_BUFFER_LOAD_UBYTE_D16, -amdgpu_cdna_op_BUFFER_LOAD_UBYTE_D16_HI, -amdgpu_cdna_op_BUFFER_LOAD_USHORT, -amdgpu_cdna_op_BUFFER_STORE_BYTE, -amdgpu_cdna_op_BUFFER_STORE_BYTE_D16_HI, -amdgpu_cdna_op_BUFFER_STORE_DWORD, -amdgpu_cdna_op_BUFFER_STORE_DWORDX2, -amdgpu_cdna_op_BUFFER_STORE_DWORDX3, -amdgpu_cdna_op_BUFFER_STORE_DWORDX4, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_HI_X, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_X, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_XY, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_XYZ, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_D16_XYZW, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_X, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_XY, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_XYZ, -amdgpu_cdna_op_BUFFER_STORE_FORMAT_XYZW, -amdgpu_cdna_op_BUFFER_STORE_SHORT, -amdgpu_cdna_op_BUFFER_STORE_SHORT_D16_HI, -amdgpu_cdna_op_BUFFER_WBL2, -amdgpu_cdna_op_DS_ADD_F32, -amdgpu_cdna_op_DS_ADD_F64, -amdgpu_cdna_op_DS_ADD_RTN_F32, -amdgpu_cdna_op_DS_ADD_RTN_F64, -amdgpu_cdna_op_DS_ADD_RTN_U32, -amdgpu_cdna_op_DS_ADD_RTN_U64, -amdgpu_cdna_op_DS_ADD_U32, -amdgpu_cdna_op_DS_ADD_U64, -amdgpu_cdna_op_DS_AND_B32, -amdgpu_cdna_op_DS_AND_B64, -amdgpu_cdna_op_DS_AND_RTN_B32, -amdgpu_cdna_op_DS_AND_RTN_B64, -amdgpu_cdna_op_DS_APPEND, -amdgpu_cdna_op_DS_BPERMUTE_B32, -amdgpu_cdna_op_DS_CMPST_B32, -amdgpu_cdna_op_DS_CMPST_B64, -amdgpu_cdna_op_DS_CMPST_F32, -amdgpu_cdna_op_DS_CMPST_F64, -amdgpu_cdna_op_DS_CMPST_RTN_B32, -amdgpu_cdna_op_DS_CMPST_RTN_B64, -amdgpu_cdna_op_DS_CMPST_RTN_F32, -amdgpu_cdna_op_DS_CMPST_RTN_F64, -amdgpu_cdna_op_DS_CONDXCHG32_RTN_B64, -amdgpu_cdna_op_DS_CONSUME, -amdgpu_cdna_op_DS_DEC_RTN_U32, -amdgpu_cdna_op_DS_DEC_RTN_U64, -amdgpu_cdna_op_DS_DEC_U32, -amdgpu_cdna_op_DS_DEC_U64, -amdgpu_cdna_op_DS_GWS_BARRIER, -amdgpu_cdna_op_DS_GWS_INIT, -amdgpu_cdna_op_DS_GWS_SEMA_BR, -amdgpu_cdna_op_DS_GWS_SEMA_P, -amdgpu_cdna_op_DS_GWS_SEMA_RELEASE_ALL, -amdgpu_cdna_op_DS_GWS_SEMA_V, -amdgpu_cdna_op_DS_INC_RTN_U32, -amdgpu_cdna_op_DS_INC_RTN_U64, -amdgpu_cdna_op_DS_INC_U32, -amdgpu_cdna_op_DS_INC_U64, -amdgpu_cdna_op_DS_MAX_F32, -amdgpu_cdna_op_DS_MAX_F64, -amdgpu_cdna_op_DS_MAX_I32, -amdgpu_cdna_op_DS_MAX_I64, -amdgpu_cdna_op_DS_MAX_RTN_F32, -amdgpu_cdna_op_DS_MAX_RTN_F64, -amdgpu_cdna_op_DS_MAX_RTN_I32, -amdgpu_cdna_op_DS_MAX_RTN_I64, -amdgpu_cdna_op_DS_MAX_RTN_U32, -amdgpu_cdna_op_DS_MAX_RTN_U64, -amdgpu_cdna_op_DS_MAX_U32, -amdgpu_cdna_op_DS_MAX_U64, -amdgpu_cdna_op_DS_MIN_F32, -amdgpu_cdna_op_DS_MIN_F64, -amdgpu_cdna_op_DS_MIN_I32, -amdgpu_cdna_op_DS_MIN_I64, -amdgpu_cdna_op_DS_MIN_RTN_F32, -amdgpu_cdna_op_DS_MIN_RTN_F64, -amdgpu_cdna_op_DS_MIN_RTN_I32, -amdgpu_cdna_op_DS_MIN_RTN_I64, -amdgpu_cdna_op_DS_MIN_RTN_U32, -amdgpu_cdna_op_DS_MIN_RTN_U64, -amdgpu_cdna_op_DS_MIN_U32, -amdgpu_cdna_op_DS_MIN_U64, -amdgpu_cdna_op_DS_MSKOR_B32, -amdgpu_cdna_op_DS_MSKOR_B64, -amdgpu_cdna_op_DS_MSKOR_RTN_B32, -amdgpu_cdna_op_DS_MSKOR_RTN_B64, -amdgpu_cdna_op_DS_NOP, -amdgpu_cdna_op_DS_OR_B32, -amdgpu_cdna_op_DS_OR_B64, -amdgpu_cdna_op_DS_OR_RTN_B32, -amdgpu_cdna_op_DS_OR_RTN_B64, -amdgpu_cdna_op_DS_PERMUTE_B32, -amdgpu_cdna_op_DS_PK_ADD_BF16, -amdgpu_cdna_op_DS_PK_ADD_F16, -amdgpu_cdna_op_DS_PK_ADD_RTN_BF16, -amdgpu_cdna_op_DS_PK_ADD_RTN_F16, -amdgpu_cdna_op_DS_READ2ST64_B32, -amdgpu_cdna_op_DS_READ2ST64_B64, -amdgpu_cdna_op_DS_READ2_B32, -amdgpu_cdna_op_DS_READ2_B64, -amdgpu_cdna_op_DS_READ_ADDTID_B32, -amdgpu_cdna_op_DS_READ_B128, -amdgpu_cdna_op_DS_READ_B32, -amdgpu_cdna_op_DS_READ_B64, -amdgpu_cdna_op_DS_READ_B96, -amdgpu_cdna_op_DS_READ_I16, -amdgpu_cdna_op_DS_READ_I8, -amdgpu_cdna_op_DS_READ_I8_D16, -amdgpu_cdna_op_DS_READ_I8_D16_HI, -amdgpu_cdna_op_DS_READ_U16, -amdgpu_cdna_op_DS_READ_U16_D16, -amdgpu_cdna_op_DS_READ_U16_D16_HI, -amdgpu_cdna_op_DS_READ_U8, -amdgpu_cdna_op_DS_READ_U8_D16, -amdgpu_cdna_op_DS_READ_U8_D16_HI, -amdgpu_cdna_op_DS_RSUB_RTN_U32, -amdgpu_cdna_op_DS_RSUB_RTN_U64, -amdgpu_cdna_op_DS_RSUB_U32, -amdgpu_cdna_op_DS_RSUB_U64, -amdgpu_cdna_op_DS_SUB_RTN_U32, -amdgpu_cdna_op_DS_SUB_RTN_U64, -amdgpu_cdna_op_DS_SUB_U32, -amdgpu_cdna_op_DS_SUB_U64, -amdgpu_cdna_op_DS_SWIZZLE_B32, -amdgpu_cdna_op_DS_WRAP_RTN_B32, -amdgpu_cdna_op_DS_WRITE2ST64_B32, -amdgpu_cdna_op_DS_WRITE2ST64_B64, -amdgpu_cdna_op_DS_WRITE2_B32, -amdgpu_cdna_op_DS_WRITE2_B64, -amdgpu_cdna_op_DS_WRITE_ADDTID_B32, -amdgpu_cdna_op_DS_WRITE_B128, -amdgpu_cdna_op_DS_WRITE_B16, -amdgpu_cdna_op_DS_WRITE_B16_D16_HI, -amdgpu_cdna_op_DS_WRITE_B32, -amdgpu_cdna_op_DS_WRITE_B64, -amdgpu_cdna_op_DS_WRITE_B8, -amdgpu_cdna_op_DS_WRITE_B8_D16_HI, -amdgpu_cdna_op_DS_WRITE_B96, -amdgpu_cdna_op_DS_WRXCHG2ST64_RTN_B32, -amdgpu_cdna_op_DS_WRXCHG2ST64_RTN_B64, -amdgpu_cdna_op_DS_WRXCHG2_RTN_B32, -amdgpu_cdna_op_DS_WRXCHG2_RTN_B64, -amdgpu_cdna_op_DS_WRXCHG_RTN_B32, -amdgpu_cdna_op_DS_WRXCHG_RTN_B64, -amdgpu_cdna_op_DS_XOR_B32, -amdgpu_cdna_op_DS_XOR_B64, -amdgpu_cdna_op_DS_XOR_RTN_B32, -amdgpu_cdna_op_DS_XOR_RTN_B64, -amdgpu_cdna_op_FLAT_ATOMIC_ADD, -amdgpu_cdna_op_FLAT_ATOMIC_ADD_F32, -amdgpu_cdna_op_FLAT_ATOMIC_ADD_F64, -amdgpu_cdna_op_FLAT_ATOMIC_ADD_X2, -amdgpu_cdna_op_FLAT_ATOMIC_AND, -amdgpu_cdna_op_FLAT_ATOMIC_AND_X2, -amdgpu_cdna_op_FLAT_ATOMIC_CMPSWAP, -amdgpu_cdna_op_FLAT_ATOMIC_CMPSWAP_X2, -amdgpu_cdna_op_FLAT_ATOMIC_DEC, -amdgpu_cdna_op_FLAT_ATOMIC_DEC_X2, -amdgpu_cdna_op_FLAT_ATOMIC_INC, -amdgpu_cdna_op_FLAT_ATOMIC_INC_X2, -amdgpu_cdna_op_FLAT_ATOMIC_MAX_F64, -amdgpu_cdna_op_FLAT_ATOMIC_MIN_F64, -amdgpu_cdna_op_FLAT_ATOMIC_OR, -amdgpu_cdna_op_FLAT_ATOMIC_OR_X2, -amdgpu_cdna_op_FLAT_ATOMIC_PK_ADD_BF16, -amdgpu_cdna_op_FLAT_ATOMIC_PK_ADD_F16, -amdgpu_cdna_op_FLAT_ATOMIC_SMAX, -amdgpu_cdna_op_FLAT_ATOMIC_SMAX_X2, -amdgpu_cdna_op_FLAT_ATOMIC_SMIN, -amdgpu_cdna_op_FLAT_ATOMIC_SMIN_X2, -amdgpu_cdna_op_FLAT_ATOMIC_SUB, -amdgpu_cdna_op_FLAT_ATOMIC_SUB_X2, -amdgpu_cdna_op_FLAT_ATOMIC_SWAP, -amdgpu_cdna_op_FLAT_ATOMIC_SWAP_X2, -amdgpu_cdna_op_FLAT_ATOMIC_UMAX, -amdgpu_cdna_op_FLAT_ATOMIC_UMAX_X2, -amdgpu_cdna_op_FLAT_ATOMIC_UMIN, -amdgpu_cdna_op_FLAT_ATOMIC_UMIN_X2, -amdgpu_cdna_op_FLAT_ATOMIC_XOR, -amdgpu_cdna_op_FLAT_ATOMIC_XOR_X2, -amdgpu_cdna_op_FLAT_LOAD_DWORD, -amdgpu_cdna_op_FLAT_LOAD_DWORDX2, -amdgpu_cdna_op_FLAT_LOAD_DWORDX3, -amdgpu_cdna_op_FLAT_LOAD_DWORDX4, -amdgpu_cdna_op_FLAT_LOAD_SBYTE, -amdgpu_cdna_op_FLAT_LOAD_SBYTE_D16, -amdgpu_cdna_op_FLAT_LOAD_SBYTE_D16_HI, -amdgpu_cdna_op_FLAT_LOAD_SHORT_D16, -amdgpu_cdna_op_FLAT_LOAD_SHORT_D16_HI, -amdgpu_cdna_op_FLAT_LOAD_SSHORT, -amdgpu_cdna_op_FLAT_LOAD_UBYTE, -amdgpu_cdna_op_FLAT_LOAD_UBYTE_D16, -amdgpu_cdna_op_FLAT_LOAD_UBYTE_D16_HI, -amdgpu_cdna_op_FLAT_LOAD_USHORT, -amdgpu_cdna_op_FLAT_STORE_BYTE, -amdgpu_cdna_op_FLAT_STORE_BYTE_D16_HI, -amdgpu_cdna_op_FLAT_STORE_DWORD, -amdgpu_cdna_op_FLAT_STORE_DWORDX2, -amdgpu_cdna_op_FLAT_STORE_DWORDX3, -amdgpu_cdna_op_FLAT_STORE_DWORDX4, -amdgpu_cdna_op_FLAT_STORE_SHORT, -amdgpu_cdna_op_FLAT_STORE_SHORT_D16_HI, -amdgpu_cdna_op_GLOBAL_ATOMIC_ADD, -amdgpu_cdna_op_GLOBAL_ATOMIC_ADD_F32, -amdgpu_cdna_op_GLOBAL_ATOMIC_ADD_F64, -amdgpu_cdna_op_GLOBAL_ATOMIC_ADD_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_AND, -amdgpu_cdna_op_GLOBAL_ATOMIC_AND_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_CMPSWAP, -amdgpu_cdna_op_GLOBAL_ATOMIC_CMPSWAP_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_DEC, -amdgpu_cdna_op_GLOBAL_ATOMIC_DEC_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_INC, -amdgpu_cdna_op_GLOBAL_ATOMIC_INC_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_MAX_F64, -amdgpu_cdna_op_GLOBAL_ATOMIC_MIN_F64, -amdgpu_cdna_op_GLOBAL_ATOMIC_OR, -amdgpu_cdna_op_GLOBAL_ATOMIC_OR_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_PK_ADD_BF16, -amdgpu_cdna_op_GLOBAL_ATOMIC_PK_ADD_F16, -amdgpu_cdna_op_GLOBAL_ATOMIC_SMAX, -amdgpu_cdna_op_GLOBAL_ATOMIC_SMAX_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_SMIN, -amdgpu_cdna_op_GLOBAL_ATOMIC_SMIN_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_SUB, -amdgpu_cdna_op_GLOBAL_ATOMIC_SUB_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_SWAP, -amdgpu_cdna_op_GLOBAL_ATOMIC_SWAP_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_UMAX, -amdgpu_cdna_op_GLOBAL_ATOMIC_UMAX_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_UMIN, -amdgpu_cdna_op_GLOBAL_ATOMIC_UMIN_X2, -amdgpu_cdna_op_GLOBAL_ATOMIC_XOR, -amdgpu_cdna_op_GLOBAL_ATOMIC_XOR_X2, -amdgpu_cdna_op_GLOBAL_LOAD_DWORD, -amdgpu_cdna_op_GLOBAL_LOAD_DWORDX2, -amdgpu_cdna_op_GLOBAL_LOAD_DWORDX3, -amdgpu_cdna_op_GLOBAL_LOAD_DWORDX4, -amdgpu_cdna_op_GLOBAL_LOAD_LDS_DWORD, -amdgpu_cdna_op_GLOBAL_LOAD_LDS_SBYTE, -amdgpu_cdna_op_GLOBAL_LOAD_LDS_SSHORT, -amdgpu_cdna_op_GLOBAL_LOAD_LDS_UBYTE, -amdgpu_cdna_op_GLOBAL_LOAD_LDS_USHORT, -amdgpu_cdna_op_GLOBAL_LOAD_SBYTE, -amdgpu_cdna_op_GLOBAL_LOAD_SBYTE_D16, -amdgpu_cdna_op_GLOBAL_LOAD_SBYTE_D16_HI, -amdgpu_cdna_op_GLOBAL_LOAD_SHORT_D16, -amdgpu_cdna_op_GLOBAL_LOAD_SHORT_D16_HI, -amdgpu_cdna_op_GLOBAL_LOAD_SSHORT, -amdgpu_cdna_op_GLOBAL_LOAD_UBYTE, -amdgpu_cdna_op_GLOBAL_LOAD_UBYTE_D16, -amdgpu_cdna_op_GLOBAL_LOAD_UBYTE_D16_HI, -amdgpu_cdna_op_GLOBAL_LOAD_USHORT, -amdgpu_cdna_op_GLOBAL_STORE_BYTE, -amdgpu_cdna_op_GLOBAL_STORE_BYTE_D16_HI, -amdgpu_cdna_op_GLOBAL_STORE_DWORD, -amdgpu_cdna_op_GLOBAL_STORE_DWORDX2, -amdgpu_cdna_op_GLOBAL_STORE_DWORDX3, -amdgpu_cdna_op_GLOBAL_STORE_DWORDX4, -amdgpu_cdna_op_GLOBAL_STORE_SHORT, -amdgpu_cdna_op_GLOBAL_STORE_SHORT_D16_HI, -amdgpu_cdna_op_SCRATCH_LOAD_DWORD, -amdgpu_cdna_op_SCRATCH_LOAD_DWORDX2, -amdgpu_cdna_op_SCRATCH_LOAD_DWORDX3, -amdgpu_cdna_op_SCRATCH_LOAD_DWORDX4, -amdgpu_cdna_op_SCRATCH_LOAD_LDS_DWORD, -amdgpu_cdna_op_SCRATCH_LOAD_LDS_SBYTE, -amdgpu_cdna_op_SCRATCH_LOAD_LDS_SSHORT, -amdgpu_cdna_op_SCRATCH_LOAD_LDS_UBYTE, -amdgpu_cdna_op_SCRATCH_LOAD_LDS_USHORT, -amdgpu_cdna_op_SCRATCH_LOAD_SBYTE, -amdgpu_cdna_op_SCRATCH_LOAD_SBYTE_D16, -amdgpu_cdna_op_SCRATCH_LOAD_SBYTE_D16_HI, -amdgpu_cdna_op_SCRATCH_LOAD_SHORT_D16, -amdgpu_cdna_op_SCRATCH_LOAD_SHORT_D16_HI, -amdgpu_cdna_op_SCRATCH_LOAD_SSHORT, -amdgpu_cdna_op_SCRATCH_LOAD_UBYTE, -amdgpu_cdna_op_SCRATCH_LOAD_UBYTE_D16, -amdgpu_cdna_op_SCRATCH_LOAD_UBYTE_D16_HI, -amdgpu_cdna_op_SCRATCH_LOAD_USHORT, -amdgpu_cdna_op_SCRATCH_STORE_BYTE, -amdgpu_cdna_op_SCRATCH_STORE_BYTE_D16_HI, -amdgpu_cdna_op_SCRATCH_STORE_DWORD, -amdgpu_cdna_op_SCRATCH_STORE_DWORDX2, -amdgpu_cdna_op_SCRATCH_STORE_DWORDX3, -amdgpu_cdna_op_SCRATCH_STORE_DWORDX4, -amdgpu_cdna_op_SCRATCH_STORE_SHORT, -amdgpu_cdna_op_SCRATCH_STORE_SHORT_D16_HI, -amdgpu_cdna_op_S_ABSDIFF_I32, -amdgpu_cdna_op_S_ABS_I32, -amdgpu_cdna_op_S_ADDC_U32, -amdgpu_cdna_op_S_ADDK_I32, -amdgpu_cdna_op_S_ADD_I32, -amdgpu_cdna_op_S_ADD_U32, -amdgpu_cdna_op_S_ANDN1_SAVEEXEC_B64, -amdgpu_cdna_op_S_ANDN1_WREXEC_B64, -amdgpu_cdna_op_S_ANDN2_B32, -amdgpu_cdna_op_S_ANDN2_B64, -amdgpu_cdna_op_S_ANDN2_SAVEEXEC_B64, -amdgpu_cdna_op_S_ANDN2_WREXEC_B64, -amdgpu_cdna_op_S_AND_B32, -amdgpu_cdna_op_S_AND_B64, -amdgpu_cdna_op_S_AND_SAVEEXEC_B64, -amdgpu_cdna_op_S_ASHR_I32, -amdgpu_cdna_op_S_ASHR_I64, -amdgpu_cdna_op_S_ATC_PROBE, -amdgpu_cdna_op_S_ATC_PROBE_BUFFER, -amdgpu_cdna_op_S_ATOMIC_ADD, -amdgpu_cdna_op_S_ATOMIC_ADD_X2, -amdgpu_cdna_op_S_ATOMIC_AND, -amdgpu_cdna_op_S_ATOMIC_AND_X2, -amdgpu_cdna_op_S_ATOMIC_CMPSWAP, -amdgpu_cdna_op_S_ATOMIC_CMPSWAP_X2, -amdgpu_cdna_op_S_ATOMIC_DEC, -amdgpu_cdna_op_S_ATOMIC_DEC_X2, -amdgpu_cdna_op_S_ATOMIC_INC, -amdgpu_cdna_op_S_ATOMIC_INC_X2, -amdgpu_cdna_op_S_ATOMIC_OR, -amdgpu_cdna_op_S_ATOMIC_OR_X2, -amdgpu_cdna_op_S_ATOMIC_SMAX, -amdgpu_cdna_op_S_ATOMIC_SMAX_X2, -amdgpu_cdna_op_S_ATOMIC_SMIN, -amdgpu_cdna_op_S_ATOMIC_SMIN_X2, -amdgpu_cdna_op_S_ATOMIC_SUB, -amdgpu_cdna_op_S_ATOMIC_SUB_X2, -amdgpu_cdna_op_S_ATOMIC_SWAP, -amdgpu_cdna_op_S_ATOMIC_SWAP_X2, -amdgpu_cdna_op_S_ATOMIC_UMAX, -amdgpu_cdna_op_S_ATOMIC_UMAX_X2, -amdgpu_cdna_op_S_ATOMIC_UMIN, -amdgpu_cdna_op_S_ATOMIC_UMIN_X2, -amdgpu_cdna_op_S_ATOMIC_XOR, -amdgpu_cdna_op_S_ATOMIC_XOR_X2, -amdgpu_cdna_op_S_BARRIER, -amdgpu_cdna_op_S_BCNT0_I32_B32, -amdgpu_cdna_op_S_BCNT0_I32_B64, -amdgpu_cdna_op_S_BCNT1_I32_B32, -amdgpu_cdna_op_S_BCNT1_I32_B64, -amdgpu_cdna_op_S_BFE_I32, -amdgpu_cdna_op_S_BFE_I64, -amdgpu_cdna_op_S_BFE_U32, -amdgpu_cdna_op_S_BFE_U64, -amdgpu_cdna_op_S_BFM_B32, -amdgpu_cdna_op_S_BFM_B64, -amdgpu_cdna_op_S_BITCMP0_B32, -amdgpu_cdna_op_S_BITCMP0_B64, -amdgpu_cdna_op_S_BITCMP1_B32, -amdgpu_cdna_op_S_BITCMP1_B64, -amdgpu_cdna_op_S_BITREPLICATE_B64_B32, -amdgpu_cdna_op_S_BITSET0_B32, -amdgpu_cdna_op_S_BITSET0_B64, -amdgpu_cdna_op_S_BITSET1_B32, -amdgpu_cdna_op_S_BITSET1_B64, -amdgpu_cdna_op_S_BRANCH, -amdgpu_cdna_op_S_BREV_B32, -amdgpu_cdna_op_S_BREV_B64, -amdgpu_cdna_op_S_BUFFER_ATOMIC_ADD, -amdgpu_cdna_op_S_BUFFER_ATOMIC_ADD_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_AND, -amdgpu_cdna_op_S_BUFFER_ATOMIC_AND_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_CMPSWAP, -amdgpu_cdna_op_S_BUFFER_ATOMIC_CMPSWAP_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_DEC, -amdgpu_cdna_op_S_BUFFER_ATOMIC_DEC_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_INC, -amdgpu_cdna_op_S_BUFFER_ATOMIC_INC_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_OR, -amdgpu_cdna_op_S_BUFFER_ATOMIC_OR_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SMAX, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SMAX_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SMIN, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SMIN_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SUB, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SUB_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SWAP, -amdgpu_cdna_op_S_BUFFER_ATOMIC_SWAP_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_UMAX, -amdgpu_cdna_op_S_BUFFER_ATOMIC_UMAX_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_UMIN, -amdgpu_cdna_op_S_BUFFER_ATOMIC_UMIN_X2, -amdgpu_cdna_op_S_BUFFER_ATOMIC_XOR, -amdgpu_cdna_op_S_BUFFER_ATOMIC_XOR_X2, -amdgpu_cdna_op_S_BUFFER_LOAD_DWORD, -amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX16, -amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX2, -amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX4, -amdgpu_cdna_op_S_BUFFER_LOAD_DWORDX8, -amdgpu_cdna_op_S_BUFFER_STORE_DWORD, -amdgpu_cdna_op_S_BUFFER_STORE_DWORDX2, -amdgpu_cdna_op_S_BUFFER_STORE_DWORDX4, -amdgpu_cdna_op_S_CALL_B64, -amdgpu_cdna_op_S_CBRANCH_CDBGSYS, -amdgpu_cdna_op_S_CBRANCH_CDBGSYS_AND_USER, -amdgpu_cdna_op_S_CBRANCH_CDBGSYS_OR_USER, -amdgpu_cdna_op_S_CBRANCH_CDBGUSER, -amdgpu_cdna_op_S_CBRANCH_EXECNZ, -amdgpu_cdna_op_S_CBRANCH_EXECZ, -amdgpu_cdna_op_S_CBRANCH_G_FORK, -amdgpu_cdna_op_S_CBRANCH_I_FORK, -amdgpu_cdna_op_S_CBRANCH_JOIN, -amdgpu_cdna_op_S_CBRANCH_SCC0, -amdgpu_cdna_op_S_CBRANCH_SCC1, -amdgpu_cdna_op_S_CBRANCH_VCCNZ, -amdgpu_cdna_op_S_CBRANCH_VCCZ, -amdgpu_cdna_op_S_CMOVK_I32, -amdgpu_cdna_op_S_CMOV_B32, -amdgpu_cdna_op_S_CMOV_B64, -amdgpu_cdna_op_S_CMPK_EQ_I32, -amdgpu_cdna_op_S_CMPK_EQ_U32, -amdgpu_cdna_op_S_CMPK_GE_I32, -amdgpu_cdna_op_S_CMPK_GE_U32, -amdgpu_cdna_op_S_CMPK_GT_I32, -amdgpu_cdna_op_S_CMPK_GT_U32, -amdgpu_cdna_op_S_CMPK_LE_I32, -amdgpu_cdna_op_S_CMPK_LE_U32, -amdgpu_cdna_op_S_CMPK_LG_I32, -amdgpu_cdna_op_S_CMPK_LG_U32, -amdgpu_cdna_op_S_CMPK_LT_I32, -amdgpu_cdna_op_S_CMPK_LT_U32, -amdgpu_cdna_op_S_CMP_EQ_I32, -amdgpu_cdna_op_S_CMP_EQ_U32, -amdgpu_cdna_op_S_CMP_EQ_U64, -amdgpu_cdna_op_S_CMP_GE_I32, -amdgpu_cdna_op_S_CMP_GE_U32, -amdgpu_cdna_op_S_CMP_GT_I32, -amdgpu_cdna_op_S_CMP_GT_U32, -amdgpu_cdna_op_S_CMP_LE_I32, -amdgpu_cdna_op_S_CMP_LE_U32, -amdgpu_cdna_op_S_CMP_LG_I32, -amdgpu_cdna_op_S_CMP_LG_U32, -amdgpu_cdna_op_S_CMP_LG_U64, -amdgpu_cdna_op_S_CMP_LT_I32, -amdgpu_cdna_op_S_CMP_LT_U32, -amdgpu_cdna_op_S_CSELECT_B32, -amdgpu_cdna_op_S_CSELECT_B64, -amdgpu_cdna_op_S_DCACHE_DISCARD, -amdgpu_cdna_op_S_DCACHE_DISCARD_X2, -amdgpu_cdna_op_S_DCACHE_INV, -amdgpu_cdna_op_S_DCACHE_INV_VOL, -amdgpu_cdna_op_S_DCACHE_WB, -amdgpu_cdna_op_S_DCACHE_WB_VOL, -amdgpu_cdna_op_S_DECPERFLEVEL, -amdgpu_cdna_op_S_ENDPGM, -amdgpu_cdna_op_S_ENDPGM_ORDERED_PS_DONE, -amdgpu_cdna_op_S_ENDPGM_SAVED, -amdgpu_cdna_op_S_FF0_I32_B32, -amdgpu_cdna_op_S_FF0_I32_B64, -amdgpu_cdna_op_S_FF1_I32_B32, -amdgpu_cdna_op_S_FF1_I32_B64, -amdgpu_cdna_op_S_FLBIT_I32, -amdgpu_cdna_op_S_FLBIT_I32_B32, -amdgpu_cdna_op_S_FLBIT_I32_B64, -amdgpu_cdna_op_S_FLBIT_I32_I64, -amdgpu_cdna_op_S_GETPC_B64, -amdgpu_cdna_op_S_GETREG_B32, -amdgpu_cdna_op_S_ICACHE_INV, -amdgpu_cdna_op_S_INCPERFLEVEL, -amdgpu_cdna_op_S_LOAD_DWORD, -amdgpu_cdna_op_S_LOAD_DWORDX16, -amdgpu_cdna_op_S_LOAD_DWORDX2, -amdgpu_cdna_op_S_LOAD_DWORDX4, -amdgpu_cdna_op_S_LOAD_DWORDX8, -amdgpu_cdna_op_S_LSHL1_ADD_U32, -amdgpu_cdna_op_S_LSHL2_ADD_U32, -amdgpu_cdna_op_S_LSHL3_ADD_U32, -amdgpu_cdna_op_S_LSHL4_ADD_U32, -amdgpu_cdna_op_S_LSHL_B32, -amdgpu_cdna_op_S_LSHL_B64, -amdgpu_cdna_op_S_LSHR_B32, -amdgpu_cdna_op_S_LSHR_B64, -amdgpu_cdna_op_S_MAX_I32, -amdgpu_cdna_op_S_MAX_U32, -amdgpu_cdna_op_S_MEMREALTIME, -amdgpu_cdna_op_S_MEMTIME, -amdgpu_cdna_op_S_MIN_I32, -amdgpu_cdna_op_S_MIN_U32, -amdgpu_cdna_op_S_MOVK_I32, -amdgpu_cdna_op_S_MOVRELD_B32, -amdgpu_cdna_op_S_MOVRELD_B64, -amdgpu_cdna_op_S_MOVRELS_B32, -amdgpu_cdna_op_S_MOVRELS_B64, -amdgpu_cdna_op_S_MOV_B32, -amdgpu_cdna_op_S_MOV_B64, -amdgpu_cdna_op_S_MULK_I32, -amdgpu_cdna_op_S_MUL_HI_I32, -amdgpu_cdna_op_S_MUL_HI_U32, -amdgpu_cdna_op_S_MUL_I32, -amdgpu_cdna_op_S_NAND_B32, -amdgpu_cdna_op_S_NAND_B64, -amdgpu_cdna_op_S_NAND_SAVEEXEC_B64, -amdgpu_cdna_op_S_NOP, -amdgpu_cdna_op_S_NOR_B32, -amdgpu_cdna_op_S_NOR_B64, -amdgpu_cdna_op_S_NOR_SAVEEXEC_B64, -amdgpu_cdna_op_S_NOT_B32, -amdgpu_cdna_op_S_NOT_B64, -amdgpu_cdna_op_S_ORN1_SAVEEXEC_B64, -amdgpu_cdna_op_S_ORN2_B32, -amdgpu_cdna_op_S_ORN2_B64, -amdgpu_cdna_op_S_ORN2_SAVEEXEC_B64, -amdgpu_cdna_op_S_OR_B32, -amdgpu_cdna_op_S_OR_B64, -amdgpu_cdna_op_S_OR_SAVEEXEC_B64, -amdgpu_cdna_op_S_PACK_HH_B32_B16, -amdgpu_cdna_op_S_PACK_LH_B32_B16, -amdgpu_cdna_op_S_PACK_LL_B32_B16, -amdgpu_cdna_op_S_QUADMASK_B32, -amdgpu_cdna_op_S_QUADMASK_B64, -amdgpu_cdna_op_S_RFE_B64, -amdgpu_cdna_op_S_RFE_RESTORE_B64, -amdgpu_cdna_op_S_SCRATCH_LOAD_DWORD, -amdgpu_cdna_op_S_SCRATCH_LOAD_DWORDX2, -amdgpu_cdna_op_S_SCRATCH_LOAD_DWORDX4, -amdgpu_cdna_op_S_SCRATCH_STORE_DWORD, -amdgpu_cdna_op_S_SCRATCH_STORE_DWORDX2, -amdgpu_cdna_op_S_SCRATCH_STORE_DWORDX4, -amdgpu_cdna_op_S_SENDMSG, -amdgpu_cdna_op_S_SENDMSGHALT, -amdgpu_cdna_op_S_SETHALT, -amdgpu_cdna_op_S_SETKILL, -amdgpu_cdna_op_S_SETPC_B64, -amdgpu_cdna_op_S_SETPRIO, -amdgpu_cdna_op_S_SETREG_B32, -amdgpu_cdna_op_S_SETREG_IMM32_B32, -amdgpu_cdna_op_S_SETVSKIP, -amdgpu_cdna_op_S_SET_GPR_IDX_IDX, -amdgpu_cdna_op_S_SET_GPR_IDX_MODE, -amdgpu_cdna_op_S_SET_GPR_IDX_OFF, -amdgpu_cdna_op_S_SET_GPR_IDX_ON, -amdgpu_cdna_op_S_SET_VALU_COEXEC_MODE, -amdgpu_cdna_op_S_SEXT_I32_I16, -amdgpu_cdna_op_S_SEXT_I32_I8, -amdgpu_cdna_op_S_SLEEP, -amdgpu_cdna_op_S_STORE_DWORD, -amdgpu_cdna_op_S_STORE_DWORDX2, -amdgpu_cdna_op_S_STORE_DWORDX4, -amdgpu_cdna_op_S_SUBB_U32, -amdgpu_cdna_op_S_SUB_I32, -amdgpu_cdna_op_S_SUB_U32, -amdgpu_cdna_op_S_SWAPPC_B64, -amdgpu_cdna_op_S_TRAP, -amdgpu_cdna_op_S_TTRACEDATA, -amdgpu_cdna_op_S_WAITCNT, -amdgpu_cdna_op_S_WAKEUP, -amdgpu_cdna_op_S_WQM_B32, -amdgpu_cdna_op_S_WQM_B64, -amdgpu_cdna_op_S_XNOR_B32, -amdgpu_cdna_op_S_XNOR_B64, -amdgpu_cdna_op_S_XNOR_SAVEEXEC_B64, -amdgpu_cdna_op_S_XOR_B32, -amdgpu_cdna_op_S_XOR_B64, -amdgpu_cdna_op_S_XOR_SAVEEXEC_B64, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_X, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_XY, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_XYZ, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_D16_XYZW, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_X, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_XY, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_XYZ, -amdgpu_cdna_op_TBUFFER_LOAD_FORMAT_XYZW, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_X, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_XY, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_XYZ, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_D16_XYZW, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_X, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_XY, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_XYZ, -amdgpu_cdna_op_TBUFFER_STORE_FORMAT_XYZW, -amdgpu_cdna_op_V_ACCVGPR_MOV_B32, -amdgpu_cdna_op_V_ACCVGPR_READ, -amdgpu_cdna_op_V_ACCVGPR_WRITE, -amdgpu_cdna_op_V_ADD3_U32, -amdgpu_cdna_op_V_ADDC_CO_U32, -amdgpu_cdna_op_V_ADD_CO_U32, -amdgpu_cdna_op_V_ADD_F16, -amdgpu_cdna_op_V_ADD_F32, -amdgpu_cdna_op_V_ADD_F64, -amdgpu_cdna_op_V_ADD_I16, -amdgpu_cdna_op_V_ADD_I32, -amdgpu_cdna_op_V_ADD_LSHL_U32, -amdgpu_cdna_op_V_ADD_U16, -amdgpu_cdna_op_V_ADD_U32, -amdgpu_cdna_op_V_ALIGNBIT_B32, -amdgpu_cdna_op_V_ALIGNBYTE_B32, -amdgpu_cdna_op_V_AND_B32, -amdgpu_cdna_op_V_AND_OR_B32, -amdgpu_cdna_op_V_ASHRREV_I16, -amdgpu_cdna_op_V_ASHRREV_I32, -amdgpu_cdna_op_V_ASHRREV_I64, -amdgpu_cdna_op_V_BCNT_U32_B32, -amdgpu_cdna_op_V_BFE_I32, -amdgpu_cdna_op_V_BFE_U32, -amdgpu_cdna_op_V_BFI_B32, -amdgpu_cdna_op_V_BFM_B32, -amdgpu_cdna_op_V_BFREV_B32, -amdgpu_cdna_op_V_CEIL_F16, -amdgpu_cdna_op_V_CEIL_F32, -amdgpu_cdna_op_V_CEIL_F64, -amdgpu_cdna_op_V_CLREXCP, -amdgpu_cdna_op_V_CMPX_CLASS_F16, -amdgpu_cdna_op_V_CMPX_CLASS_F32, -amdgpu_cdna_op_V_CMPX_CLASS_F64, -amdgpu_cdna_op_V_CMPX_EQ_F16, -amdgpu_cdna_op_V_CMPX_EQ_F32, -amdgpu_cdna_op_V_CMPX_EQ_F64, -amdgpu_cdna_op_V_CMPX_EQ_I16, -amdgpu_cdna_op_V_CMPX_EQ_I32, -amdgpu_cdna_op_V_CMPX_EQ_I64, -amdgpu_cdna_op_V_CMPX_EQ_U16, -amdgpu_cdna_op_V_CMPX_EQ_U32, -amdgpu_cdna_op_V_CMPX_EQ_U64, -amdgpu_cdna_op_V_CMPX_F_F16, -amdgpu_cdna_op_V_CMPX_F_F32, -amdgpu_cdna_op_V_CMPX_F_F64, -amdgpu_cdna_op_V_CMPX_F_I16, -amdgpu_cdna_op_V_CMPX_F_I32, -amdgpu_cdna_op_V_CMPX_F_I64, -amdgpu_cdna_op_V_CMPX_F_U16, -amdgpu_cdna_op_V_CMPX_F_U32, -amdgpu_cdna_op_V_CMPX_F_U64, -amdgpu_cdna_op_V_CMPX_GE_F16, -amdgpu_cdna_op_V_CMPX_GE_F32, -amdgpu_cdna_op_V_CMPX_GE_F64, -amdgpu_cdna_op_V_CMPX_GE_I16, -amdgpu_cdna_op_V_CMPX_GE_I32, -amdgpu_cdna_op_V_CMPX_GE_I64, -amdgpu_cdna_op_V_CMPX_GE_U16, -amdgpu_cdna_op_V_CMPX_GE_U32, -amdgpu_cdna_op_V_CMPX_GE_U64, -amdgpu_cdna_op_V_CMPX_GT_F16, -amdgpu_cdna_op_V_CMPX_GT_F32, -amdgpu_cdna_op_V_CMPX_GT_F64, -amdgpu_cdna_op_V_CMPX_GT_I16, -amdgpu_cdna_op_V_CMPX_GT_I32, -amdgpu_cdna_op_V_CMPX_GT_I64, -amdgpu_cdna_op_V_CMPX_GT_U16, -amdgpu_cdna_op_V_CMPX_GT_U32, -amdgpu_cdna_op_V_CMPX_GT_U64, -amdgpu_cdna_op_V_CMPX_LE_F16, -amdgpu_cdna_op_V_CMPX_LE_F32, -amdgpu_cdna_op_V_CMPX_LE_F64, -amdgpu_cdna_op_V_CMPX_LE_I16, -amdgpu_cdna_op_V_CMPX_LE_I32, -amdgpu_cdna_op_V_CMPX_LE_I64, -amdgpu_cdna_op_V_CMPX_LE_U16, -amdgpu_cdna_op_V_CMPX_LE_U32, -amdgpu_cdna_op_V_CMPX_LE_U64, -amdgpu_cdna_op_V_CMPX_LG_F16, -amdgpu_cdna_op_V_CMPX_LG_F32, -amdgpu_cdna_op_V_CMPX_LG_F64, -amdgpu_cdna_op_V_CMPX_LT_F16, -amdgpu_cdna_op_V_CMPX_LT_F32, -amdgpu_cdna_op_V_CMPX_LT_F64, -amdgpu_cdna_op_V_CMPX_LT_I16, -amdgpu_cdna_op_V_CMPX_LT_I32, -amdgpu_cdna_op_V_CMPX_LT_I64, -amdgpu_cdna_op_V_CMPX_LT_U16, -amdgpu_cdna_op_V_CMPX_LT_U32, -amdgpu_cdna_op_V_CMPX_LT_U64, -amdgpu_cdna_op_V_CMPX_NEQ_F16, -amdgpu_cdna_op_V_CMPX_NEQ_F32, -amdgpu_cdna_op_V_CMPX_NEQ_F64, -amdgpu_cdna_op_V_CMPX_NE_I16, -amdgpu_cdna_op_V_CMPX_NE_I32, -amdgpu_cdna_op_V_CMPX_NE_I64, -amdgpu_cdna_op_V_CMPX_NE_U16, -amdgpu_cdna_op_V_CMPX_NE_U32, -amdgpu_cdna_op_V_CMPX_NE_U64, -amdgpu_cdna_op_V_CMPX_NGE_F16, -amdgpu_cdna_op_V_CMPX_NGE_F32, -amdgpu_cdna_op_V_CMPX_NGE_F64, -amdgpu_cdna_op_V_CMPX_NGT_F16, -amdgpu_cdna_op_V_CMPX_NGT_F32, -amdgpu_cdna_op_V_CMPX_NGT_F64, -amdgpu_cdna_op_V_CMPX_NLE_F16, -amdgpu_cdna_op_V_CMPX_NLE_F32, -amdgpu_cdna_op_V_CMPX_NLE_F64, -amdgpu_cdna_op_V_CMPX_NLG_F16, -amdgpu_cdna_op_V_CMPX_NLG_F32, -amdgpu_cdna_op_V_CMPX_NLG_F64, -amdgpu_cdna_op_V_CMPX_NLT_F16, -amdgpu_cdna_op_V_CMPX_NLT_F32, -amdgpu_cdna_op_V_CMPX_NLT_F64, -amdgpu_cdna_op_V_CMPX_O_F16, -amdgpu_cdna_op_V_CMPX_O_F32, -amdgpu_cdna_op_V_CMPX_O_F64, -amdgpu_cdna_op_V_CMPX_TRU_F16, -amdgpu_cdna_op_V_CMPX_TRU_F32, -amdgpu_cdna_op_V_CMPX_TRU_F64, -amdgpu_cdna_op_V_CMPX_T_I16, -amdgpu_cdna_op_V_CMPX_T_I32, -amdgpu_cdna_op_V_CMPX_T_I64, -amdgpu_cdna_op_V_CMPX_T_U16, -amdgpu_cdna_op_V_CMPX_T_U32, -amdgpu_cdna_op_V_CMPX_T_U64, -amdgpu_cdna_op_V_CMPX_U_F16, -amdgpu_cdna_op_V_CMPX_U_F32, -amdgpu_cdna_op_V_CMPX_U_F64, -amdgpu_cdna_op_V_CMP_CLASS_F16, -amdgpu_cdna_op_V_CMP_CLASS_F32, -amdgpu_cdna_op_V_CMP_CLASS_F64, -amdgpu_cdna_op_V_CMP_EQ_F16, -amdgpu_cdna_op_V_CMP_EQ_F32, -amdgpu_cdna_op_V_CMP_EQ_F64, -amdgpu_cdna_op_V_CMP_EQ_I16, -amdgpu_cdna_op_V_CMP_EQ_I32, -amdgpu_cdna_op_V_CMP_EQ_I64, -amdgpu_cdna_op_V_CMP_EQ_U16, -amdgpu_cdna_op_V_CMP_EQ_U32, -amdgpu_cdna_op_V_CMP_EQ_U64, -amdgpu_cdna_op_V_CMP_F_F16, -amdgpu_cdna_op_V_CMP_F_F32, -amdgpu_cdna_op_V_CMP_F_F64, -amdgpu_cdna_op_V_CMP_F_I16, -amdgpu_cdna_op_V_CMP_F_I32, -amdgpu_cdna_op_V_CMP_F_I64, -amdgpu_cdna_op_V_CMP_F_U16, -amdgpu_cdna_op_V_CMP_F_U32, -amdgpu_cdna_op_V_CMP_F_U64, -amdgpu_cdna_op_V_CMP_GE_F16, -amdgpu_cdna_op_V_CMP_GE_F32, -amdgpu_cdna_op_V_CMP_GE_F64, -amdgpu_cdna_op_V_CMP_GE_I16, -amdgpu_cdna_op_V_CMP_GE_I32, -amdgpu_cdna_op_V_CMP_GE_I64, -amdgpu_cdna_op_V_CMP_GE_U16, -amdgpu_cdna_op_V_CMP_GE_U32, -amdgpu_cdna_op_V_CMP_GE_U64, -amdgpu_cdna_op_V_CMP_GT_F16, -amdgpu_cdna_op_V_CMP_GT_F32, -amdgpu_cdna_op_V_CMP_GT_F64, -amdgpu_cdna_op_V_CMP_GT_I16, -amdgpu_cdna_op_V_CMP_GT_I32, -amdgpu_cdna_op_V_CMP_GT_I64, -amdgpu_cdna_op_V_CMP_GT_U16, -amdgpu_cdna_op_V_CMP_GT_U32, -amdgpu_cdna_op_V_CMP_GT_U64, -amdgpu_cdna_op_V_CMP_LE_F16, -amdgpu_cdna_op_V_CMP_LE_F32, -amdgpu_cdna_op_V_CMP_LE_F64, -amdgpu_cdna_op_V_CMP_LE_I16, -amdgpu_cdna_op_V_CMP_LE_I32, -amdgpu_cdna_op_V_CMP_LE_I64, -amdgpu_cdna_op_V_CMP_LE_U16, -amdgpu_cdna_op_V_CMP_LE_U32, -amdgpu_cdna_op_V_CMP_LE_U64, -amdgpu_cdna_op_V_CMP_LG_F16, -amdgpu_cdna_op_V_CMP_LG_F32, -amdgpu_cdna_op_V_CMP_LG_F64, -amdgpu_cdna_op_V_CMP_LT_F16, -amdgpu_cdna_op_V_CMP_LT_F32, -amdgpu_cdna_op_V_CMP_LT_F64, -amdgpu_cdna_op_V_CMP_LT_I16, -amdgpu_cdna_op_V_CMP_LT_I32, -amdgpu_cdna_op_V_CMP_LT_I64, -amdgpu_cdna_op_V_CMP_LT_U16, -amdgpu_cdna_op_V_CMP_LT_U32, -amdgpu_cdna_op_V_CMP_LT_U64, -amdgpu_cdna_op_V_CMP_NEQ_F16, -amdgpu_cdna_op_V_CMP_NEQ_F32, -amdgpu_cdna_op_V_CMP_NEQ_F64, -amdgpu_cdna_op_V_CMP_NE_I16, -amdgpu_cdna_op_V_CMP_NE_I32, -amdgpu_cdna_op_V_CMP_NE_I64, -amdgpu_cdna_op_V_CMP_NE_U16, -amdgpu_cdna_op_V_CMP_NE_U32, -amdgpu_cdna_op_V_CMP_NE_U64, -amdgpu_cdna_op_V_CMP_NGE_F16, -amdgpu_cdna_op_V_CMP_NGE_F32, -amdgpu_cdna_op_V_CMP_NGE_F64, -amdgpu_cdna_op_V_CMP_NGT_F16, -amdgpu_cdna_op_V_CMP_NGT_F32, -amdgpu_cdna_op_V_CMP_NGT_F64, -amdgpu_cdna_op_V_CMP_NLE_F16, -amdgpu_cdna_op_V_CMP_NLE_F32, -amdgpu_cdna_op_V_CMP_NLE_F64, -amdgpu_cdna_op_V_CMP_NLG_F16, -amdgpu_cdna_op_V_CMP_NLG_F32, -amdgpu_cdna_op_V_CMP_NLG_F64, -amdgpu_cdna_op_V_CMP_NLT_F16, -amdgpu_cdna_op_V_CMP_NLT_F32, -amdgpu_cdna_op_V_CMP_NLT_F64, -amdgpu_cdna_op_V_CMP_O_F16, -amdgpu_cdna_op_V_CMP_O_F32, -amdgpu_cdna_op_V_CMP_O_F64, -amdgpu_cdna_op_V_CMP_TRU_F16, -amdgpu_cdna_op_V_CMP_TRU_F32, -amdgpu_cdna_op_V_CMP_TRU_F64, -amdgpu_cdna_op_V_CMP_T_I16, -amdgpu_cdna_op_V_CMP_T_I32, -amdgpu_cdna_op_V_CMP_T_I64, -amdgpu_cdna_op_V_CMP_T_U16, -amdgpu_cdna_op_V_CMP_T_U32, -amdgpu_cdna_op_V_CMP_T_U64, -amdgpu_cdna_op_V_CMP_U_F16, -amdgpu_cdna_op_V_CMP_U_F32, -amdgpu_cdna_op_V_CMP_U_F64, -amdgpu_cdna_op_V_CNDMASK_B32, -amdgpu_cdna_op_V_COS_F16, -amdgpu_cdna_op_V_COS_F32, -amdgpu_cdna_op_V_CUBEID_F32, -amdgpu_cdna_op_V_CUBEMA_F32, -amdgpu_cdna_op_V_CUBESC_F32, -amdgpu_cdna_op_V_CUBETC_F32, -amdgpu_cdna_op_V_CVT_F16_F32, -amdgpu_cdna_op_V_CVT_F16_I16, -amdgpu_cdna_op_V_CVT_F16_U16, -amdgpu_cdna_op_V_CVT_F32_BF8, -amdgpu_cdna_op_V_CVT_F32_F16, -amdgpu_cdna_op_V_CVT_F32_F64, -amdgpu_cdna_op_V_CVT_F32_FP8, -amdgpu_cdna_op_V_CVT_F32_I32, -amdgpu_cdna_op_V_CVT_F32_U32, -amdgpu_cdna_op_V_CVT_F32_UBYTE0, -amdgpu_cdna_op_V_CVT_F32_UBYTE1, -amdgpu_cdna_op_V_CVT_F32_UBYTE2, -amdgpu_cdna_op_V_CVT_F32_UBYTE3, -amdgpu_cdna_op_V_CVT_F64_F32, -amdgpu_cdna_op_V_CVT_F64_I32, -amdgpu_cdna_op_V_CVT_F64_U32, -amdgpu_cdna_op_V_CVT_FLR_I32_F32, -amdgpu_cdna_op_V_CVT_I16_F16, -amdgpu_cdna_op_V_CVT_I32_F32, -amdgpu_cdna_op_V_CVT_I32_F64, -amdgpu_cdna_op_V_CVT_NORM_I16_F16, -amdgpu_cdna_op_V_CVT_NORM_U16_F16, -amdgpu_cdna_op_V_CVT_OFF_F32_I4, -amdgpu_cdna_op_V_CVT_PKACCUM_U8_F32, -amdgpu_cdna_op_V_CVT_PKNORM_I16_F16, -amdgpu_cdna_op_V_CVT_PKNORM_I16_F32, -amdgpu_cdna_op_V_CVT_PKNORM_U16_F16, -amdgpu_cdna_op_V_CVT_PKNORM_U16_F32, -amdgpu_cdna_op_V_CVT_PKRTZ_F16_F32, -amdgpu_cdna_op_V_CVT_PK_BF8_F32, -amdgpu_cdna_op_V_CVT_PK_F32_BF8, -amdgpu_cdna_op_V_CVT_PK_F32_FP8, -amdgpu_cdna_op_V_CVT_PK_FP8_F32, -amdgpu_cdna_op_V_CVT_PK_I16_I32, -amdgpu_cdna_op_V_CVT_PK_U16_U32, -amdgpu_cdna_op_V_CVT_PK_U8_F32, -amdgpu_cdna_op_V_CVT_RPI_I32_F32, -amdgpu_cdna_op_V_CVT_SR_BF8_F32, -amdgpu_cdna_op_V_CVT_SR_FP8_F32, -amdgpu_cdna_op_V_CVT_U16_F16, -amdgpu_cdna_op_V_CVT_U32_F32, -amdgpu_cdna_op_V_CVT_U32_F64, -amdgpu_cdna_op_V_DIV_FIXUP_F16, -amdgpu_cdna_op_V_DIV_FIXUP_F32, -amdgpu_cdna_op_V_DIV_FIXUP_F64, -amdgpu_cdna_op_V_DIV_FIXUP_LEGACY_F16, -amdgpu_cdna_op_V_DIV_FMAS_F32, -amdgpu_cdna_op_V_DIV_FMAS_F64, -amdgpu_cdna_op_V_DIV_SCALE_F32, -amdgpu_cdna_op_V_DIV_SCALE_F64, -amdgpu_cdna_op_V_DOT2C_F32_F16, -amdgpu_cdna_op_V_DOT2C_I32_I16, -amdgpu_cdna_op_V_DOT2_F32_F16, -amdgpu_cdna_op_V_DOT2_I32_I16, -amdgpu_cdna_op_V_DOT2_U32_U16, -amdgpu_cdna_op_V_DOT4C_I32_I8, -amdgpu_cdna_op_V_DOT4_I32_I8, -amdgpu_cdna_op_V_DOT4_U32_U8, -amdgpu_cdna_op_V_DOT8C_I32_I4, -amdgpu_cdna_op_V_DOT8_I32_I4, -amdgpu_cdna_op_V_DOT8_U32_U4, -amdgpu_cdna_op_V_EXP_F16, -amdgpu_cdna_op_V_EXP_F32, -amdgpu_cdna_op_V_EXP_LEGACY_F32, -amdgpu_cdna_op_V_FFBH_I32, -amdgpu_cdna_op_V_FFBH_U32, -amdgpu_cdna_op_V_FFBL_B32, -amdgpu_cdna_op_V_FLOOR_F16, -amdgpu_cdna_op_V_FLOOR_F32, -amdgpu_cdna_op_V_FLOOR_F64, -amdgpu_cdna_op_V_FMAAK_F32, -amdgpu_cdna_op_V_FMAC_F32, -amdgpu_cdna_op_V_FMAC_F64, -amdgpu_cdna_op_V_FMAMK_F32, -amdgpu_cdna_op_V_FMA_F16, -amdgpu_cdna_op_V_FMA_F32, -amdgpu_cdna_op_V_FMA_F64, -amdgpu_cdna_op_V_FMA_LEGACY_F16, -amdgpu_cdna_op_V_FRACT_F16, -amdgpu_cdna_op_V_FRACT_F32, -amdgpu_cdna_op_V_FRACT_F64, -amdgpu_cdna_op_V_FREXP_EXP_I16_F16, -amdgpu_cdna_op_V_FREXP_EXP_I32_F32, -amdgpu_cdna_op_V_FREXP_EXP_I32_F64, -amdgpu_cdna_op_V_FREXP_MANT_F16, -amdgpu_cdna_op_V_FREXP_MANT_F32, -amdgpu_cdna_op_V_FREXP_MANT_F64, -amdgpu_cdna_op_V_LDEXP_F16, -amdgpu_cdna_op_V_LDEXP_F32, -amdgpu_cdna_op_V_LDEXP_F64, -amdgpu_cdna_op_V_LERP_U8, -amdgpu_cdna_op_V_LOG_F16, -amdgpu_cdna_op_V_LOG_F32, -amdgpu_cdna_op_V_LOG_LEGACY_F32, -amdgpu_cdna_op_V_LSHLREV_B16, -amdgpu_cdna_op_V_LSHLREV_B32, -amdgpu_cdna_op_V_LSHLREV_B64, -amdgpu_cdna_op_V_LSHL_ADD_U32, -amdgpu_cdna_op_V_LSHL_ADD_U64, -amdgpu_cdna_op_V_LSHL_OR_B32, -amdgpu_cdna_op_V_LSHRREV_B16, -amdgpu_cdna_op_V_LSHRREV_B32, -amdgpu_cdna_op_V_LSHRREV_B64, -amdgpu_cdna_op_V_MAC_F16, -amdgpu_cdna_op_V_MADAK_F16, -amdgpu_cdna_op_V_MADMK_F16, -amdgpu_cdna_op_V_MAD_F16, -amdgpu_cdna_op_V_MAD_I16, -amdgpu_cdna_op_V_MAD_I32_I16, -amdgpu_cdna_op_V_MAD_I32_I24, -amdgpu_cdna_op_V_MAD_I64_I32, -amdgpu_cdna_op_V_MAD_LEGACY_F16, -amdgpu_cdna_op_V_MAD_LEGACY_I16, -amdgpu_cdna_op_V_MAD_LEGACY_U16, -amdgpu_cdna_op_V_MAD_MIXHI_F16, -amdgpu_cdna_op_V_MAD_MIXLO_F16, -amdgpu_cdna_op_V_MAD_MIX_F32, -amdgpu_cdna_op_V_MAD_U16, -amdgpu_cdna_op_V_MAD_U32_U16, -amdgpu_cdna_op_V_MAD_U32_U24, -amdgpu_cdna_op_V_MAD_U64_U32, -amdgpu_cdna_op_V_MAX3_F16, -amdgpu_cdna_op_V_MAX3_F32, -amdgpu_cdna_op_V_MAX3_I16, -amdgpu_cdna_op_V_MAX3_I32, -amdgpu_cdna_op_V_MAX3_U16, -amdgpu_cdna_op_V_MAX3_U32, -amdgpu_cdna_op_V_MAX_F16, -amdgpu_cdna_op_V_MAX_F32, -amdgpu_cdna_op_V_MAX_F64, -amdgpu_cdna_op_V_MAX_I16, -amdgpu_cdna_op_V_MAX_I32, -amdgpu_cdna_op_V_MAX_U16, -amdgpu_cdna_op_V_MAX_U32, -amdgpu_cdna_op_V_MBCNT_HI_U32_B32, -amdgpu_cdna_op_V_MBCNT_LO_U32_B32, -amdgpu_cdna_op_V_MED3_F16, -amdgpu_cdna_op_V_MED3_F32, -amdgpu_cdna_op_V_MED3_I16, -amdgpu_cdna_op_V_MED3_I32, -amdgpu_cdna_op_V_MED3_U16, -amdgpu_cdna_op_V_MED3_U32, -amdgpu_cdna_op_V_MFMA_F32_16X16X16_BF16, -amdgpu_cdna_op_V_MFMA_F32_16X16X16_F16, -amdgpu_cdna_op_V_MFMA_F32_16X16X1_4B_F32, -amdgpu_cdna_op_V_MFMA_F32_16X16X32_BF8_BF8, -amdgpu_cdna_op_V_MFMA_F32_16X16X32_BF8_FP8, -amdgpu_cdna_op_V_MFMA_F32_16X16X32_FP8_BF8, -amdgpu_cdna_op_V_MFMA_F32_16X16X32_FP8_FP8, -amdgpu_cdna_op_V_MFMA_F32_16X16X4_4B_BF16, -amdgpu_cdna_op_V_MFMA_F32_16X16X4_4B_F16, -amdgpu_cdna_op_V_MFMA_F32_16X16X4_F32, -amdgpu_cdna_op_V_MFMA_F32_16X16X8_XF32, -amdgpu_cdna_op_V_MFMA_F32_32X32X16_BF8_BF8, -amdgpu_cdna_op_V_MFMA_F32_32X32X16_BF8_FP8, -amdgpu_cdna_op_V_MFMA_F32_32X32X16_FP8_BF8, -amdgpu_cdna_op_V_MFMA_F32_32X32X16_FP8_FP8, -amdgpu_cdna_op_V_MFMA_F32_32X32X1_2B_F32, -amdgpu_cdna_op_V_MFMA_F32_32X32X2_F32, -amdgpu_cdna_op_V_MFMA_F32_32X32X4_2B_BF16, -amdgpu_cdna_op_V_MFMA_F32_32X32X4_2B_F16, -amdgpu_cdna_op_V_MFMA_F32_32X32X4_XF32, -amdgpu_cdna_op_V_MFMA_F32_32X32X8_BF16, -amdgpu_cdna_op_V_MFMA_F32_32X32X8_F16, -amdgpu_cdna_op_V_MFMA_F32_4X4X1_16B_F32, -amdgpu_cdna_op_V_MFMA_F32_4X4X4_16B_BF16, -amdgpu_cdna_op_V_MFMA_F32_4X4X4_16B_F16, -amdgpu_cdna_op_V_MFMA_F64_16X16X4_F64, -amdgpu_cdna_op_V_MFMA_F64_4X4X4_4B_F64, -amdgpu_cdna_op_V_MFMA_I32_16X16X32_I8, -amdgpu_cdna_op_V_MFMA_I32_16X16X4_4B_I8, -amdgpu_cdna_op_V_MFMA_I32_32X32X16_I8, -amdgpu_cdna_op_V_MFMA_I32_32X32X4_2B_I8, -amdgpu_cdna_op_V_MFMA_I32_4X4X4_16B_I8, -amdgpu_cdna_op_V_MIN3_F16, -amdgpu_cdna_op_V_MIN3_F32, -amdgpu_cdna_op_V_MIN3_I16, -amdgpu_cdna_op_V_MIN3_I32, -amdgpu_cdna_op_V_MIN3_U16, -amdgpu_cdna_op_V_MIN3_U32, -amdgpu_cdna_op_V_MIN_F16, -amdgpu_cdna_op_V_MIN_F32, -amdgpu_cdna_op_V_MIN_F64, -amdgpu_cdna_op_V_MIN_I16, -amdgpu_cdna_op_V_MIN_I32, -amdgpu_cdna_op_V_MIN_U16, -amdgpu_cdna_op_V_MIN_U32, -amdgpu_cdna_op_V_MOV_B32, -amdgpu_cdna_op_V_MOV_B64, -amdgpu_cdna_op_V_MQSAD_PK_U16_U8, -amdgpu_cdna_op_V_MQSAD_U32_U8, -amdgpu_cdna_op_V_MSAD_U8, -amdgpu_cdna_op_V_MUL_F16, -amdgpu_cdna_op_V_MUL_F32, -amdgpu_cdna_op_V_MUL_F64, -amdgpu_cdna_op_V_MUL_HI_I32, -amdgpu_cdna_op_V_MUL_HI_I32_I24, -amdgpu_cdna_op_V_MUL_HI_U32, -amdgpu_cdna_op_V_MUL_HI_U32_U24, -amdgpu_cdna_op_V_MUL_I32_I24, -amdgpu_cdna_op_V_MUL_LEGACY_F32, -amdgpu_cdna_op_V_MUL_LO_U16, -amdgpu_cdna_op_V_MUL_LO_U32, -amdgpu_cdna_op_V_MUL_U32_U24, -amdgpu_cdna_op_V_NOP, -amdgpu_cdna_op_V_NOT_B32, -amdgpu_cdna_op_V_OR3_B32, -amdgpu_cdna_op_V_OR_B32, -amdgpu_cdna_op_V_PACK_B32_F16, -amdgpu_cdna_op_V_PERM_B32, -amdgpu_cdna_op_V_PK_ADD_F16, -amdgpu_cdna_op_V_PK_ADD_F32, -amdgpu_cdna_op_V_PK_ADD_I16, -amdgpu_cdna_op_V_PK_ADD_U16, -amdgpu_cdna_op_V_PK_ASHRREV_I16, -amdgpu_cdna_op_V_PK_FMAC_F16, -amdgpu_cdna_op_V_PK_FMA_F16, -amdgpu_cdna_op_V_PK_FMA_F32, -amdgpu_cdna_op_V_PK_LSHLREV_B16, -amdgpu_cdna_op_V_PK_LSHRREV_B16, -amdgpu_cdna_op_V_PK_MAD_I16, -amdgpu_cdna_op_V_PK_MAD_U16, -amdgpu_cdna_op_V_PK_MAX_F16, -amdgpu_cdna_op_V_PK_MAX_I16, -amdgpu_cdna_op_V_PK_MAX_U16, -amdgpu_cdna_op_V_PK_MIN_F16, -amdgpu_cdna_op_V_PK_MIN_I16, -amdgpu_cdna_op_V_PK_MIN_U16, -amdgpu_cdna_op_V_PK_MOV_B32, -amdgpu_cdna_op_V_PK_MUL_F16, -amdgpu_cdna_op_V_PK_MUL_F32, -amdgpu_cdna_op_V_PK_MUL_LO_U16, -amdgpu_cdna_op_V_PK_SUB_I16, -amdgpu_cdna_op_V_PK_SUB_U16, -amdgpu_cdna_op_V_QSAD_PK_U16_U8, -amdgpu_cdna_op_V_RCP_F16, -amdgpu_cdna_op_V_RCP_F32, -amdgpu_cdna_op_V_RCP_F64, -amdgpu_cdna_op_V_RCP_IFLAG_F32, -amdgpu_cdna_op_V_READFIRSTLANE_B32, -amdgpu_cdna_op_V_READLANE_B32, -amdgpu_cdna_op_V_RNDNE_F16, -amdgpu_cdna_op_V_RNDNE_F32, -amdgpu_cdna_op_V_RNDNE_F64, -amdgpu_cdna_op_V_RSQ_F16, -amdgpu_cdna_op_V_RSQ_F32, -amdgpu_cdna_op_V_RSQ_F64, -amdgpu_cdna_op_V_SAD_HI_U8, -amdgpu_cdna_op_V_SAD_U16, -amdgpu_cdna_op_V_SAD_U32, -amdgpu_cdna_op_V_SAD_U8, -amdgpu_cdna_op_V_SAT_PK_U8_I16, -amdgpu_cdna_op_V_SCREEN_PARTITION_4SE_B32, -amdgpu_cdna_op_V_SIN_F16, -amdgpu_cdna_op_V_SIN_F32, -amdgpu_cdna_op_V_SMFMAC_F32_16X16X32_BF16, -amdgpu_cdna_op_V_SMFMAC_F32_16X16X32_F16, -amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_BF8_BF8, -amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_BF8_FP8, -amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_FP8_BF8, -amdgpu_cdna_op_V_SMFMAC_F32_16X16X64_FP8_FP8, -amdgpu_cdna_op_V_SMFMAC_F32_32X32X16_BF16, -amdgpu_cdna_op_V_SMFMAC_F32_32X32X16_F16, -amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_BF8_BF8, -amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_BF8_FP8, -amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_FP8_BF8, -amdgpu_cdna_op_V_SMFMAC_F32_32X32X32_FP8_FP8, -amdgpu_cdna_op_V_SMFMAC_I32_16X16X64_I8, -amdgpu_cdna_op_V_SMFMAC_I32_32X32X32_I8, -amdgpu_cdna_op_V_SQRT_F16, -amdgpu_cdna_op_V_SQRT_F32, -amdgpu_cdna_op_V_SQRT_F64, -amdgpu_cdna_op_V_SUBBREV_CO_U32, -amdgpu_cdna_op_V_SUBB_CO_U32, -amdgpu_cdna_op_V_SUBREV_CO_U32, -amdgpu_cdna_op_V_SUBREV_F16, -amdgpu_cdna_op_V_SUBREV_F32, -amdgpu_cdna_op_V_SUBREV_U16, -amdgpu_cdna_op_V_SUBREV_U32, -amdgpu_cdna_op_V_SUB_CO_U32, -amdgpu_cdna_op_V_SUB_F16, -amdgpu_cdna_op_V_SUB_F32, -amdgpu_cdna_op_V_SUB_I16, -amdgpu_cdna_op_V_SUB_I32, -amdgpu_cdna_op_V_SUB_U16, -amdgpu_cdna_op_V_SUB_U32, -amdgpu_cdna_op_V_SWAP_B32, -amdgpu_cdna_op_V_TRIG_PREOP_F64, -amdgpu_cdna_op_V_TRUNC_F16, -amdgpu_cdna_op_V_TRUNC_F32, -amdgpu_cdna_op_V_TRUNC_F64, -amdgpu_cdna_op_V_WRITELANE_B32, -amdgpu_cdna_op_V_XAD_U32, -amdgpu_cdna_op_V_XNOR_B32, -amdgpu_cdna_op_V_XOR_B32, diff --git a/common/h/amdgpu_cdna_sys_regs.h b/common/h/amdgpu_cdna_sys_regs.h deleted file mode 100644 index c90bf12e57..0000000000 --- a/common/h/amdgpu_cdna_sys_regs.h +++ /dev/null @@ -1,1563 +0,0 @@ -#ifndef DYNINST_AMDGPU_CDNA_SYS_REGS_H -#define DYNINST_AMDGPU_CDNA_SYS_REGS_H -DEF_REGISTER(address_mode_32, Arch_amdgpu_cdna | HWR | BITS_32 | 0,"amdgpu_cdna"); -DEF_REGISTER(exec, Arch_amdgpu_cdna | HWR | BITS_64 | 1,"amdgpu_cdna"); -DEF_REGISTER(exec_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 1,"amdgpu_cdna"); -DEF_REGISTER(exec_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 1,"amdgpu_cdna"); -DEF_REGISTER(expcnt, Arch_amdgpu_cdna | HWR | BITS_3 | 2,"amdgpu_cdna"); -DEF_REGISTER(export_icount, Arch_amdgpu_cdna | HWR | BITS_8 | 3,"amdgpu_cdna"); -DEF_REGISTER(flat_scratch, Arch_amdgpu_cdna | HWR | BITS_64 | 4,"amdgpu_cdna"); -DEF_REGISTER(flat_scratch_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 4,"amdgpu_cdna"); -DEF_REGISTER(flat_scratch_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 4,"amdgpu_cdna"); -DEF_REGISTER(gpr_alloc, Arch_amdgpu_cdna | HWR | BITS_32 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpr_base, Arch_amdgpu_cdna | 0x0 | BITS_6 | 0x8000 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpt_size, Arch_amdgpu_cdna | 0x80000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna"); -DEF_REGISTER(sgpr_base, Arch_amdgpu_cdna | 0x100000 | BITS_6 | 0x8000 | 5,"amdgpu_cdna"); -DEF_REGISTER(sgpr_size, Arch_amdgpu_cdna | 0x180000 | BITS_4 | 0x8000 | 5,"amdgpu_cdna"); -DEF_REGISTER(ib_sts, Arch_amdgpu_cdna | HWR | BITS_32 | 6,"amdgpu_cdna"); -DEF_REGISTER(exp_cnt, Arch_amdgpu_cdna | 0x40000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna"); -DEF_REGISTER(lgkm_cnt, Arch_amdgpu_cdna | 0x80000 | BITS_4 | 0x8000 | 6,"amdgpu_cdna"); -DEF_REGISTER(valu_cnt, Arch_amdgpu_cdna | 0xc0000 | BITS_3 | 0x8000 | 6,"amdgpu_cdna"); -DEF_REGISTER(vm_cnt, Arch_amdgpu_cdna | 0xf0000 | BITS_6 | 0x8000 | 6,"amdgpu_cdna"); -DEF_REGISTER(lds_alloc, Arch_amdgpu_cdna | HWR | BITS_32 | 7,"amdgpu_cdna"); -DEF_REGISTER(lds_base, Arch_amdgpu_cdna | 0x0 | BITS_8 | 0x8000 | 7,"amdgpu_cdna"); -DEF_REGISTER(lds_size, Arch_amdgpu_cdna | 0xc0000 | BITS_9 | 0x8000 | 7,"amdgpu_cdna"); -DEF_REGISTER(lds_gds_constant_message_count, Arch_amdgpu_cdna | HWR | BITS_8 | 8,"amdgpu_cdna"); -DEF_REGISTER(lgkmcnt, Arch_amdgpu_cdna | HWR | BITS_4 | 9,"amdgpu_cdna"); -DEF_REGISTER(m0, Arch_amdgpu_cdna | HWR | BITS_32 | 10,"amdgpu_cdna"); -DEF_REGISTER(gds_size, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(lds_direct_address, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(lds_interpolation_parameter_offset, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(lds_memory_vfetch_offset, Arch_amdgpu_cdna | 0x0 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(lds_direct_data_type, Arch_amdgpu_cdna | 0x100000 | BITS_3 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(lds_interpolation_new_prim_mask, Arch_amdgpu_cdna | 0x100000 | BITS_15 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(gds_base, Arch_amdgpu_cdna | 0x100000 | BITS_16 | 0x8000 | 10,"amdgpu_cdna"); -DEF_REGISTER(mode, Arch_amdgpu_cdna | HWR | BITS_32 | 11,"amdgpu_cdna"); -DEF_REGISTER(fp_round, Arch_amdgpu_cdna | 0x0 | BITS_4 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(fp_denorm, Arch_amdgpu_cdna | 0x40000 | BITS_4 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(dx10_clamp, Arch_amdgpu_cdna | 0x80000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(ieee, Arch_amdgpu_cdna | 0x90000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(lod_clamped, Arch_amdgpu_cdna | 0xa0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(debug, Arch_amdgpu_cdna | 0xb0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(excp_en, Arch_amdgpu_cdna | 0xc0000 | BITS_7 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(fp16_ovfl, Arch_amdgpu_cdna | 0x170000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(pops_packer0, Arch_amdgpu_cdna | 0x180000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(pops_packer1, Arch_amdgpu_cdna | 0x190000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(disable_perf, Arch_amdgpu_cdna | 0x1a0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(gpr_idx_en, Arch_amdgpu_cdna | 0x1b0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(vskip, Arch_amdgpu_cdna | 0x1c0000 | BITS_1 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(csp, Arch_amdgpu_cdna | 0x1d0000 | BITS_3 | 0x8000 | 11,"amdgpu_cdna"); -DEF_REGISTER(pc, Arch_amdgpu_cdna | PC | BITS_48 | 0,"amdgpu_cdna"); -DEF_REGISTER(pops_exiting_wave_id, Arch_amdgpu_cdna | HWR | BITS_64 | 12,"amdgpu_cdna"); -DEF_REGISTER(private_base, Arch_amdgpu_cdna | HWR | BITS_64 | 13,"amdgpu_cdna"); -DEF_REGISTER(private_limit, Arch_amdgpu_cdna | HWR | BITS_64 | 14,"amdgpu_cdna"); -DEF_REGISTER(shared_base, Arch_amdgpu_cdna | HWR | BITS_64 | 15,"amdgpu_cdna"); -DEF_REGISTER(shared_limit, Arch_amdgpu_cdna | HWR | BITS_64 | 16,"amdgpu_cdna"); -DEF_REGISTER(status, Arch_amdgpu_cdna | HWR | BITS_32 | 17,"amdgpu_cdna"); -DEF_REGISTER(scc, Arch_amdgpu_cdna | 0x0 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(spi_prio, Arch_amdgpu_cdna | 0x10000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(wave_prio, Arch_amdgpu_cdna | 0x30000 | BITS_2 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(priv, Arch_amdgpu_cdna | 0x50000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(trap_en, Arch_amdgpu_cdna | 0x60000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(ttrace_en, Arch_amdgpu_cdna | 0x70000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(export_rdy, Arch_amdgpu_cdna | 0x80000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(execz, Arch_amdgpu_cdna | 0x90000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(vccz, Arch_amdgpu_cdna | 0xa0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(in_tg, Arch_amdgpu_cdna | 0xb0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(in_barrier, Arch_amdgpu_cdna | 0xc0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(halt, Arch_amdgpu_cdna | 0xd0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(trap, Arch_amdgpu_cdna | 0xe0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(ttrace_cu_en, Arch_amdgpu_cdna | 0xf0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(valid, Arch_amdgpu_cdna | 0x100000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(ecc_err, Arch_amdgpu_cdna | 0x110000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(skin_export, Arch_amdgpu_cdna | 0x120000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(perf_en, Arch_amdgpu_cdna | 0x130000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(cond_dbg_user, Arch_amdgpu_cdna | 0x140000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(cond_dbg_sys, Arch_amdgpu_cdna | 0x150000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(allow_replay, Arch_amdgpu_cdna | 0x160000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(must_export, Arch_amdgpu_cdna | 0x1b0000 | BITS_1 | 0x8000 | 17,"amdgpu_cdna"); -DEF_REGISTER(tba, Arch_amdgpu_cdna | HWR | BITS_64 | 18,"amdgpu_cdna"); -DEF_REGISTER(tid, Arch_amdgpu_cdna | HWR | BITS_32 | 19,"amdgpu_cdna"); -DEF_REGISTER(tma, Arch_amdgpu_cdna | HWR | BITS_64 | 20,"amdgpu_cdna"); -DEF_REGISTER(trap_base_address, Arch_amdgpu_cdna | HWR | BITS_64 | 21,"amdgpu_cdna"); -DEF_REGISTER(trap_memory_address, Arch_amdgpu_cdna | HWR | BITS_64 | 22,"amdgpu_cdna"); -DEF_REGISTER(ttmp0, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 0,"amdgpu_cdna"); -DEF_REGISTER(ttmp1, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 1,"amdgpu_cdna"); -DEF_REGISTER(ttmp10, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 2,"amdgpu_cdna"); -DEF_REGISTER(ttmp11, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 3,"amdgpu_cdna"); -DEF_REGISTER(ttmp12, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 4,"amdgpu_cdna"); -DEF_REGISTER(ttmp13, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 5,"amdgpu_cdna"); -DEF_REGISTER(ttmp14, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 6,"amdgpu_cdna"); -DEF_REGISTER(ttmp15, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 7,"amdgpu_cdna"); -DEF_REGISTER(ttmp2, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 8,"amdgpu_cdna"); -DEF_REGISTER(ttmp3, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 9,"amdgpu_cdna"); -DEF_REGISTER(ttmp4, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 10,"amdgpu_cdna"); -DEF_REGISTER(ttmp5, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 11,"amdgpu_cdna"); -DEF_REGISTER(ttmp6, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 12,"amdgpu_cdna"); -DEF_REGISTER(ttmp7, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 13,"amdgpu_cdna"); -DEF_REGISTER(ttmp8, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 14,"amdgpu_cdna"); -DEF_REGISTER(ttmp9, Arch_amdgpu_cdna | TTMP_SGPR | BITS_32 | 15,"amdgpu_cdna"); -DEF_REGISTER(vcc, Arch_amdgpu_cdna | HWR | BITS_64 | 23,"amdgpu_cdna"); -DEF_REGISTER(vcc_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 23,"amdgpu_cdna"); -DEF_REGISTER(vcc_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 23,"amdgpu_cdna"); -DEF_REGISTER(vectory_memory_icount, Arch_amdgpu_cdna | HWR | BITS_8 | 24,"amdgpu_cdna"); -DEF_REGISTER(vmcnt, Arch_amdgpu_cdna | HWR | BITS_6 | 25,"amdgpu_cdna"); -DEF_REGISTER(xnack_mask, Arch_amdgpu_cdna | HWR | BITS_64 | 26,"amdgpu_cdna"); -DEF_REGISTER(xnack_mask_lo, Arch_amdgpu_cdna | 0x0 | BITS_32 | 0x8000 | 26,"amdgpu_cdna"); -DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_cdna | 0x200000 | BITS_32 | 0x8000 | 26,"amdgpu_cdna"); -DEF_REGISTER(sgpr0, Arch_amdgpu_cdna | SGPR | BITS_32 | 0,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_0, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_0, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_0, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec16_0, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna"); -DEF_REGISTER(sgpr1, Arch_amdgpu_cdna | SGPR | BITS_32 | 1,"amdgpu_cdna"); -DEF_REGISTER(sgpr2, Arch_amdgpu_cdna | SGPR | BITS_32 | 2,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_2, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna"); -DEF_REGISTER(sgpr3, Arch_amdgpu_cdna | SGPR | BITS_32 | 3,"amdgpu_cdna"); -DEF_REGISTER(sgpr4, Arch_amdgpu_cdna | SGPR | BITS_32 | 4,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_4, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_4, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna"); -DEF_REGISTER(sgpr5, Arch_amdgpu_cdna | SGPR | BITS_32 | 5,"amdgpu_cdna"); -DEF_REGISTER(sgpr6, Arch_amdgpu_cdna | SGPR | BITS_32 | 6,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_6, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna"); -DEF_REGISTER(sgpr7, Arch_amdgpu_cdna | SGPR | BITS_32 | 7,"amdgpu_cdna"); -DEF_REGISTER(sgpr8, Arch_amdgpu_cdna | SGPR | BITS_32 | 8,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_8, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_8, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_8, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna"); -DEF_REGISTER(sgpr9, Arch_amdgpu_cdna | SGPR | BITS_32 | 9,"amdgpu_cdna"); -DEF_REGISTER(sgpr10, Arch_amdgpu_cdna | SGPR | BITS_32 | 10,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_10, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna"); -DEF_REGISTER(sgpr11, Arch_amdgpu_cdna | SGPR | BITS_32 | 11,"amdgpu_cdna"); -DEF_REGISTER(sgpr12, Arch_amdgpu_cdna | SGPR | BITS_32 | 12,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_12, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_12, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna"); -DEF_REGISTER(sgpr13, Arch_amdgpu_cdna | SGPR | BITS_32 | 13,"amdgpu_cdna"); -DEF_REGISTER(sgpr14, Arch_amdgpu_cdna | SGPR | BITS_32 | 14,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_14, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna"); -DEF_REGISTER(sgpr15, Arch_amdgpu_cdna | SGPR | BITS_32 | 15,"amdgpu_cdna"); -DEF_REGISTER(sgpr16, Arch_amdgpu_cdna | SGPR | BITS_32 | 16,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_16, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_16, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_16, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec16_16, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna"); -DEF_REGISTER(sgpr17, Arch_amdgpu_cdna | SGPR | BITS_32 | 17,"amdgpu_cdna"); -DEF_REGISTER(sgpr18, Arch_amdgpu_cdna | SGPR | BITS_32 | 18,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_18, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna"); -DEF_REGISTER(sgpr19, Arch_amdgpu_cdna | SGPR | BITS_32 | 19,"amdgpu_cdna"); -DEF_REGISTER(sgpr20, Arch_amdgpu_cdna | SGPR | BITS_32 | 20,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_20, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_20, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna"); -DEF_REGISTER(sgpr21, Arch_amdgpu_cdna | SGPR | BITS_32 | 21,"amdgpu_cdna"); -DEF_REGISTER(sgpr22, Arch_amdgpu_cdna | SGPR | BITS_32 | 22,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_22, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna"); -DEF_REGISTER(sgpr23, Arch_amdgpu_cdna | SGPR | BITS_32 | 23,"amdgpu_cdna"); -DEF_REGISTER(sgpr24, Arch_amdgpu_cdna | SGPR | BITS_32 | 24,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_24, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_24, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_24, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna"); -DEF_REGISTER(sgpr25, Arch_amdgpu_cdna | SGPR | BITS_32 | 25,"amdgpu_cdna"); -DEF_REGISTER(sgpr26, Arch_amdgpu_cdna | SGPR | BITS_32 | 26,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_26, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna"); -DEF_REGISTER(sgpr27, Arch_amdgpu_cdna | SGPR | BITS_32 | 27,"amdgpu_cdna"); -DEF_REGISTER(sgpr28, Arch_amdgpu_cdna | SGPR | BITS_32 | 28,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_28, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_28, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna"); -DEF_REGISTER(sgpr29, Arch_amdgpu_cdna | SGPR | BITS_32 | 29,"amdgpu_cdna"); -DEF_REGISTER(sgpr30, Arch_amdgpu_cdna | SGPR | BITS_32 | 30,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_30, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna"); -DEF_REGISTER(sgpr31, Arch_amdgpu_cdna | SGPR | BITS_32 | 31,"amdgpu_cdna"); -DEF_REGISTER(sgpr32, Arch_amdgpu_cdna | SGPR | BITS_32 | 32,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_32, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_32, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_32, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec16_32, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna"); -DEF_REGISTER(sgpr33, Arch_amdgpu_cdna | SGPR | BITS_32 | 33,"amdgpu_cdna"); -DEF_REGISTER(sgpr34, Arch_amdgpu_cdna | SGPR | BITS_32 | 34,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_34, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna"); -DEF_REGISTER(sgpr35, Arch_amdgpu_cdna | SGPR | BITS_32 | 35,"amdgpu_cdna"); -DEF_REGISTER(sgpr36, Arch_amdgpu_cdna | SGPR | BITS_32 | 36,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_36, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_36, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna"); -DEF_REGISTER(sgpr37, Arch_amdgpu_cdna | SGPR | BITS_32 | 37,"amdgpu_cdna"); -DEF_REGISTER(sgpr38, Arch_amdgpu_cdna | SGPR | BITS_32 | 38,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_38, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna"); -DEF_REGISTER(sgpr39, Arch_amdgpu_cdna | SGPR | BITS_32 | 39,"amdgpu_cdna"); -DEF_REGISTER(sgpr40, Arch_amdgpu_cdna | SGPR | BITS_32 | 40,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_40, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_40, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_40, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna"); -DEF_REGISTER(sgpr41, Arch_amdgpu_cdna | SGPR | BITS_32 | 41,"amdgpu_cdna"); -DEF_REGISTER(sgpr42, Arch_amdgpu_cdna | SGPR | BITS_32 | 42,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_42, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna"); -DEF_REGISTER(sgpr43, Arch_amdgpu_cdna | SGPR | BITS_32 | 43,"amdgpu_cdna"); -DEF_REGISTER(sgpr44, Arch_amdgpu_cdna | SGPR | BITS_32 | 44,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_44, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_44, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna"); -DEF_REGISTER(sgpr45, Arch_amdgpu_cdna | SGPR | BITS_32 | 45,"amdgpu_cdna"); -DEF_REGISTER(sgpr46, Arch_amdgpu_cdna | SGPR | BITS_32 | 46,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_46, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna"); -DEF_REGISTER(sgpr47, Arch_amdgpu_cdna | SGPR | BITS_32 | 47,"amdgpu_cdna"); -DEF_REGISTER(sgpr48, Arch_amdgpu_cdna | SGPR | BITS_32 | 48,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_48, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_48, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_48, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec16_48, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna"); -DEF_REGISTER(sgpr49, Arch_amdgpu_cdna | SGPR | BITS_32 | 49,"amdgpu_cdna"); -DEF_REGISTER(sgpr50, Arch_amdgpu_cdna | SGPR | BITS_32 | 50,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_50, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna"); -DEF_REGISTER(sgpr51, Arch_amdgpu_cdna | SGPR | BITS_32 | 51,"amdgpu_cdna"); -DEF_REGISTER(sgpr52, Arch_amdgpu_cdna | SGPR | BITS_32 | 52,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_52, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_52, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna"); -DEF_REGISTER(sgpr53, Arch_amdgpu_cdna | SGPR | BITS_32 | 53,"amdgpu_cdna"); -DEF_REGISTER(sgpr54, Arch_amdgpu_cdna | SGPR | BITS_32 | 54,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_54, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna"); -DEF_REGISTER(sgpr55, Arch_amdgpu_cdna | SGPR | BITS_32 | 55,"amdgpu_cdna"); -DEF_REGISTER(sgpr56, Arch_amdgpu_cdna | SGPR | BITS_32 | 56,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_56, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_56, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_56, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna"); -DEF_REGISTER(sgpr57, Arch_amdgpu_cdna | SGPR | BITS_32 | 57,"amdgpu_cdna"); -DEF_REGISTER(sgpr58, Arch_amdgpu_cdna | SGPR | BITS_32 | 58,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_58, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna"); -DEF_REGISTER(sgpr59, Arch_amdgpu_cdna | SGPR | BITS_32 | 59,"amdgpu_cdna"); -DEF_REGISTER(sgpr60, Arch_amdgpu_cdna | SGPR | BITS_32 | 60,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_60, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_60, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna"); -DEF_REGISTER(sgpr61, Arch_amdgpu_cdna | SGPR | BITS_32 | 61,"amdgpu_cdna"); -DEF_REGISTER(sgpr62, Arch_amdgpu_cdna | SGPR | BITS_32 | 62,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_62, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna"); -DEF_REGISTER(sgpr63, Arch_amdgpu_cdna | SGPR | BITS_32 | 63,"amdgpu_cdna"); -DEF_REGISTER(sgpr64, Arch_amdgpu_cdna | SGPR | BITS_32 | 64,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_64, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_64, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_64, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec16_64, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna"); -DEF_REGISTER(sgpr65, Arch_amdgpu_cdna | SGPR | BITS_32 | 65,"amdgpu_cdna"); -DEF_REGISTER(sgpr66, Arch_amdgpu_cdna | SGPR | BITS_32 | 66,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_66, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna"); -DEF_REGISTER(sgpr67, Arch_amdgpu_cdna | SGPR | BITS_32 | 67,"amdgpu_cdna"); -DEF_REGISTER(sgpr68, Arch_amdgpu_cdna | SGPR | BITS_32 | 68,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_68, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_68, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna"); -DEF_REGISTER(sgpr69, Arch_amdgpu_cdna | SGPR | BITS_32 | 69,"amdgpu_cdna"); -DEF_REGISTER(sgpr70, Arch_amdgpu_cdna | SGPR | BITS_32 | 70,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_70, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna"); -DEF_REGISTER(sgpr71, Arch_amdgpu_cdna | SGPR | BITS_32 | 71,"amdgpu_cdna"); -DEF_REGISTER(sgpr72, Arch_amdgpu_cdna | SGPR | BITS_32 | 72,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_72, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_72, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_72, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna"); -DEF_REGISTER(sgpr73, Arch_amdgpu_cdna | SGPR | BITS_32 | 73,"amdgpu_cdna"); -DEF_REGISTER(sgpr74, Arch_amdgpu_cdna | SGPR | BITS_32 | 74,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_74, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna"); -DEF_REGISTER(sgpr75, Arch_amdgpu_cdna | SGPR | BITS_32 | 75,"amdgpu_cdna"); -DEF_REGISTER(sgpr76, Arch_amdgpu_cdna | SGPR | BITS_32 | 76,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_76, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_76, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna"); -DEF_REGISTER(sgpr77, Arch_amdgpu_cdna | SGPR | BITS_32 | 77,"amdgpu_cdna"); -DEF_REGISTER(sgpr78, Arch_amdgpu_cdna | SGPR | BITS_32 | 78,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_78, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna"); -DEF_REGISTER(sgpr79, Arch_amdgpu_cdna | SGPR | BITS_32 | 79,"amdgpu_cdna"); -DEF_REGISTER(sgpr80, Arch_amdgpu_cdna | SGPR | BITS_32 | 80,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_80, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_80, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_80, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec16_80, Arch_amdgpu_cdna | SGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna"); -DEF_REGISTER(sgpr81, Arch_amdgpu_cdna | SGPR | BITS_32 | 81,"amdgpu_cdna"); -DEF_REGISTER(sgpr82, Arch_amdgpu_cdna | SGPR | BITS_32 | 82,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_82, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna"); -DEF_REGISTER(sgpr83, Arch_amdgpu_cdna | SGPR | BITS_32 | 83,"amdgpu_cdna"); -DEF_REGISTER(sgpr84, Arch_amdgpu_cdna | SGPR | BITS_32 | 84,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_84, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_84, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna"); -DEF_REGISTER(sgpr85, Arch_amdgpu_cdna | SGPR | BITS_32 | 85,"amdgpu_cdna"); -DEF_REGISTER(sgpr86, Arch_amdgpu_cdna | SGPR | BITS_32 | 86,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_86, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna"); -DEF_REGISTER(sgpr87, Arch_amdgpu_cdna | SGPR | BITS_32 | 87,"amdgpu_cdna"); -DEF_REGISTER(sgpr88, Arch_amdgpu_cdna | SGPR | BITS_32 | 88,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_88, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_88, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_88, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna"); -DEF_REGISTER(sgpr89, Arch_amdgpu_cdna | SGPR | BITS_32 | 89,"amdgpu_cdna"); -DEF_REGISTER(sgpr90, Arch_amdgpu_cdna | SGPR | BITS_32 | 90,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_90, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna"); -DEF_REGISTER(sgpr91, Arch_amdgpu_cdna | SGPR | BITS_32 | 91,"amdgpu_cdna"); -DEF_REGISTER(sgpr92, Arch_amdgpu_cdna | SGPR | BITS_32 | 92,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_92, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_92, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna"); -DEF_REGISTER(sgpr93, Arch_amdgpu_cdna | SGPR | BITS_32 | 93,"amdgpu_cdna"); -DEF_REGISTER(sgpr94, Arch_amdgpu_cdna | SGPR | BITS_32 | 94,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_94, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna"); -DEF_REGISTER(sgpr95, Arch_amdgpu_cdna | SGPR | BITS_32 | 95,"amdgpu_cdna"); -DEF_REGISTER(sgpr96, Arch_amdgpu_cdna | SGPR | BITS_32 | 96,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_96, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_96, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec8_96, Arch_amdgpu_cdna | SGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna"); -DEF_REGISTER(sgpr97, Arch_amdgpu_cdna | SGPR | BITS_32 | 97,"amdgpu_cdna"); -DEF_REGISTER(sgpr98, Arch_amdgpu_cdna | SGPR | BITS_32 | 98,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_98, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna"); -DEF_REGISTER(sgpr99, Arch_amdgpu_cdna | SGPR | BITS_32 | 99,"amdgpu_cdna"); -DEF_REGISTER(sgpr100, Arch_amdgpu_cdna | SGPR | BITS_32 | 100,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_100, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec4_100, Arch_amdgpu_cdna | SGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna"); -DEF_REGISTER(sgpr101, Arch_amdgpu_cdna | SGPR | BITS_32 | 101,"amdgpu_cdna"); -DEF_REGISTER(sgpr102, Arch_amdgpu_cdna | SGPR | BITS_32 | 102,"amdgpu_cdna"); -DEF_REGISTER(sgpr_vec2_102, Arch_amdgpu_cdna | SGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna"); -DEF_REGISTER(sgpr103, Arch_amdgpu_cdna | SGPR | BITS_32 | 103,"amdgpu_cdna"); -DEF_REGISTER(vgpr0, Arch_amdgpu_cdna | VGPR | BITS_32 | 0,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_0, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 0,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_0, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 0,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_0, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 0,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_0, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 0,"amdgpu_cdna"); -DEF_REGISTER(vgpr1, Arch_amdgpu_cdna | VGPR | BITS_32 | 1,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_1, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 1,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_1, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 1,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_1, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 1,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_1, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 1,"amdgpu_cdna"); -DEF_REGISTER(vgpr2, Arch_amdgpu_cdna | VGPR | BITS_32 | 2,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_2, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 2,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_2, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 2,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_2, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 2,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_2, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 2,"amdgpu_cdna"); -DEF_REGISTER(vgpr3, Arch_amdgpu_cdna | VGPR | BITS_32 | 3,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_3, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 3,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_3, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 3,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_3, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 3,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_3, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 3,"amdgpu_cdna"); -DEF_REGISTER(vgpr4, Arch_amdgpu_cdna | VGPR | BITS_32 | 4,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_4, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 4,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_4, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 4,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_4, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 4,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_4, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 4,"amdgpu_cdna"); -DEF_REGISTER(vgpr5, Arch_amdgpu_cdna | VGPR | BITS_32 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_5, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_5, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_5, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_5, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 5,"amdgpu_cdna"); -DEF_REGISTER(vgpr6, Arch_amdgpu_cdna | VGPR | BITS_32 | 6,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_6, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 6,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_6, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 6,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_6, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 6,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_6, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 6,"amdgpu_cdna"); -DEF_REGISTER(vgpr7, Arch_amdgpu_cdna | VGPR | BITS_32 | 7,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_7, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 7,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_7, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 7,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_7, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 7,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_7, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 7,"amdgpu_cdna"); -DEF_REGISTER(vgpr8, Arch_amdgpu_cdna | VGPR | BITS_32 | 8,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_8, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 8,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_8, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 8,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_8, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 8,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_8, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 8,"amdgpu_cdna"); -DEF_REGISTER(vgpr9, Arch_amdgpu_cdna | VGPR | BITS_32 | 9,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_9, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 9,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_9, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 9,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_9, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 9,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_9, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 9,"amdgpu_cdna"); -DEF_REGISTER(vgpr10, Arch_amdgpu_cdna | VGPR | BITS_32 | 10,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_10, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 10,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_10, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 10,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_10, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 10,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_10, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 10,"amdgpu_cdna"); -DEF_REGISTER(vgpr11, Arch_amdgpu_cdna | VGPR | BITS_32 | 11,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_11, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 11,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_11, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 11,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_11, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 11,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_11, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 11,"amdgpu_cdna"); -DEF_REGISTER(vgpr12, Arch_amdgpu_cdna | VGPR | BITS_32 | 12,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_12, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 12,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_12, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 12,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_12, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 12,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_12, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 12,"amdgpu_cdna"); -DEF_REGISTER(vgpr13, Arch_amdgpu_cdna | VGPR | BITS_32 | 13,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_13, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 13,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_13, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 13,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_13, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 13,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_13, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 13,"amdgpu_cdna"); -DEF_REGISTER(vgpr14, Arch_amdgpu_cdna | VGPR | BITS_32 | 14,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_14, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 14,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_14, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 14,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_14, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 14,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_14, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 14,"amdgpu_cdna"); -DEF_REGISTER(vgpr15, Arch_amdgpu_cdna | VGPR | BITS_32 | 15,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_15, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 15,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_15, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 15,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_15, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 15,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_15, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 15,"amdgpu_cdna"); -DEF_REGISTER(vgpr16, Arch_amdgpu_cdna | VGPR | BITS_32 | 16,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_16, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 16,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_16, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 16,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_16, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 16,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_16, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 16,"amdgpu_cdna"); -DEF_REGISTER(vgpr17, Arch_amdgpu_cdna | VGPR | BITS_32 | 17,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_17, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 17,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_17, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 17,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_17, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 17,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_17, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 17,"amdgpu_cdna"); -DEF_REGISTER(vgpr18, Arch_amdgpu_cdna | VGPR | BITS_32 | 18,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_18, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 18,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_18, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 18,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_18, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 18,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_18, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 18,"amdgpu_cdna"); -DEF_REGISTER(vgpr19, Arch_amdgpu_cdna | VGPR | BITS_32 | 19,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_19, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 19,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_19, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 19,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_19, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 19,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_19, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 19,"amdgpu_cdna"); -DEF_REGISTER(vgpr20, Arch_amdgpu_cdna | VGPR | BITS_32 | 20,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_20, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 20,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_20, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 20,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_20, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 20,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_20, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 20,"amdgpu_cdna"); -DEF_REGISTER(vgpr21, Arch_amdgpu_cdna | VGPR | BITS_32 | 21,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_21, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 21,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_21, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 21,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_21, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 21,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_21, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 21,"amdgpu_cdna"); -DEF_REGISTER(vgpr22, Arch_amdgpu_cdna | VGPR | BITS_32 | 22,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_22, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 22,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_22, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 22,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_22, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 22,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_22, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 22,"amdgpu_cdna"); -DEF_REGISTER(vgpr23, Arch_amdgpu_cdna | VGPR | BITS_32 | 23,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_23, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 23,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_23, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 23,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_23, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 23,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_23, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 23,"amdgpu_cdna"); -DEF_REGISTER(vgpr24, Arch_amdgpu_cdna | VGPR | BITS_32 | 24,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_24, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 24,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_24, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 24,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_24, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 24,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_24, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 24,"amdgpu_cdna"); -DEF_REGISTER(vgpr25, Arch_amdgpu_cdna | VGPR | BITS_32 | 25,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_25, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 25,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_25, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 25,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_25, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 25,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_25, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 25,"amdgpu_cdna"); -DEF_REGISTER(vgpr26, Arch_amdgpu_cdna | VGPR | BITS_32 | 26,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_26, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 26,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_26, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 26,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_26, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 26,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_26, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 26,"amdgpu_cdna"); -DEF_REGISTER(vgpr27, Arch_amdgpu_cdna | VGPR | BITS_32 | 27,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_27, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 27,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_27, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 27,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_27, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 27,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_27, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 27,"amdgpu_cdna"); -DEF_REGISTER(vgpr28, Arch_amdgpu_cdna | VGPR | BITS_32 | 28,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_28, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 28,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_28, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 28,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_28, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 28,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_28, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 28,"amdgpu_cdna"); -DEF_REGISTER(vgpr29, Arch_amdgpu_cdna | VGPR | BITS_32 | 29,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_29, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 29,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_29, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 29,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_29, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 29,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_29, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 29,"amdgpu_cdna"); -DEF_REGISTER(vgpr30, Arch_amdgpu_cdna | VGPR | BITS_32 | 30,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_30, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 30,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_30, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 30,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_30, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 30,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_30, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 30,"amdgpu_cdna"); -DEF_REGISTER(vgpr31, Arch_amdgpu_cdna | VGPR | BITS_32 | 31,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_31, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 31,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_31, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 31,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_31, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 31,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_31, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 31,"amdgpu_cdna"); -DEF_REGISTER(vgpr32, Arch_amdgpu_cdna | VGPR | BITS_32 | 32,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_32, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 32,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_32, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 32,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_32, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 32,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_32, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 32,"amdgpu_cdna"); -DEF_REGISTER(vgpr33, Arch_amdgpu_cdna | VGPR | BITS_32 | 33,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_33, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 33,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_33, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 33,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_33, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 33,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_33, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 33,"amdgpu_cdna"); -DEF_REGISTER(vgpr34, Arch_amdgpu_cdna | VGPR | BITS_32 | 34,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_34, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 34,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_34, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 34,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_34, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 34,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_34, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 34,"amdgpu_cdna"); -DEF_REGISTER(vgpr35, Arch_amdgpu_cdna | VGPR | BITS_32 | 35,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_35, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 35,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_35, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 35,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_35, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 35,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_35, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 35,"amdgpu_cdna"); -DEF_REGISTER(vgpr36, Arch_amdgpu_cdna | VGPR | BITS_32 | 36,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_36, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 36,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_36, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 36,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_36, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 36,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_36, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 36,"amdgpu_cdna"); -DEF_REGISTER(vgpr37, Arch_amdgpu_cdna | VGPR | BITS_32 | 37,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_37, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 37,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_37, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 37,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_37, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 37,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_37, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 37,"amdgpu_cdna"); -DEF_REGISTER(vgpr38, Arch_amdgpu_cdna | VGPR | BITS_32 | 38,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_38, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 38,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_38, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 38,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_38, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 38,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_38, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 38,"amdgpu_cdna"); -DEF_REGISTER(vgpr39, Arch_amdgpu_cdna | VGPR | BITS_32 | 39,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_39, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 39,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_39, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 39,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_39, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 39,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_39, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 39,"amdgpu_cdna"); -DEF_REGISTER(vgpr40, Arch_amdgpu_cdna | VGPR | BITS_32 | 40,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_40, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 40,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_40, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 40,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_40, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 40,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_40, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 40,"amdgpu_cdna"); -DEF_REGISTER(vgpr41, Arch_amdgpu_cdna | VGPR | BITS_32 | 41,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_41, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 41,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_41, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 41,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_41, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 41,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_41, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 41,"amdgpu_cdna"); -DEF_REGISTER(vgpr42, Arch_amdgpu_cdna | VGPR | BITS_32 | 42,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_42, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 42,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_42, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 42,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_42, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 42,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_42, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 42,"amdgpu_cdna"); -DEF_REGISTER(vgpr43, Arch_amdgpu_cdna | VGPR | BITS_32 | 43,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_43, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 43,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_43, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 43,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_43, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 43,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_43, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 43,"amdgpu_cdna"); -DEF_REGISTER(vgpr44, Arch_amdgpu_cdna | VGPR | BITS_32 | 44,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_44, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 44,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_44, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 44,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_44, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 44,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_44, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 44,"amdgpu_cdna"); -DEF_REGISTER(vgpr45, Arch_amdgpu_cdna | VGPR | BITS_32 | 45,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_45, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 45,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_45, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 45,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_45, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 45,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_45, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 45,"amdgpu_cdna"); -DEF_REGISTER(vgpr46, Arch_amdgpu_cdna | VGPR | BITS_32 | 46,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_46, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 46,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_46, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 46,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_46, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 46,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_46, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 46,"amdgpu_cdna"); -DEF_REGISTER(vgpr47, Arch_amdgpu_cdna | VGPR | BITS_32 | 47,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_47, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 47,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_47, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 47,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_47, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 47,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_47, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 47,"amdgpu_cdna"); -DEF_REGISTER(vgpr48, Arch_amdgpu_cdna | VGPR | BITS_32 | 48,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_48, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 48,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_48, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 48,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_48, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 48,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_48, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 48,"amdgpu_cdna"); -DEF_REGISTER(vgpr49, Arch_amdgpu_cdna | VGPR | BITS_32 | 49,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_49, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 49,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_49, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 49,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_49, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 49,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_49, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 49,"amdgpu_cdna"); -DEF_REGISTER(vgpr50, Arch_amdgpu_cdna | VGPR | BITS_32 | 50,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_50, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 50,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_50, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 50,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_50, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 50,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_50, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 50,"amdgpu_cdna"); -DEF_REGISTER(vgpr51, Arch_amdgpu_cdna | VGPR | BITS_32 | 51,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_51, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 51,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_51, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 51,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_51, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 51,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_51, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 51,"amdgpu_cdna"); -DEF_REGISTER(vgpr52, Arch_amdgpu_cdna | VGPR | BITS_32 | 52,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_52, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 52,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_52, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 52,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_52, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 52,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_52, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 52,"amdgpu_cdna"); -DEF_REGISTER(vgpr53, Arch_amdgpu_cdna | VGPR | BITS_32 | 53,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_53, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 53,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_53, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 53,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_53, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 53,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_53, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 53,"amdgpu_cdna"); -DEF_REGISTER(vgpr54, Arch_amdgpu_cdna | VGPR | BITS_32 | 54,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_54, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 54,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_54, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 54,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_54, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 54,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_54, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 54,"amdgpu_cdna"); -DEF_REGISTER(vgpr55, Arch_amdgpu_cdna | VGPR | BITS_32 | 55,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_55, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 55,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_55, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 55,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_55, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 55,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_55, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 55,"amdgpu_cdna"); -DEF_REGISTER(vgpr56, Arch_amdgpu_cdna | VGPR | BITS_32 | 56,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_56, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 56,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_56, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 56,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_56, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 56,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_56, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 56,"amdgpu_cdna"); -DEF_REGISTER(vgpr57, Arch_amdgpu_cdna | VGPR | BITS_32 | 57,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_57, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 57,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_57, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 57,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_57, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 57,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_57, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 57,"amdgpu_cdna"); -DEF_REGISTER(vgpr58, Arch_amdgpu_cdna | VGPR | BITS_32 | 58,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_58, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 58,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_58, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 58,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_58, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 58,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_58, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 58,"amdgpu_cdna"); -DEF_REGISTER(vgpr59, Arch_amdgpu_cdna | VGPR | BITS_32 | 59,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_59, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 59,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_59, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 59,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_59, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 59,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_59, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 59,"amdgpu_cdna"); -DEF_REGISTER(vgpr60, Arch_amdgpu_cdna | VGPR | BITS_32 | 60,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_60, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 60,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_60, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 60,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_60, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 60,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_60, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 60,"amdgpu_cdna"); -DEF_REGISTER(vgpr61, Arch_amdgpu_cdna | VGPR | BITS_32 | 61,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_61, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 61,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_61, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 61,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_61, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 61,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_61, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 61,"amdgpu_cdna"); -DEF_REGISTER(vgpr62, Arch_amdgpu_cdna | VGPR | BITS_32 | 62,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_62, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 62,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_62, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 62,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_62, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 62,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_62, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 62,"amdgpu_cdna"); -DEF_REGISTER(vgpr63, Arch_amdgpu_cdna | VGPR | BITS_32 | 63,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_63, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 63,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_63, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 63,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_63, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 63,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_63, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 63,"amdgpu_cdna"); -DEF_REGISTER(vgpr64, Arch_amdgpu_cdna | VGPR | BITS_32 | 64,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_64, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 64,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_64, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 64,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_64, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 64,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_64, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 64,"amdgpu_cdna"); -DEF_REGISTER(vgpr65, Arch_amdgpu_cdna | VGPR | BITS_32 | 65,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_65, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 65,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_65, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 65,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_65, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 65,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_65, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 65,"amdgpu_cdna"); -DEF_REGISTER(vgpr66, Arch_amdgpu_cdna | VGPR | BITS_32 | 66,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_66, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 66,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_66, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 66,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_66, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 66,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_66, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 66,"amdgpu_cdna"); -DEF_REGISTER(vgpr67, Arch_amdgpu_cdna | VGPR | BITS_32 | 67,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_67, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 67,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_67, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 67,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_67, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 67,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_67, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 67,"amdgpu_cdna"); -DEF_REGISTER(vgpr68, Arch_amdgpu_cdna | VGPR | BITS_32 | 68,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_68, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 68,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_68, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 68,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_68, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 68,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_68, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 68,"amdgpu_cdna"); -DEF_REGISTER(vgpr69, Arch_amdgpu_cdna | VGPR | BITS_32 | 69,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_69, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 69,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_69, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 69,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_69, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 69,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_69, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 69,"amdgpu_cdna"); -DEF_REGISTER(vgpr70, Arch_amdgpu_cdna | VGPR | BITS_32 | 70,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_70, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 70,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_70, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 70,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_70, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 70,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_70, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 70,"amdgpu_cdna"); -DEF_REGISTER(vgpr71, Arch_amdgpu_cdna | VGPR | BITS_32 | 71,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_71, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 71,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_71, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 71,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_71, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 71,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_71, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 71,"amdgpu_cdna"); -DEF_REGISTER(vgpr72, Arch_amdgpu_cdna | VGPR | BITS_32 | 72,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_72, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 72,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_72, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 72,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_72, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 72,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_72, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 72,"amdgpu_cdna"); -DEF_REGISTER(vgpr73, Arch_amdgpu_cdna | VGPR | BITS_32 | 73,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_73, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 73,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_73, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 73,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_73, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 73,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_73, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 73,"amdgpu_cdna"); -DEF_REGISTER(vgpr74, Arch_amdgpu_cdna | VGPR | BITS_32 | 74,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_74, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 74,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_74, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 74,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_74, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 74,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_74, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 74,"amdgpu_cdna"); -DEF_REGISTER(vgpr75, Arch_amdgpu_cdna | VGPR | BITS_32 | 75,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_75, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 75,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_75, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 75,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_75, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 75,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_75, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 75,"amdgpu_cdna"); -DEF_REGISTER(vgpr76, Arch_amdgpu_cdna | VGPR | BITS_32 | 76,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_76, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 76,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_76, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 76,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_76, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 76,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_76, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 76,"amdgpu_cdna"); -DEF_REGISTER(vgpr77, Arch_amdgpu_cdna | VGPR | BITS_32 | 77,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_77, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 77,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_77, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 77,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_77, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 77,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_77, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 77,"amdgpu_cdna"); -DEF_REGISTER(vgpr78, Arch_amdgpu_cdna | VGPR | BITS_32 | 78,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_78, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 78,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_78, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 78,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_78, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 78,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_78, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 78,"amdgpu_cdna"); -DEF_REGISTER(vgpr79, Arch_amdgpu_cdna | VGPR | BITS_32 | 79,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_79, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 79,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_79, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 79,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_79, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 79,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_79, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 79,"amdgpu_cdna"); -DEF_REGISTER(vgpr80, Arch_amdgpu_cdna | VGPR | BITS_32 | 80,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_80, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 80,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_80, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 80,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_80, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 80,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_80, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 80,"amdgpu_cdna"); -DEF_REGISTER(vgpr81, Arch_amdgpu_cdna | VGPR | BITS_32 | 81,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_81, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 81,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_81, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 81,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_81, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 81,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_81, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 81,"amdgpu_cdna"); -DEF_REGISTER(vgpr82, Arch_amdgpu_cdna | VGPR | BITS_32 | 82,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_82, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 82,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_82, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 82,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_82, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 82,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_82, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 82,"amdgpu_cdna"); -DEF_REGISTER(vgpr83, Arch_amdgpu_cdna | VGPR | BITS_32 | 83,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_83, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 83,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_83, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 83,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_83, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 83,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_83, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 83,"amdgpu_cdna"); -DEF_REGISTER(vgpr84, Arch_amdgpu_cdna | VGPR | BITS_32 | 84,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_84, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 84,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_84, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 84,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_84, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 84,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_84, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 84,"amdgpu_cdna"); -DEF_REGISTER(vgpr85, Arch_amdgpu_cdna | VGPR | BITS_32 | 85,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_85, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 85,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_85, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 85,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_85, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 85,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_85, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 85,"amdgpu_cdna"); -DEF_REGISTER(vgpr86, Arch_amdgpu_cdna | VGPR | BITS_32 | 86,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_86, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 86,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_86, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 86,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_86, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 86,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_86, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 86,"amdgpu_cdna"); -DEF_REGISTER(vgpr87, Arch_amdgpu_cdna | VGPR | BITS_32 | 87,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_87, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 87,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_87, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 87,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_87, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 87,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_87, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 87,"amdgpu_cdna"); -DEF_REGISTER(vgpr88, Arch_amdgpu_cdna | VGPR | BITS_32 | 88,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_88, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 88,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_88, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 88,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_88, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 88,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_88, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 88,"amdgpu_cdna"); -DEF_REGISTER(vgpr89, Arch_amdgpu_cdna | VGPR | BITS_32 | 89,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_89, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 89,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_89, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 89,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_89, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 89,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_89, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 89,"amdgpu_cdna"); -DEF_REGISTER(vgpr90, Arch_amdgpu_cdna | VGPR | BITS_32 | 90,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_90, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 90,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_90, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 90,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_90, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 90,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_90, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 90,"amdgpu_cdna"); -DEF_REGISTER(vgpr91, Arch_amdgpu_cdna | VGPR | BITS_32 | 91,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_91, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 91,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_91, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 91,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_91, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 91,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_91, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 91,"amdgpu_cdna"); -DEF_REGISTER(vgpr92, Arch_amdgpu_cdna | VGPR | BITS_32 | 92,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_92, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 92,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_92, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 92,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_92, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 92,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_92, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 92,"amdgpu_cdna"); -DEF_REGISTER(vgpr93, Arch_amdgpu_cdna | VGPR | BITS_32 | 93,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_93, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 93,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_93, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 93,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_93, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 93,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_93, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 93,"amdgpu_cdna"); -DEF_REGISTER(vgpr94, Arch_amdgpu_cdna | VGPR | BITS_32 | 94,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_94, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 94,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_94, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 94,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_94, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 94,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_94, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 94,"amdgpu_cdna"); -DEF_REGISTER(vgpr95, Arch_amdgpu_cdna | VGPR | BITS_32 | 95,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_95, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 95,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_95, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 95,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_95, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 95,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_95, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 95,"amdgpu_cdna"); -DEF_REGISTER(vgpr96, Arch_amdgpu_cdna | VGPR | BITS_32 | 96,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_96, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 96,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_96, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 96,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_96, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 96,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_96, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 96,"amdgpu_cdna"); -DEF_REGISTER(vgpr97, Arch_amdgpu_cdna | VGPR | BITS_32 | 97,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_97, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 97,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_97, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 97,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_97, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 97,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_97, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 97,"amdgpu_cdna"); -DEF_REGISTER(vgpr98, Arch_amdgpu_cdna | VGPR | BITS_32 | 98,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_98, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 98,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_98, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 98,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_98, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 98,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_98, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 98,"amdgpu_cdna"); -DEF_REGISTER(vgpr99, Arch_amdgpu_cdna | VGPR | BITS_32 | 99,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_99, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 99,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_99, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 99,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_99, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 99,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_99, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 99,"amdgpu_cdna"); -DEF_REGISTER(vgpr100, Arch_amdgpu_cdna | VGPR | BITS_32 | 100,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_100, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 100,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_100, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 100,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_100, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 100,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_100, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 100,"amdgpu_cdna"); -DEF_REGISTER(vgpr101, Arch_amdgpu_cdna | VGPR | BITS_32 | 101,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_101, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 101,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_101, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 101,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_101, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 101,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_101, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 101,"amdgpu_cdna"); -DEF_REGISTER(vgpr102, Arch_amdgpu_cdna | VGPR | BITS_32 | 102,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_102, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 102,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_102, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 102,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_102, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 102,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_102, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 102,"amdgpu_cdna"); -DEF_REGISTER(vgpr103, Arch_amdgpu_cdna | VGPR | BITS_32 | 103,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_103, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 103,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_103, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 103,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_103, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 103,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_103, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 103,"amdgpu_cdna"); -DEF_REGISTER(vgpr104, Arch_amdgpu_cdna | VGPR | BITS_32 | 104,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_104, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 104,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_104, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 104,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_104, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 104,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_104, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 104,"amdgpu_cdna"); -DEF_REGISTER(vgpr105, Arch_amdgpu_cdna | VGPR | BITS_32 | 105,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_105, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 105,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_105, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 105,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_105, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 105,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_105, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 105,"amdgpu_cdna"); -DEF_REGISTER(vgpr106, Arch_amdgpu_cdna | VGPR | BITS_32 | 106,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_106, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 106,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_106, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 106,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_106, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 106,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_106, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 106,"amdgpu_cdna"); -DEF_REGISTER(vgpr107, Arch_amdgpu_cdna | VGPR | BITS_32 | 107,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_107, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 107,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_107, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 107,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_107, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 107,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_107, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 107,"amdgpu_cdna"); -DEF_REGISTER(vgpr108, Arch_amdgpu_cdna | VGPR | BITS_32 | 108,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_108, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 108,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_108, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 108,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_108, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 108,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_108, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 108,"amdgpu_cdna"); -DEF_REGISTER(vgpr109, Arch_amdgpu_cdna | VGPR | BITS_32 | 109,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_109, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 109,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_109, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 109,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_109, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 109,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_109, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 109,"amdgpu_cdna"); -DEF_REGISTER(vgpr110, Arch_amdgpu_cdna | VGPR | BITS_32 | 110,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_110, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 110,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_110, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 110,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_110, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 110,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_110, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 110,"amdgpu_cdna"); -DEF_REGISTER(vgpr111, Arch_amdgpu_cdna | VGPR | BITS_32 | 111,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_111, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 111,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_111, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 111,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_111, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 111,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_111, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 111,"amdgpu_cdna"); -DEF_REGISTER(vgpr112, Arch_amdgpu_cdna | VGPR | BITS_32 | 112,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_112, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 112,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_112, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 112,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_112, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 112,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_112, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 112,"amdgpu_cdna"); -DEF_REGISTER(vgpr113, Arch_amdgpu_cdna | VGPR | BITS_32 | 113,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_113, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 113,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_113, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 113,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_113, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 113,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_113, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 113,"amdgpu_cdna"); -DEF_REGISTER(vgpr114, Arch_amdgpu_cdna | VGPR | BITS_32 | 114,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_114, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 114,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_114, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 114,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_114, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 114,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_114, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 114,"amdgpu_cdna"); -DEF_REGISTER(vgpr115, Arch_amdgpu_cdna | VGPR | BITS_32 | 115,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_115, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 115,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_115, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 115,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_115, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 115,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_115, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 115,"amdgpu_cdna"); -DEF_REGISTER(vgpr116, Arch_amdgpu_cdna | VGPR | BITS_32 | 116,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_116, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 116,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_116, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 116,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_116, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 116,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_116, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 116,"amdgpu_cdna"); -DEF_REGISTER(vgpr117, Arch_amdgpu_cdna | VGPR | BITS_32 | 117,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_117, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 117,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_117, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 117,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_117, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 117,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_117, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 117,"amdgpu_cdna"); -DEF_REGISTER(vgpr118, Arch_amdgpu_cdna | VGPR | BITS_32 | 118,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_118, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 118,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_118, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 118,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_118, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 118,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_118, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 118,"amdgpu_cdna"); -DEF_REGISTER(vgpr119, Arch_amdgpu_cdna | VGPR | BITS_32 | 119,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_119, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 119,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_119, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 119,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_119, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 119,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_119, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 119,"amdgpu_cdna"); -DEF_REGISTER(vgpr120, Arch_amdgpu_cdna | VGPR | BITS_32 | 120,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_120, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 120,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_120, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 120,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_120, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 120,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_120, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 120,"amdgpu_cdna"); -DEF_REGISTER(vgpr121, Arch_amdgpu_cdna | VGPR | BITS_32 | 121,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_121, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 121,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_121, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 121,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_121, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 121,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_121, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 121,"amdgpu_cdna"); -DEF_REGISTER(vgpr122, Arch_amdgpu_cdna | VGPR | BITS_32 | 122,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_122, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 122,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_122, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 122,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_122, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 122,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_122, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 122,"amdgpu_cdna"); -DEF_REGISTER(vgpr123, Arch_amdgpu_cdna | VGPR | BITS_32 | 123,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_123, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 123,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_123, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 123,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_123, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 123,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_123, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 123,"amdgpu_cdna"); -DEF_REGISTER(vgpr124, Arch_amdgpu_cdna | VGPR | BITS_32 | 124,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_124, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 124,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_124, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 124,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_124, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 124,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_124, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 124,"amdgpu_cdna"); -DEF_REGISTER(vgpr125, Arch_amdgpu_cdna | VGPR | BITS_32 | 125,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_125, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 125,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_125, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 125,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_125, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 125,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_125, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 125,"amdgpu_cdna"); -DEF_REGISTER(vgpr126, Arch_amdgpu_cdna | VGPR | BITS_32 | 126,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_126, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 126,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_126, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 126,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_126, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 126,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_126, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 126,"amdgpu_cdna"); -DEF_REGISTER(vgpr127, Arch_amdgpu_cdna | VGPR | BITS_32 | 127,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_127, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 127,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_127, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 127,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_127, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 127,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_127, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 127,"amdgpu_cdna"); -DEF_REGISTER(vgpr128, Arch_amdgpu_cdna | VGPR | BITS_32 | 128,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_128, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 128,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_128, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 128,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_128, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 128,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_128, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 128,"amdgpu_cdna"); -DEF_REGISTER(vgpr129, Arch_amdgpu_cdna | VGPR | BITS_32 | 129,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_129, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 129,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_129, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 129,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_129, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 129,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_129, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 129,"amdgpu_cdna"); -DEF_REGISTER(vgpr130, Arch_amdgpu_cdna | VGPR | BITS_32 | 130,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_130, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 130,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_130, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 130,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_130, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 130,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_130, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 130,"amdgpu_cdna"); -DEF_REGISTER(vgpr131, Arch_amdgpu_cdna | VGPR | BITS_32 | 131,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_131, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 131,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_131, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 131,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_131, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 131,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_131, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 131,"amdgpu_cdna"); -DEF_REGISTER(vgpr132, Arch_amdgpu_cdna | VGPR | BITS_32 | 132,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_132, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 132,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_132, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 132,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_132, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 132,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_132, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 132,"amdgpu_cdna"); -DEF_REGISTER(vgpr133, Arch_amdgpu_cdna | VGPR | BITS_32 | 133,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_133, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 133,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_133, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 133,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_133, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 133,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_133, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 133,"amdgpu_cdna"); -DEF_REGISTER(vgpr134, Arch_amdgpu_cdna | VGPR | BITS_32 | 134,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_134, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 134,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_134, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 134,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_134, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 134,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_134, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 134,"amdgpu_cdna"); -DEF_REGISTER(vgpr135, Arch_amdgpu_cdna | VGPR | BITS_32 | 135,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_135, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 135,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_135, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 135,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_135, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 135,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_135, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 135,"amdgpu_cdna"); -DEF_REGISTER(vgpr136, Arch_amdgpu_cdna | VGPR | BITS_32 | 136,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_136, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 136,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_136, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 136,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_136, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 136,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_136, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 136,"amdgpu_cdna"); -DEF_REGISTER(vgpr137, Arch_amdgpu_cdna | VGPR | BITS_32 | 137,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_137, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 137,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_137, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 137,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_137, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 137,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_137, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 137,"amdgpu_cdna"); -DEF_REGISTER(vgpr138, Arch_amdgpu_cdna | VGPR | BITS_32 | 138,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_138, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 138,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_138, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 138,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_138, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 138,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_138, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 138,"amdgpu_cdna"); -DEF_REGISTER(vgpr139, Arch_amdgpu_cdna | VGPR | BITS_32 | 139,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_139, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 139,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_139, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 139,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_139, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 139,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_139, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 139,"amdgpu_cdna"); -DEF_REGISTER(vgpr140, Arch_amdgpu_cdna | VGPR | BITS_32 | 140,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_140, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 140,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_140, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 140,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_140, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 140,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_140, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 140,"amdgpu_cdna"); -DEF_REGISTER(vgpr141, Arch_amdgpu_cdna | VGPR | BITS_32 | 141,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_141, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 141,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_141, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 141,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_141, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 141,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_141, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 141,"amdgpu_cdna"); -DEF_REGISTER(vgpr142, Arch_amdgpu_cdna | VGPR | BITS_32 | 142,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_142, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 142,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_142, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 142,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_142, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 142,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_142, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 142,"amdgpu_cdna"); -DEF_REGISTER(vgpr143, Arch_amdgpu_cdna | VGPR | BITS_32 | 143,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_143, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 143,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_143, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 143,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_143, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 143,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_143, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 143,"amdgpu_cdna"); -DEF_REGISTER(vgpr144, Arch_amdgpu_cdna | VGPR | BITS_32 | 144,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_144, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 144,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_144, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 144,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_144, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 144,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_144, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 144,"amdgpu_cdna"); -DEF_REGISTER(vgpr145, Arch_amdgpu_cdna | VGPR | BITS_32 | 145,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_145, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 145,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_145, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 145,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_145, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 145,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_145, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 145,"amdgpu_cdna"); -DEF_REGISTER(vgpr146, Arch_amdgpu_cdna | VGPR | BITS_32 | 146,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_146, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 146,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_146, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 146,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_146, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 146,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_146, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 146,"amdgpu_cdna"); -DEF_REGISTER(vgpr147, Arch_amdgpu_cdna | VGPR | BITS_32 | 147,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_147, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 147,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_147, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 147,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_147, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 147,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_147, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 147,"amdgpu_cdna"); -DEF_REGISTER(vgpr148, Arch_amdgpu_cdna | VGPR | BITS_32 | 148,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_148, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 148,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_148, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 148,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_148, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 148,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_148, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 148,"amdgpu_cdna"); -DEF_REGISTER(vgpr149, Arch_amdgpu_cdna | VGPR | BITS_32 | 149,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_149, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 149,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_149, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 149,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_149, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 149,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_149, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 149,"amdgpu_cdna"); -DEF_REGISTER(vgpr150, Arch_amdgpu_cdna | VGPR | BITS_32 | 150,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_150, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 150,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_150, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 150,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_150, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 150,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_150, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 150,"amdgpu_cdna"); -DEF_REGISTER(vgpr151, Arch_amdgpu_cdna | VGPR | BITS_32 | 151,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_151, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 151,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_151, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 151,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_151, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 151,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_151, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 151,"amdgpu_cdna"); -DEF_REGISTER(vgpr152, Arch_amdgpu_cdna | VGPR | BITS_32 | 152,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_152, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 152,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_152, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 152,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_152, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 152,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_152, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 152,"amdgpu_cdna"); -DEF_REGISTER(vgpr153, Arch_amdgpu_cdna | VGPR | BITS_32 | 153,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_153, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 153,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_153, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 153,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_153, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 153,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_153, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 153,"amdgpu_cdna"); -DEF_REGISTER(vgpr154, Arch_amdgpu_cdna | VGPR | BITS_32 | 154,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_154, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 154,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_154, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 154,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_154, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 154,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_154, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 154,"amdgpu_cdna"); -DEF_REGISTER(vgpr155, Arch_amdgpu_cdna | VGPR | BITS_32 | 155,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_155, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 155,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_155, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 155,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_155, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 155,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_155, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 155,"amdgpu_cdna"); -DEF_REGISTER(vgpr156, Arch_amdgpu_cdna | VGPR | BITS_32 | 156,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_156, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 156,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_156, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 156,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_156, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 156,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_156, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 156,"amdgpu_cdna"); -DEF_REGISTER(vgpr157, Arch_amdgpu_cdna | VGPR | BITS_32 | 157,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_157, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 157,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_157, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 157,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_157, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 157,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_157, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 157,"amdgpu_cdna"); -DEF_REGISTER(vgpr158, Arch_amdgpu_cdna | VGPR | BITS_32 | 158,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_158, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 158,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_158, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 158,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_158, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 158,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_158, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 158,"amdgpu_cdna"); -DEF_REGISTER(vgpr159, Arch_amdgpu_cdna | VGPR | BITS_32 | 159,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_159, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 159,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_159, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 159,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_159, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 159,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_159, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 159,"amdgpu_cdna"); -DEF_REGISTER(vgpr160, Arch_amdgpu_cdna | VGPR | BITS_32 | 160,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_160, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 160,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_160, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 160,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_160, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 160,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_160, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 160,"amdgpu_cdna"); -DEF_REGISTER(vgpr161, Arch_amdgpu_cdna | VGPR | BITS_32 | 161,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_161, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 161,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_161, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 161,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_161, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 161,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_161, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 161,"amdgpu_cdna"); -DEF_REGISTER(vgpr162, Arch_amdgpu_cdna | VGPR | BITS_32 | 162,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_162, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 162,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_162, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 162,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_162, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 162,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_162, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 162,"amdgpu_cdna"); -DEF_REGISTER(vgpr163, Arch_amdgpu_cdna | VGPR | BITS_32 | 163,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_163, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 163,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_163, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 163,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_163, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 163,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_163, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 163,"amdgpu_cdna"); -DEF_REGISTER(vgpr164, Arch_amdgpu_cdna | VGPR | BITS_32 | 164,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_164, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 164,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_164, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 164,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_164, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 164,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_164, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 164,"amdgpu_cdna"); -DEF_REGISTER(vgpr165, Arch_amdgpu_cdna | VGPR | BITS_32 | 165,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_165, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 165,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_165, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 165,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_165, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 165,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_165, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 165,"amdgpu_cdna"); -DEF_REGISTER(vgpr166, Arch_amdgpu_cdna | VGPR | BITS_32 | 166,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_166, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 166,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_166, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 166,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_166, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 166,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_166, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 166,"amdgpu_cdna"); -DEF_REGISTER(vgpr167, Arch_amdgpu_cdna | VGPR | BITS_32 | 167,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_167, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 167,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_167, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 167,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_167, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 167,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_167, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 167,"amdgpu_cdna"); -DEF_REGISTER(vgpr168, Arch_amdgpu_cdna | VGPR | BITS_32 | 168,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_168, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 168,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_168, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 168,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_168, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 168,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_168, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 168,"amdgpu_cdna"); -DEF_REGISTER(vgpr169, Arch_amdgpu_cdna | VGPR | BITS_32 | 169,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_169, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 169,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_169, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 169,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_169, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 169,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_169, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 169,"amdgpu_cdna"); -DEF_REGISTER(vgpr170, Arch_amdgpu_cdna | VGPR | BITS_32 | 170,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_170, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 170,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_170, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 170,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_170, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 170,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_170, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 170,"amdgpu_cdna"); -DEF_REGISTER(vgpr171, Arch_amdgpu_cdna | VGPR | BITS_32 | 171,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_171, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 171,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_171, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 171,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_171, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 171,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_171, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 171,"amdgpu_cdna"); -DEF_REGISTER(vgpr172, Arch_amdgpu_cdna | VGPR | BITS_32 | 172,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_172, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 172,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_172, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 172,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_172, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 172,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_172, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 172,"amdgpu_cdna"); -DEF_REGISTER(vgpr173, Arch_amdgpu_cdna | VGPR | BITS_32 | 173,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_173, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 173,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_173, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 173,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_173, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 173,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_173, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 173,"amdgpu_cdna"); -DEF_REGISTER(vgpr174, Arch_amdgpu_cdna | VGPR | BITS_32 | 174,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_174, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 174,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_174, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 174,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_174, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 174,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_174, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 174,"amdgpu_cdna"); -DEF_REGISTER(vgpr175, Arch_amdgpu_cdna | VGPR | BITS_32 | 175,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_175, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 175,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_175, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 175,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_175, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 175,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_175, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 175,"amdgpu_cdna"); -DEF_REGISTER(vgpr176, Arch_amdgpu_cdna | VGPR | BITS_32 | 176,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_176, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 176,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_176, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 176,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_176, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 176,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_176, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 176,"amdgpu_cdna"); -DEF_REGISTER(vgpr177, Arch_amdgpu_cdna | VGPR | BITS_32 | 177,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_177, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 177,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_177, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 177,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_177, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 177,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_177, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 177,"amdgpu_cdna"); -DEF_REGISTER(vgpr178, Arch_amdgpu_cdna | VGPR | BITS_32 | 178,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_178, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 178,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_178, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 178,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_178, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 178,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_178, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 178,"amdgpu_cdna"); -DEF_REGISTER(vgpr179, Arch_amdgpu_cdna | VGPR | BITS_32 | 179,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_179, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 179,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_179, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 179,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_179, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 179,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_179, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 179,"amdgpu_cdna"); -DEF_REGISTER(vgpr180, Arch_amdgpu_cdna | VGPR | BITS_32 | 180,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_180, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 180,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_180, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 180,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_180, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 180,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_180, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 180,"amdgpu_cdna"); -DEF_REGISTER(vgpr181, Arch_amdgpu_cdna | VGPR | BITS_32 | 181,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_181, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 181,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_181, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 181,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_181, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 181,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_181, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 181,"amdgpu_cdna"); -DEF_REGISTER(vgpr182, Arch_amdgpu_cdna | VGPR | BITS_32 | 182,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_182, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 182,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_182, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 182,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_182, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 182,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_182, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 182,"amdgpu_cdna"); -DEF_REGISTER(vgpr183, Arch_amdgpu_cdna | VGPR | BITS_32 | 183,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_183, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 183,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_183, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 183,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_183, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 183,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_183, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 183,"amdgpu_cdna"); -DEF_REGISTER(vgpr184, Arch_amdgpu_cdna | VGPR | BITS_32 | 184,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_184, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 184,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_184, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 184,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_184, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 184,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_184, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 184,"amdgpu_cdna"); -DEF_REGISTER(vgpr185, Arch_amdgpu_cdna | VGPR | BITS_32 | 185,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_185, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 185,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_185, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 185,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_185, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 185,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_185, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 185,"amdgpu_cdna"); -DEF_REGISTER(vgpr186, Arch_amdgpu_cdna | VGPR | BITS_32 | 186,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_186, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 186,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_186, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 186,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_186, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 186,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_186, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 186,"amdgpu_cdna"); -DEF_REGISTER(vgpr187, Arch_amdgpu_cdna | VGPR | BITS_32 | 187,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_187, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 187,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_187, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 187,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_187, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 187,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_187, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 187,"amdgpu_cdna"); -DEF_REGISTER(vgpr188, Arch_amdgpu_cdna | VGPR | BITS_32 | 188,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_188, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 188,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_188, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 188,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_188, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 188,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_188, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 188,"amdgpu_cdna"); -DEF_REGISTER(vgpr189, Arch_amdgpu_cdna | VGPR | BITS_32 | 189,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_189, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 189,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_189, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 189,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_189, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 189,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_189, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 189,"amdgpu_cdna"); -DEF_REGISTER(vgpr190, Arch_amdgpu_cdna | VGPR | BITS_32 | 190,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_190, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 190,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_190, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 190,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_190, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 190,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_190, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 190,"amdgpu_cdna"); -DEF_REGISTER(vgpr191, Arch_amdgpu_cdna | VGPR | BITS_32 | 191,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_191, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 191,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_191, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 191,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_191, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 191,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_191, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 191,"amdgpu_cdna"); -DEF_REGISTER(vgpr192, Arch_amdgpu_cdna | VGPR | BITS_32 | 192,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_192, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 192,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_192, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 192,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_192, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 192,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_192, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 192,"amdgpu_cdna"); -DEF_REGISTER(vgpr193, Arch_amdgpu_cdna | VGPR | BITS_32 | 193,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_193, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 193,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_193, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 193,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_193, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 193,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_193, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 193,"amdgpu_cdna"); -DEF_REGISTER(vgpr194, Arch_amdgpu_cdna | VGPR | BITS_32 | 194,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_194, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 194,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_194, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 194,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_194, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 194,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_194, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 194,"amdgpu_cdna"); -DEF_REGISTER(vgpr195, Arch_amdgpu_cdna | VGPR | BITS_32 | 195,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_195, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 195,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_195, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 195,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_195, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 195,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_195, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 195,"amdgpu_cdna"); -DEF_REGISTER(vgpr196, Arch_amdgpu_cdna | VGPR | BITS_32 | 196,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_196, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 196,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_196, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 196,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_196, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 196,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_196, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 196,"amdgpu_cdna"); -DEF_REGISTER(vgpr197, Arch_amdgpu_cdna | VGPR | BITS_32 | 197,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_197, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 197,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_197, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 197,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_197, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 197,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_197, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 197,"amdgpu_cdna"); -DEF_REGISTER(vgpr198, Arch_amdgpu_cdna | VGPR | BITS_32 | 198,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_198, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 198,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_198, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 198,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_198, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 198,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_198, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 198,"amdgpu_cdna"); -DEF_REGISTER(vgpr199, Arch_amdgpu_cdna | VGPR | BITS_32 | 199,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_199, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 199,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_199, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 199,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_199, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 199,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_199, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 199,"amdgpu_cdna"); -DEF_REGISTER(vgpr200, Arch_amdgpu_cdna | VGPR | BITS_32 | 200,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_200, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 200,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_200, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 200,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_200, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 200,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_200, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 200,"amdgpu_cdna"); -DEF_REGISTER(vgpr201, Arch_amdgpu_cdna | VGPR | BITS_32 | 201,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_201, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 201,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_201, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 201,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_201, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 201,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_201, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 201,"amdgpu_cdna"); -DEF_REGISTER(vgpr202, Arch_amdgpu_cdna | VGPR | BITS_32 | 202,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_202, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 202,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_202, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 202,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_202, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 202,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_202, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 202,"amdgpu_cdna"); -DEF_REGISTER(vgpr203, Arch_amdgpu_cdna | VGPR | BITS_32 | 203,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_203, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 203,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_203, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 203,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_203, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 203,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_203, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 203,"amdgpu_cdna"); -DEF_REGISTER(vgpr204, Arch_amdgpu_cdna | VGPR | BITS_32 | 204,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_204, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 204,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_204, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 204,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_204, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 204,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_204, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 204,"amdgpu_cdna"); -DEF_REGISTER(vgpr205, Arch_amdgpu_cdna | VGPR | BITS_32 | 205,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_205, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 205,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_205, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 205,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_205, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 205,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_205, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 205,"amdgpu_cdna"); -DEF_REGISTER(vgpr206, Arch_amdgpu_cdna | VGPR | BITS_32 | 206,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_206, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 206,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_206, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 206,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_206, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 206,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_206, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 206,"amdgpu_cdna"); -DEF_REGISTER(vgpr207, Arch_amdgpu_cdna | VGPR | BITS_32 | 207,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_207, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 207,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_207, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 207,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_207, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 207,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_207, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 207,"amdgpu_cdna"); -DEF_REGISTER(vgpr208, Arch_amdgpu_cdna | VGPR | BITS_32 | 208,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_208, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 208,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_208, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 208,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_208, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 208,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_208, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 208,"amdgpu_cdna"); -DEF_REGISTER(vgpr209, Arch_amdgpu_cdna | VGPR | BITS_32 | 209,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_209, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 209,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_209, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 209,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_209, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 209,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_209, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 209,"amdgpu_cdna"); -DEF_REGISTER(vgpr210, Arch_amdgpu_cdna | VGPR | BITS_32 | 210,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_210, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 210,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_210, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 210,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_210, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 210,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_210, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 210,"amdgpu_cdna"); -DEF_REGISTER(vgpr211, Arch_amdgpu_cdna | VGPR | BITS_32 | 211,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_211, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 211,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_211, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 211,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_211, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 211,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_211, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 211,"amdgpu_cdna"); -DEF_REGISTER(vgpr212, Arch_amdgpu_cdna | VGPR | BITS_32 | 212,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_212, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 212,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_212, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 212,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_212, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 212,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_212, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 212,"amdgpu_cdna"); -DEF_REGISTER(vgpr213, Arch_amdgpu_cdna | VGPR | BITS_32 | 213,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_213, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 213,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_213, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 213,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_213, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 213,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_213, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 213,"amdgpu_cdna"); -DEF_REGISTER(vgpr214, Arch_amdgpu_cdna | VGPR | BITS_32 | 214,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_214, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 214,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_214, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 214,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_214, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 214,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_214, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 214,"amdgpu_cdna"); -DEF_REGISTER(vgpr215, Arch_amdgpu_cdna | VGPR | BITS_32 | 215,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_215, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 215,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_215, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 215,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_215, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 215,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_215, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 215,"amdgpu_cdna"); -DEF_REGISTER(vgpr216, Arch_amdgpu_cdna | VGPR | BITS_32 | 216,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_216, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 216,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_216, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 216,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_216, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 216,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_216, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 216,"amdgpu_cdna"); -DEF_REGISTER(vgpr217, Arch_amdgpu_cdna | VGPR | BITS_32 | 217,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_217, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 217,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_217, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 217,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_217, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 217,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_217, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 217,"amdgpu_cdna"); -DEF_REGISTER(vgpr218, Arch_amdgpu_cdna | VGPR | BITS_32 | 218,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_218, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 218,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_218, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 218,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_218, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 218,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_218, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 218,"amdgpu_cdna"); -DEF_REGISTER(vgpr219, Arch_amdgpu_cdna | VGPR | BITS_32 | 219,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_219, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 219,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_219, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 219,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_219, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 219,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_219, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 219,"amdgpu_cdna"); -DEF_REGISTER(vgpr220, Arch_amdgpu_cdna | VGPR | BITS_32 | 220,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_220, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 220,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_220, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 220,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_220, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 220,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_220, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 220,"amdgpu_cdna"); -DEF_REGISTER(vgpr221, Arch_amdgpu_cdna | VGPR | BITS_32 | 221,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_221, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 221,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_221, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 221,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_221, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 221,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_221, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 221,"amdgpu_cdna"); -DEF_REGISTER(vgpr222, Arch_amdgpu_cdna | VGPR | BITS_32 | 222,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_222, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 222,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_222, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 222,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_222, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 222,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_222, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 222,"amdgpu_cdna"); -DEF_REGISTER(vgpr223, Arch_amdgpu_cdna | VGPR | BITS_32 | 223,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_223, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 223,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_223, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 223,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_223, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 223,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_223, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 223,"amdgpu_cdna"); -DEF_REGISTER(vgpr224, Arch_amdgpu_cdna | VGPR | BITS_32 | 224,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_224, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 224,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_224, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 224,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_224, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 224,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_224, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 224,"amdgpu_cdna"); -DEF_REGISTER(vgpr225, Arch_amdgpu_cdna | VGPR | BITS_32 | 225,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_225, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 225,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_225, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 225,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_225, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 225,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_225, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 225,"amdgpu_cdna"); -DEF_REGISTER(vgpr226, Arch_amdgpu_cdna | VGPR | BITS_32 | 226,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_226, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 226,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_226, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 226,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_226, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 226,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_226, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 226,"amdgpu_cdna"); -DEF_REGISTER(vgpr227, Arch_amdgpu_cdna | VGPR | BITS_32 | 227,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_227, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 227,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_227, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 227,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_227, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 227,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_227, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 227,"amdgpu_cdna"); -DEF_REGISTER(vgpr228, Arch_amdgpu_cdna | VGPR | BITS_32 | 228,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_228, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 228,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_228, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 228,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_228, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 228,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_228, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 228,"amdgpu_cdna"); -DEF_REGISTER(vgpr229, Arch_amdgpu_cdna | VGPR | BITS_32 | 229,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_229, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 229,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_229, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 229,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_229, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 229,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_229, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 229,"amdgpu_cdna"); -DEF_REGISTER(vgpr230, Arch_amdgpu_cdna | VGPR | BITS_32 | 230,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_230, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 230,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_230, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 230,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_230, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 230,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_230, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 230,"amdgpu_cdna"); -DEF_REGISTER(vgpr231, Arch_amdgpu_cdna | VGPR | BITS_32 | 231,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_231, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 231,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_231, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 231,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_231, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 231,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_231, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 231,"amdgpu_cdna"); -DEF_REGISTER(vgpr232, Arch_amdgpu_cdna | VGPR | BITS_32 | 232,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_232, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 232,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_232, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 232,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_232, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 232,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_232, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 232,"amdgpu_cdna"); -DEF_REGISTER(vgpr233, Arch_amdgpu_cdna | VGPR | BITS_32 | 233,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_233, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 233,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_233, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 233,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_233, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 233,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_233, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 233,"amdgpu_cdna"); -DEF_REGISTER(vgpr234, Arch_amdgpu_cdna | VGPR | BITS_32 | 234,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_234, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 234,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_234, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 234,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_234, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 234,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_234, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 234,"amdgpu_cdna"); -DEF_REGISTER(vgpr235, Arch_amdgpu_cdna | VGPR | BITS_32 | 235,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_235, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 235,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_235, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 235,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_235, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 235,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_235, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 235,"amdgpu_cdna"); -DEF_REGISTER(vgpr236, Arch_amdgpu_cdna | VGPR | BITS_32 | 236,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_236, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 236,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_236, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 236,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_236, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 236,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_236, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 236,"amdgpu_cdna"); -DEF_REGISTER(vgpr237, Arch_amdgpu_cdna | VGPR | BITS_32 | 237,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_237, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 237,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_237, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 237,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_237, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 237,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_237, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 237,"amdgpu_cdna"); -DEF_REGISTER(vgpr238, Arch_amdgpu_cdna | VGPR | BITS_32 | 238,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_238, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 238,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_238, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 238,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_238, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 238,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_238, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 238,"amdgpu_cdna"); -DEF_REGISTER(vgpr239, Arch_amdgpu_cdna | VGPR | BITS_32 | 239,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_239, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 239,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_239, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 239,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_239, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 239,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_239, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 239,"amdgpu_cdna"); -DEF_REGISTER(vgpr240, Arch_amdgpu_cdna | VGPR | BITS_32 | 240,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_240, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 240,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_240, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 240,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_240, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 240,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec16_240, Arch_amdgpu_cdna | VGPR_VEC16 | BITS_512 | 240,"amdgpu_cdna"); -DEF_REGISTER(vgpr241, Arch_amdgpu_cdna | VGPR | BITS_32 | 241,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_241, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 241,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_241, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 241,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_241, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 241,"amdgpu_cdna"); -DEF_REGISTER(vgpr242, Arch_amdgpu_cdna | VGPR | BITS_32 | 242,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_242, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 242,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_242, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 242,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_242, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 242,"amdgpu_cdna"); -DEF_REGISTER(vgpr243, Arch_amdgpu_cdna | VGPR | BITS_32 | 243,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_243, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 243,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_243, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 243,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_243, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 243,"amdgpu_cdna"); -DEF_REGISTER(vgpr244, Arch_amdgpu_cdna | VGPR | BITS_32 | 244,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_244, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 244,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_244, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 244,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_244, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 244,"amdgpu_cdna"); -DEF_REGISTER(vgpr245, Arch_amdgpu_cdna | VGPR | BITS_32 | 245,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_245, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 245,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_245, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 245,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_245, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 245,"amdgpu_cdna"); -DEF_REGISTER(vgpr246, Arch_amdgpu_cdna | VGPR | BITS_32 | 246,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_246, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 246,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_246, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 246,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_246, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 246,"amdgpu_cdna"); -DEF_REGISTER(vgpr247, Arch_amdgpu_cdna | VGPR | BITS_32 | 247,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_247, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 247,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_247, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 247,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_247, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 247,"amdgpu_cdna"); -DEF_REGISTER(vgpr248, Arch_amdgpu_cdna | VGPR | BITS_32 | 248,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_248, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 248,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_248, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 248,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec8_248, Arch_amdgpu_cdna | VGPR_VEC8 | BITS_256 | 248,"amdgpu_cdna"); -DEF_REGISTER(vgpr249, Arch_amdgpu_cdna | VGPR | BITS_32 | 249,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_249, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 249,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_249, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 249,"amdgpu_cdna"); -DEF_REGISTER(vgpr250, Arch_amdgpu_cdna | VGPR | BITS_32 | 250,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_250, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 250,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_250, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 250,"amdgpu_cdna"); -DEF_REGISTER(vgpr251, Arch_amdgpu_cdna | VGPR | BITS_32 | 251,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_251, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 251,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_251, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 251,"amdgpu_cdna"); -DEF_REGISTER(vgpr252, Arch_amdgpu_cdna | VGPR | BITS_32 | 252,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_252, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 252,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec4_252, Arch_amdgpu_cdna | VGPR_VEC4 | BITS_128 | 252,"amdgpu_cdna"); -DEF_REGISTER(vgpr253, Arch_amdgpu_cdna | VGPR | BITS_32 | 253,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_253, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 253,"amdgpu_cdna"); -DEF_REGISTER(vgpr254, Arch_amdgpu_cdna | VGPR | BITS_32 | 254,"amdgpu_cdna"); -DEF_REGISTER(vgpr_vec2_254, Arch_amdgpu_cdna | VGPR_VEC2 | BITS_64 | 254,"amdgpu_cdna"); -DEF_REGISTER(vgpr255, Arch_amdgpu_cdna | VGPR | BITS_32 | 255,"amdgpu_cdna"); -#endif //DYNINST_AMDGPU_CDNA_SYS_REGS_H diff --git a/common/h/dyn_regs.h b/common/h/dyn_regs.h index f4e1cfe06f..d1463d88a3 100644 --- a/common/h/dyn_regs.h +++ b/common/h/dyn_regs.h @@ -1614,7 +1614,7 @@ namespace Dyninst const signed int BITS_256 = 0x00000F00; const signed int BITS_512 = 0x00001000; -#include "amdgpu_vega_sys_regs.h" +#include "AMDGPU/vega/amdgpu_vega_sys_regs.h" } namespace amdgpu_cdna2{ diff --git a/common/h/entryIDs.h b/common/h/entryIDs.h index da6d489c55..fcbc935355 100644 --- a/common/h/entryIDs.h +++ b/common/h/entryIDs.h @@ -3007,8 +3007,7 @@ power_op_dxex, aarch64_op_zip1_advsimd, aarch64_op_zip2_advsimd, amdgpu_op_sop1_nop, -#include "amdgpu_op_table.h" -#include "amdgpu_cdna_op_table.h" +#include "AMDGPU/vega/amdgpu_vega_op_table.h" #include "AMDGPU/cdna2/amdgpu_cdna2_op_table.h" cuda_op_general, cuda_op_call, diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h deleted file mode 100644 index 90eb1cb315..0000000000 --- a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_op_table.h +++ /dev/null @@ -1,1135 +0,0 @@ -amdgpu_cdna2_op_BUFFER_ATOMIC_ADD, -amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F32, -amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_F64, -amdgpu_cdna2_op_BUFFER_ATOMIC_ADD_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_AND, -amdgpu_cdna2_op_BUFFER_ATOMIC_AND_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP, -amdgpu_cdna2_op_BUFFER_ATOMIC_CMPSWAP_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_DEC, -amdgpu_cdna2_op_BUFFER_ATOMIC_DEC_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_INC, -amdgpu_cdna2_op_BUFFER_ATOMIC_INC_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_MAX_F64, -amdgpu_cdna2_op_BUFFER_ATOMIC_MIN_F64, -amdgpu_cdna2_op_BUFFER_ATOMIC_OR, -amdgpu_cdna2_op_BUFFER_ATOMIC_OR_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_PK_ADD_F16, -amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX, -amdgpu_cdna2_op_BUFFER_ATOMIC_SMAX_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN, -amdgpu_cdna2_op_BUFFER_ATOMIC_SMIN_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_SUB, -amdgpu_cdna2_op_BUFFER_ATOMIC_SUB_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP, -amdgpu_cdna2_op_BUFFER_ATOMIC_SWAP_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX, -amdgpu_cdna2_op_BUFFER_ATOMIC_UMAX_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN, -amdgpu_cdna2_op_BUFFER_ATOMIC_UMIN_X2, -amdgpu_cdna2_op_BUFFER_ATOMIC_XOR, -amdgpu_cdna2_op_BUFFER_ATOMIC_XOR_X2, -amdgpu_cdna2_op_BUFFER_INVL2, -amdgpu_cdna2_op_BUFFER_LOAD_DWORD, -amdgpu_cdna2_op_BUFFER_LOAD_DWORDX2, -amdgpu_cdna2_op_BUFFER_LOAD_DWORDX3, -amdgpu_cdna2_op_BUFFER_LOAD_DWORDX4, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_HI_X, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_X, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XY, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZ, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_D16_XYZW, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_X, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XY, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZ, -amdgpu_cdna2_op_BUFFER_LOAD_FORMAT_XYZW, -amdgpu_cdna2_op_BUFFER_LOAD_SBYTE, -amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16, -amdgpu_cdna2_op_BUFFER_LOAD_SBYTE_D16_HI, -amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16, -amdgpu_cdna2_op_BUFFER_LOAD_SHORT_D16_HI, -amdgpu_cdna2_op_BUFFER_LOAD_SSHORT, -amdgpu_cdna2_op_BUFFER_LOAD_UBYTE, -amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16, -amdgpu_cdna2_op_BUFFER_LOAD_UBYTE_D16_HI, -amdgpu_cdna2_op_BUFFER_LOAD_USHORT, -amdgpu_cdna2_op_BUFFER_STORE_BYTE, -amdgpu_cdna2_op_BUFFER_STORE_BYTE_D16_HI, -amdgpu_cdna2_op_BUFFER_STORE_DWORD, -amdgpu_cdna2_op_BUFFER_STORE_DWORDX2, -amdgpu_cdna2_op_BUFFER_STORE_DWORDX3, -amdgpu_cdna2_op_BUFFER_STORE_DWORDX4, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_HI_X, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_X, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XY, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZ, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_D16_XYZW, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_X, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XY, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZ, -amdgpu_cdna2_op_BUFFER_STORE_FORMAT_XYZW, -amdgpu_cdna2_op_BUFFER_STORE_LDS_DWORD, -amdgpu_cdna2_op_BUFFER_STORE_SHORT, -amdgpu_cdna2_op_BUFFER_STORE_SHORT_D16_HI, -amdgpu_cdna2_op_BUFFER_WBINVL1, -amdgpu_cdna2_op_BUFFER_WBINVL1_VOL, -amdgpu_cdna2_op_BUFFER_WBL2, -amdgpu_cdna2_op_DS_ADD_F32, -amdgpu_cdna2_op_DS_ADD_F64, -amdgpu_cdna2_op_DS_ADD_RTN_F32, -amdgpu_cdna2_op_DS_ADD_RTN_F64, -amdgpu_cdna2_op_DS_ADD_RTN_U32, -amdgpu_cdna2_op_DS_ADD_RTN_U64, -amdgpu_cdna2_op_DS_ADD_U32, -amdgpu_cdna2_op_DS_ADD_U64, -amdgpu_cdna2_op_DS_AND_B32, -amdgpu_cdna2_op_DS_AND_B64, -amdgpu_cdna2_op_DS_AND_RTN_B32, -amdgpu_cdna2_op_DS_AND_RTN_B64, -amdgpu_cdna2_op_DS_APPEND, -amdgpu_cdna2_op_DS_BPERMUTE_B32, -amdgpu_cdna2_op_DS_CMPST_B32, -amdgpu_cdna2_op_DS_CMPST_B64, -amdgpu_cdna2_op_DS_CMPST_F32, -amdgpu_cdna2_op_DS_CMPST_F64, -amdgpu_cdna2_op_DS_CMPST_RTN_B32, -amdgpu_cdna2_op_DS_CMPST_RTN_B64, -amdgpu_cdna2_op_DS_CMPST_RTN_F32, -amdgpu_cdna2_op_DS_CMPST_RTN_F64, -amdgpu_cdna2_op_DS_CONDXCHG32_RTN_B64, -amdgpu_cdna2_op_DS_CONSUME, -amdgpu_cdna2_op_DS_DEC_RTN_U32, -amdgpu_cdna2_op_DS_DEC_RTN_U64, -amdgpu_cdna2_op_DS_DEC_U32, -amdgpu_cdna2_op_DS_DEC_U64, -amdgpu_cdna2_op_DS_GWS_BARRIER, -amdgpu_cdna2_op_DS_GWS_INIT, -amdgpu_cdna2_op_DS_GWS_SEMA_BR, -amdgpu_cdna2_op_DS_GWS_SEMA_P, -amdgpu_cdna2_op_DS_GWS_SEMA_RELEASE_ALL, -amdgpu_cdna2_op_DS_GWS_SEMA_V, -amdgpu_cdna2_op_DS_INC_RTN_U32, -amdgpu_cdna2_op_DS_INC_RTN_U64, -amdgpu_cdna2_op_DS_INC_U32, -amdgpu_cdna2_op_DS_INC_U64, -amdgpu_cdna2_op_DS_MAX_F32, -amdgpu_cdna2_op_DS_MAX_F64, -amdgpu_cdna2_op_DS_MAX_I32, -amdgpu_cdna2_op_DS_MAX_I64, -amdgpu_cdna2_op_DS_MAX_RTN_F32, -amdgpu_cdna2_op_DS_MAX_RTN_F64, -amdgpu_cdna2_op_DS_MAX_RTN_I32, -amdgpu_cdna2_op_DS_MAX_RTN_I64, -amdgpu_cdna2_op_DS_MAX_RTN_U32, -amdgpu_cdna2_op_DS_MAX_RTN_U64, -amdgpu_cdna2_op_DS_MAX_U32, -amdgpu_cdna2_op_DS_MAX_U64, -amdgpu_cdna2_op_DS_MIN_F32, -amdgpu_cdna2_op_DS_MIN_F64, -amdgpu_cdna2_op_DS_MIN_I32, -amdgpu_cdna2_op_DS_MIN_I64, -amdgpu_cdna2_op_DS_MIN_RTN_F32, -amdgpu_cdna2_op_DS_MIN_RTN_F64, -amdgpu_cdna2_op_DS_MIN_RTN_I32, -amdgpu_cdna2_op_DS_MIN_RTN_I64, -amdgpu_cdna2_op_DS_MIN_RTN_U32, -amdgpu_cdna2_op_DS_MIN_RTN_U64, -amdgpu_cdna2_op_DS_MIN_U32, -amdgpu_cdna2_op_DS_MIN_U64, -amdgpu_cdna2_op_DS_MSKOR_B32, -amdgpu_cdna2_op_DS_MSKOR_B64, -amdgpu_cdna2_op_DS_MSKOR_RTN_B32, -amdgpu_cdna2_op_DS_MSKOR_RTN_B64, -amdgpu_cdna2_op_DS_NOP, -amdgpu_cdna2_op_DS_OR_B32, -amdgpu_cdna2_op_DS_OR_B64, -amdgpu_cdna2_op_DS_OR_RTN_B32, -amdgpu_cdna2_op_DS_OR_RTN_B64, -amdgpu_cdna2_op_DS_PERMUTE_B32, -amdgpu_cdna2_op_DS_READ2ST64_B32, -amdgpu_cdna2_op_DS_READ2ST64_B64, -amdgpu_cdna2_op_DS_READ2_B32, -amdgpu_cdna2_op_DS_READ2_B64, -amdgpu_cdna2_op_DS_READ_ADDTID_B32, -amdgpu_cdna2_op_DS_READ_B128, -amdgpu_cdna2_op_DS_READ_B32, -amdgpu_cdna2_op_DS_READ_B64, -amdgpu_cdna2_op_DS_READ_B96, -amdgpu_cdna2_op_DS_READ_I16, -amdgpu_cdna2_op_DS_READ_I8, -amdgpu_cdna2_op_DS_READ_I8_D16, -amdgpu_cdna2_op_DS_READ_I8_D16_HI, -amdgpu_cdna2_op_DS_READ_U16, -amdgpu_cdna2_op_DS_READ_U16_D16, -amdgpu_cdna2_op_DS_READ_U16_D16_HI, -amdgpu_cdna2_op_DS_READ_U8, -amdgpu_cdna2_op_DS_READ_U8_D16, -amdgpu_cdna2_op_DS_READ_U8_D16_HI, -amdgpu_cdna2_op_DS_RSUB_RTN_U32, -amdgpu_cdna2_op_DS_RSUB_RTN_U64, -amdgpu_cdna2_op_DS_RSUB_U32, -amdgpu_cdna2_op_DS_RSUB_U64, -amdgpu_cdna2_op_DS_SUB_RTN_U32, -amdgpu_cdna2_op_DS_SUB_RTN_U64, -amdgpu_cdna2_op_DS_SUB_U32, -amdgpu_cdna2_op_DS_SUB_U64, -amdgpu_cdna2_op_DS_SWIZZLE_B32, -amdgpu_cdna2_op_DS_WRAP_RTN_B32, -amdgpu_cdna2_op_DS_WRITE2ST64_B32, -amdgpu_cdna2_op_DS_WRITE2ST64_B64, -amdgpu_cdna2_op_DS_WRITE2_B32, -amdgpu_cdna2_op_DS_WRITE2_B64, -amdgpu_cdna2_op_DS_WRITE_ADDTID_B32, -amdgpu_cdna2_op_DS_WRITE_B128, -amdgpu_cdna2_op_DS_WRITE_B16, -amdgpu_cdna2_op_DS_WRITE_B16_D16_HI, -amdgpu_cdna2_op_DS_WRITE_B32, -amdgpu_cdna2_op_DS_WRITE_B64, -amdgpu_cdna2_op_DS_WRITE_B8, -amdgpu_cdna2_op_DS_WRITE_B8_D16_HI, -amdgpu_cdna2_op_DS_WRITE_B96, -amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B32, -amdgpu_cdna2_op_DS_WRXCHG2ST64_RTN_B64, -amdgpu_cdna2_op_DS_WRXCHG2_RTN_B32, -amdgpu_cdna2_op_DS_WRXCHG2_RTN_B64, -amdgpu_cdna2_op_DS_WRXCHG_RTN_B32, -amdgpu_cdna2_op_DS_WRXCHG_RTN_B64, -amdgpu_cdna2_op_DS_XOR_B32, -amdgpu_cdna2_op_DS_XOR_B64, -amdgpu_cdna2_op_DS_XOR_RTN_B32, -amdgpu_cdna2_op_DS_XOR_RTN_B64, -amdgpu_cdna2_op_FLAT_ATOMIC_ADD, -amdgpu_cdna2_op_FLAT_ATOMIC_ADD_F64, -amdgpu_cdna2_op_FLAT_ATOMIC_ADD_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_AND, -amdgpu_cdna2_op_FLAT_ATOMIC_AND_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP, -amdgpu_cdna2_op_FLAT_ATOMIC_CMPSWAP_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_DEC, -amdgpu_cdna2_op_FLAT_ATOMIC_DEC_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_INC, -amdgpu_cdna2_op_FLAT_ATOMIC_INC_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_MAX_F64, -amdgpu_cdna2_op_FLAT_ATOMIC_MIN_F64, -amdgpu_cdna2_op_FLAT_ATOMIC_OR, -amdgpu_cdna2_op_FLAT_ATOMIC_OR_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_SMAX, -amdgpu_cdna2_op_FLAT_ATOMIC_SMAX_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_SMIN, -amdgpu_cdna2_op_FLAT_ATOMIC_SMIN_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_SUB, -amdgpu_cdna2_op_FLAT_ATOMIC_SUB_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_SWAP, -amdgpu_cdna2_op_FLAT_ATOMIC_SWAP_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_UMAX, -amdgpu_cdna2_op_FLAT_ATOMIC_UMAX_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_UMIN, -amdgpu_cdna2_op_FLAT_ATOMIC_UMIN_X2, -amdgpu_cdna2_op_FLAT_ATOMIC_XOR, -amdgpu_cdna2_op_FLAT_ATOMIC_XOR_X2, -amdgpu_cdna2_op_FLAT_LOAD_DWORD, -amdgpu_cdna2_op_FLAT_LOAD_DWORDX2, -amdgpu_cdna2_op_FLAT_LOAD_DWORDX3, -amdgpu_cdna2_op_FLAT_LOAD_DWORDX4, -amdgpu_cdna2_op_FLAT_LOAD_SBYTE, -amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16, -amdgpu_cdna2_op_FLAT_LOAD_SBYTE_D16_HI, -amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16, -amdgpu_cdna2_op_FLAT_LOAD_SHORT_D16_HI, -amdgpu_cdna2_op_FLAT_LOAD_SSHORT, -amdgpu_cdna2_op_FLAT_LOAD_UBYTE, -amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16, -amdgpu_cdna2_op_FLAT_LOAD_UBYTE_D16_HI, -amdgpu_cdna2_op_FLAT_LOAD_USHORT, -amdgpu_cdna2_op_FLAT_STORE_BYTE, -amdgpu_cdna2_op_FLAT_STORE_BYTE_D16_HI, -amdgpu_cdna2_op_FLAT_STORE_DWORD, -amdgpu_cdna2_op_FLAT_STORE_DWORDX2, -amdgpu_cdna2_op_FLAT_STORE_DWORDX3, -amdgpu_cdna2_op_FLAT_STORE_DWORDX4, -amdgpu_cdna2_op_FLAT_STORE_SHORT, -amdgpu_cdna2_op_FLAT_STORE_SHORT_D16_HI, -amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD, -amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F32, -amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_F64, -amdgpu_cdna2_op_GLOBAL_ATOMIC_ADD_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_AND, -amdgpu_cdna2_op_GLOBAL_ATOMIC_AND_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP, -amdgpu_cdna2_op_GLOBAL_ATOMIC_CMPSWAP_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC, -amdgpu_cdna2_op_GLOBAL_ATOMIC_DEC_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_INC, -amdgpu_cdna2_op_GLOBAL_ATOMIC_INC_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_MAX_F64, -amdgpu_cdna2_op_GLOBAL_ATOMIC_MIN_F64, -amdgpu_cdna2_op_GLOBAL_ATOMIC_OR, -amdgpu_cdna2_op_GLOBAL_ATOMIC_OR_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_PK_ADD_F16, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SMAX_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SMIN_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SUB_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP, -amdgpu_cdna2_op_GLOBAL_ATOMIC_SWAP_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX, -amdgpu_cdna2_op_GLOBAL_ATOMIC_UMAX_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN, -amdgpu_cdna2_op_GLOBAL_ATOMIC_UMIN_X2, -amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR, -amdgpu_cdna2_op_GLOBAL_ATOMIC_XOR_X2, -amdgpu_cdna2_op_GLOBAL_LOAD_DWORD, -amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX2, -amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX3, -amdgpu_cdna2_op_GLOBAL_LOAD_DWORDX4, -amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE, -amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16, -amdgpu_cdna2_op_GLOBAL_LOAD_SBYTE_D16_HI, -amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16, -amdgpu_cdna2_op_GLOBAL_LOAD_SHORT_D16_HI, -amdgpu_cdna2_op_GLOBAL_LOAD_SSHORT, -amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE, -amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16, -amdgpu_cdna2_op_GLOBAL_LOAD_UBYTE_D16_HI, -amdgpu_cdna2_op_GLOBAL_LOAD_USHORT, -amdgpu_cdna2_op_GLOBAL_STORE_BYTE, -amdgpu_cdna2_op_GLOBAL_STORE_BYTE_D16_HI, -amdgpu_cdna2_op_GLOBAL_STORE_DWORD, -amdgpu_cdna2_op_GLOBAL_STORE_DWORDX2, -amdgpu_cdna2_op_GLOBAL_STORE_DWORDX3, -amdgpu_cdna2_op_GLOBAL_STORE_DWORDX4, -amdgpu_cdna2_op_GLOBAL_STORE_SHORT, -amdgpu_cdna2_op_GLOBAL_STORE_SHORT_D16_HI, -amdgpu_cdna2_op_IMAGE_ATOMIC_ADD, -amdgpu_cdna2_op_IMAGE_ATOMIC_AND, -amdgpu_cdna2_op_IMAGE_ATOMIC_CMPSWAP, -amdgpu_cdna2_op_IMAGE_ATOMIC_DEC, -amdgpu_cdna2_op_IMAGE_ATOMIC_INC, -amdgpu_cdna2_op_IMAGE_ATOMIC_OR, -amdgpu_cdna2_op_IMAGE_ATOMIC_SMAX, -amdgpu_cdna2_op_IMAGE_ATOMIC_SMIN, -amdgpu_cdna2_op_IMAGE_ATOMIC_SUB, -amdgpu_cdna2_op_IMAGE_ATOMIC_SWAP, -amdgpu_cdna2_op_IMAGE_ATOMIC_UMAX, -amdgpu_cdna2_op_IMAGE_ATOMIC_UMIN, -amdgpu_cdna2_op_IMAGE_ATOMIC_XOR, -amdgpu_cdna2_op_IMAGE_GET_RESINFO, -amdgpu_cdna2_op_IMAGE_LOAD, -amdgpu_cdna2_op_IMAGE_LOAD_MIP, -amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK, -amdgpu_cdna2_op_IMAGE_LOAD_MIP_PCK_SGN, -amdgpu_cdna2_op_IMAGE_LOAD_PCK, -amdgpu_cdna2_op_IMAGE_LOAD_PCK_SGN, -amdgpu_cdna2_op_IMAGE_SAMPLE, -amdgpu_cdna2_op_IMAGE_STORE, -amdgpu_cdna2_op_IMAGE_STORE_MIP, -amdgpu_cdna2_op_IMAGE_STORE_MIP_PCK, -amdgpu_cdna2_op_IMAGE_STORE_PCK, -amdgpu_cdna2_op_SCRATCH_LOAD_DWORD, -amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX2, -amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX3, -amdgpu_cdna2_op_SCRATCH_LOAD_DWORDX4, -amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE, -amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16, -amdgpu_cdna2_op_SCRATCH_LOAD_SBYTE_D16_HI, -amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16, -amdgpu_cdna2_op_SCRATCH_LOAD_SHORT_D16_HI, -amdgpu_cdna2_op_SCRATCH_LOAD_SSHORT, -amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE, -amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16, -amdgpu_cdna2_op_SCRATCH_LOAD_UBYTE_D16_HI, -amdgpu_cdna2_op_SCRATCH_LOAD_USHORT, -amdgpu_cdna2_op_SCRATCH_STORE_BYTE, -amdgpu_cdna2_op_SCRATCH_STORE_BYTE_D16_HI, -amdgpu_cdna2_op_SCRATCH_STORE_DWORD, -amdgpu_cdna2_op_SCRATCH_STORE_DWORDX2, -amdgpu_cdna2_op_SCRATCH_STORE_DWORDX3, -amdgpu_cdna2_op_SCRATCH_STORE_DWORDX4, -amdgpu_cdna2_op_SCRATCH_STORE_SHORT, -amdgpu_cdna2_op_SCRATCH_STORE_SHORT_D16_HI, -amdgpu_cdna2_op_S_ABSDIFF_I32, -amdgpu_cdna2_op_S_ABS_I32, -amdgpu_cdna2_op_S_ADDC_U32, -amdgpu_cdna2_op_S_ADDK_I32, -amdgpu_cdna2_op_S_ADD_I32, -amdgpu_cdna2_op_S_ADD_U32, -amdgpu_cdna2_op_S_ANDN1_SAVEEXEC_B64, -amdgpu_cdna2_op_S_ANDN1_WREXEC_B64, -amdgpu_cdna2_op_S_ANDN2_B32, -amdgpu_cdna2_op_S_ANDN2_B64, -amdgpu_cdna2_op_S_ANDN2_SAVEEXEC_B64, -amdgpu_cdna2_op_S_ANDN2_WREXEC_B64, -amdgpu_cdna2_op_S_AND_B32, -amdgpu_cdna2_op_S_AND_B64, -amdgpu_cdna2_op_S_AND_SAVEEXEC_B64, -amdgpu_cdna2_op_S_ASHR_I32, -amdgpu_cdna2_op_S_ASHR_I64, -amdgpu_cdna2_op_S_ATC_PROBE, -amdgpu_cdna2_op_S_ATC_PROBE_BUFFER, -amdgpu_cdna2_op_S_ATOMIC_ADD, -amdgpu_cdna2_op_S_ATOMIC_ADD_X2, -amdgpu_cdna2_op_S_ATOMIC_AND, -amdgpu_cdna2_op_S_ATOMIC_AND_X2, -amdgpu_cdna2_op_S_ATOMIC_CMPSWAP, -amdgpu_cdna2_op_S_ATOMIC_CMPSWAP_X2, -amdgpu_cdna2_op_S_ATOMIC_DEC, -amdgpu_cdna2_op_S_ATOMIC_DEC_X2, -amdgpu_cdna2_op_S_ATOMIC_INC, -amdgpu_cdna2_op_S_ATOMIC_INC_X2, -amdgpu_cdna2_op_S_ATOMIC_OR, -amdgpu_cdna2_op_S_ATOMIC_OR_X2, -amdgpu_cdna2_op_S_ATOMIC_SMAX, -amdgpu_cdna2_op_S_ATOMIC_SMAX_X2, -amdgpu_cdna2_op_S_ATOMIC_SMIN, -amdgpu_cdna2_op_S_ATOMIC_SMIN_X2, -amdgpu_cdna2_op_S_ATOMIC_SUB, -amdgpu_cdna2_op_S_ATOMIC_SUB_X2, -amdgpu_cdna2_op_S_ATOMIC_SWAP, -amdgpu_cdna2_op_S_ATOMIC_SWAP_X2, -amdgpu_cdna2_op_S_ATOMIC_UMAX, -amdgpu_cdna2_op_S_ATOMIC_UMAX_X2, -amdgpu_cdna2_op_S_ATOMIC_UMIN, -amdgpu_cdna2_op_S_ATOMIC_UMIN_X2, -amdgpu_cdna2_op_S_ATOMIC_XOR, -amdgpu_cdna2_op_S_ATOMIC_XOR_X2, -amdgpu_cdna2_op_S_BARRIER, -amdgpu_cdna2_op_S_BCNT0_I32_B32, -amdgpu_cdna2_op_S_BCNT0_I32_B64, -amdgpu_cdna2_op_S_BCNT1_I32_B32, -amdgpu_cdna2_op_S_BCNT1_I32_B64, -amdgpu_cdna2_op_S_BFE_I32, -amdgpu_cdna2_op_S_BFE_I64, -amdgpu_cdna2_op_S_BFE_U32, -amdgpu_cdna2_op_S_BFE_U64, -amdgpu_cdna2_op_S_BFM_B32, -amdgpu_cdna2_op_S_BFM_B64, -amdgpu_cdna2_op_S_BITCMP0_B32, -amdgpu_cdna2_op_S_BITCMP0_B64, -amdgpu_cdna2_op_S_BITCMP1_B32, -amdgpu_cdna2_op_S_BITCMP1_B64, -amdgpu_cdna2_op_S_BITREPLICATE_B64_B32, -amdgpu_cdna2_op_S_BITSET0_B32, -amdgpu_cdna2_op_S_BITSET0_B64, -amdgpu_cdna2_op_S_BITSET1_B32, -amdgpu_cdna2_op_S_BITSET1_B64, -amdgpu_cdna2_op_S_BRANCH, -amdgpu_cdna2_op_S_BREV_B32, -amdgpu_cdna2_op_S_BREV_B64, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_ADD_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_AND_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_CMPSWAP_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_DEC_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_INC_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_OR_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMAX_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SMIN_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SUB_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_SWAP_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMAX_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_UMIN_X2, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR, -amdgpu_cdna2_op_S_BUFFER_ATOMIC_XOR_X2, -amdgpu_cdna2_op_S_BUFFER_LOAD_DWORD, -amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX16, -amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX2, -amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX4, -amdgpu_cdna2_op_S_BUFFER_LOAD_DWORDX8, -amdgpu_cdna2_op_S_BUFFER_STORE_DWORD, -amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX2, -amdgpu_cdna2_op_S_BUFFER_STORE_DWORDX4, -amdgpu_cdna2_op_S_CALL_B64, -amdgpu_cdna2_op_S_CBRANCH_CDBGSYS, -amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_AND_USER, -amdgpu_cdna2_op_S_CBRANCH_CDBGSYS_OR_USER, -amdgpu_cdna2_op_S_CBRANCH_CDBGUSER, -amdgpu_cdna2_op_S_CBRANCH_EXECNZ, -amdgpu_cdna2_op_S_CBRANCH_EXECZ, -amdgpu_cdna2_op_S_CBRANCH_G_FORK, -amdgpu_cdna2_op_S_CBRANCH_I_FORK, -amdgpu_cdna2_op_S_CBRANCH_JOIN, -amdgpu_cdna2_op_S_CBRANCH_SCC0, -amdgpu_cdna2_op_S_CBRANCH_SCC1, -amdgpu_cdna2_op_S_CBRANCH_VCCNZ, -amdgpu_cdna2_op_S_CBRANCH_VCCZ, -amdgpu_cdna2_op_S_CMOVK_I32, -amdgpu_cdna2_op_S_CMOV_B32, -amdgpu_cdna2_op_S_CMOV_B64, -amdgpu_cdna2_op_S_CMPK_EQ_I32, -amdgpu_cdna2_op_S_CMPK_EQ_U32, -amdgpu_cdna2_op_S_CMPK_GE_I32, -amdgpu_cdna2_op_S_CMPK_GE_U32, -amdgpu_cdna2_op_S_CMPK_GT_I32, -amdgpu_cdna2_op_S_CMPK_GT_U32, -amdgpu_cdna2_op_S_CMPK_LE_I32, -amdgpu_cdna2_op_S_CMPK_LE_U32, -amdgpu_cdna2_op_S_CMPK_LG_I32, -amdgpu_cdna2_op_S_CMPK_LG_U32, -amdgpu_cdna2_op_S_CMPK_LT_I32, -amdgpu_cdna2_op_S_CMPK_LT_U32, -amdgpu_cdna2_op_S_CMP_EQ_I32, -amdgpu_cdna2_op_S_CMP_EQ_U32, -amdgpu_cdna2_op_S_CMP_EQ_U64, -amdgpu_cdna2_op_S_CMP_GE_I32, -amdgpu_cdna2_op_S_CMP_GE_U32, -amdgpu_cdna2_op_S_CMP_GT_I32, -amdgpu_cdna2_op_S_CMP_GT_U32, -amdgpu_cdna2_op_S_CMP_LE_I32, -amdgpu_cdna2_op_S_CMP_LE_U32, -amdgpu_cdna2_op_S_CMP_LG_I32, -amdgpu_cdna2_op_S_CMP_LG_U32, -amdgpu_cdna2_op_S_CMP_LG_U64, -amdgpu_cdna2_op_S_CMP_LT_I32, -amdgpu_cdna2_op_S_CMP_LT_U32, -amdgpu_cdna2_op_S_CSELECT_B32, -amdgpu_cdna2_op_S_CSELECT_B64, -amdgpu_cdna2_op_S_DCACHE_DISCARD, -amdgpu_cdna2_op_S_DCACHE_DISCARD_X2, -amdgpu_cdna2_op_S_DCACHE_INV, -amdgpu_cdna2_op_S_DCACHE_INV_VOL, -amdgpu_cdna2_op_S_DCACHE_WB, -amdgpu_cdna2_op_S_DCACHE_WB_VOL, -amdgpu_cdna2_op_S_DECPERFLEVEL, -amdgpu_cdna2_op_S_ENDPGM, -amdgpu_cdna2_op_S_ENDPGM_ORDERED_PS_DONE, -amdgpu_cdna2_op_S_ENDPGM_SAVED, -amdgpu_cdna2_op_S_FF0_I32_B32, -amdgpu_cdna2_op_S_FF0_I32_B64, -amdgpu_cdna2_op_S_FF1_I32_B32, -amdgpu_cdna2_op_S_FF1_I32_B64, -amdgpu_cdna2_op_S_FLBIT_I32, -amdgpu_cdna2_op_S_FLBIT_I32_B32, -amdgpu_cdna2_op_S_FLBIT_I32_B64, -amdgpu_cdna2_op_S_FLBIT_I32_I64, -amdgpu_cdna2_op_S_GETPC_B64, -amdgpu_cdna2_op_S_GETREG_B32, -amdgpu_cdna2_op_S_ICACHE_INV, -amdgpu_cdna2_op_S_INCPERFLEVEL, -amdgpu_cdna2_op_S_LOAD_DWORD, -amdgpu_cdna2_op_S_LOAD_DWORDX16, -amdgpu_cdna2_op_S_LOAD_DWORDX2, -amdgpu_cdna2_op_S_LOAD_DWORDX4, -amdgpu_cdna2_op_S_LOAD_DWORDX8, -amdgpu_cdna2_op_S_LSHL1_ADD_U32, -amdgpu_cdna2_op_S_LSHL2_ADD_U32, -amdgpu_cdna2_op_S_LSHL3_ADD_U32, -amdgpu_cdna2_op_S_LSHL4_ADD_U32, -amdgpu_cdna2_op_S_LSHL_B32, -amdgpu_cdna2_op_S_LSHL_B64, -amdgpu_cdna2_op_S_LSHR_B32, -amdgpu_cdna2_op_S_LSHR_B64, -amdgpu_cdna2_op_S_MAX_I32, -amdgpu_cdna2_op_S_MAX_U32, -amdgpu_cdna2_op_S_MEMREALTIME, -amdgpu_cdna2_op_S_MEMTIME, -amdgpu_cdna2_op_S_MIN_I32, -amdgpu_cdna2_op_S_MIN_U32, -amdgpu_cdna2_op_S_MOVK_I32, -amdgpu_cdna2_op_S_MOVRELD_B32, -amdgpu_cdna2_op_S_MOVRELD_B64, -amdgpu_cdna2_op_S_MOVRELS_B32, -amdgpu_cdna2_op_S_MOVRELS_B64, -amdgpu_cdna2_op_S_MOV_B32, -amdgpu_cdna2_op_S_MOV_B64, -amdgpu_cdna2_op_S_MULK_I32, -amdgpu_cdna2_op_S_MUL_HI_I32, -amdgpu_cdna2_op_S_MUL_HI_U32, -amdgpu_cdna2_op_S_MUL_I32, -amdgpu_cdna2_op_S_NAND_B32, -amdgpu_cdna2_op_S_NAND_B64, -amdgpu_cdna2_op_S_NAND_SAVEEXEC_B64, -amdgpu_cdna2_op_S_NOP, -amdgpu_cdna2_op_S_NOR_B32, -amdgpu_cdna2_op_S_NOR_B64, -amdgpu_cdna2_op_S_NOR_SAVEEXEC_B64, -amdgpu_cdna2_op_S_NOT_B32, -amdgpu_cdna2_op_S_NOT_B64, -amdgpu_cdna2_op_S_ORN1_SAVEEXEC_B64, -amdgpu_cdna2_op_S_ORN2_B32, -amdgpu_cdna2_op_S_ORN2_B64, -amdgpu_cdna2_op_S_ORN2_SAVEEXEC_B64, -amdgpu_cdna2_op_S_OR_B32, -amdgpu_cdna2_op_S_OR_B64, -amdgpu_cdna2_op_S_OR_SAVEEXEC_B64, -amdgpu_cdna2_op_S_PACK_HH_B32_B16, -amdgpu_cdna2_op_S_PACK_LH_B32_B16, -amdgpu_cdna2_op_S_PACK_LL_B32_B16, -amdgpu_cdna2_op_S_QUADMASK_B32, -amdgpu_cdna2_op_S_QUADMASK_B64, -amdgpu_cdna2_op_S_RFE_B64, -amdgpu_cdna2_op_S_RFE_RESTORE_B64, -amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORD, -amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX2, -amdgpu_cdna2_op_S_SCRATCH_LOAD_DWORDX4, -amdgpu_cdna2_op_S_SCRATCH_STORE_DWORD, -amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX2, -amdgpu_cdna2_op_S_SCRATCH_STORE_DWORDX4, -amdgpu_cdna2_op_S_SENDMSG, -amdgpu_cdna2_op_S_SENDMSGHALT, -amdgpu_cdna2_op_S_SETHALT, -amdgpu_cdna2_op_S_SETKILL, -amdgpu_cdna2_op_S_SETPC_B64, -amdgpu_cdna2_op_S_SETPRIO, -amdgpu_cdna2_op_S_SETREG_B32, -amdgpu_cdna2_op_S_SETREG_IMM32_B32, -amdgpu_cdna2_op_S_SETVSKIP, -amdgpu_cdna2_op_S_SET_GPR_IDX_IDX, -amdgpu_cdna2_op_S_SET_GPR_IDX_MODE, -amdgpu_cdna2_op_S_SET_GPR_IDX_OFF, -amdgpu_cdna2_op_S_SET_GPR_IDX_ON, -amdgpu_cdna2_op_S_SEXT_I32_I16, -amdgpu_cdna2_op_S_SEXT_I32_I8, -amdgpu_cdna2_op_S_SLEEP, -amdgpu_cdna2_op_S_STORE_DWORD, -amdgpu_cdna2_op_S_STORE_DWORDX2, -amdgpu_cdna2_op_S_STORE_DWORDX4, -amdgpu_cdna2_op_S_SUBB_U32, -amdgpu_cdna2_op_S_SUB_I32, -amdgpu_cdna2_op_S_SUB_U32, -amdgpu_cdna2_op_S_SWAPPC_B64, -amdgpu_cdna2_op_S_TRAP, -amdgpu_cdna2_op_S_TTRACEDATA, -amdgpu_cdna2_op_S_WAITCNT, -amdgpu_cdna2_op_S_WAKEUP, -amdgpu_cdna2_op_S_WQM_B32, -amdgpu_cdna2_op_S_WQM_B64, -amdgpu_cdna2_op_S_XNOR_B32, -amdgpu_cdna2_op_S_XNOR_B64, -amdgpu_cdna2_op_S_XNOR_SAVEEXEC_B64, -amdgpu_cdna2_op_S_XOR_B32, -amdgpu_cdna2_op_S_XOR_B64, -amdgpu_cdna2_op_S_XOR_SAVEEXEC_B64, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_X, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XY, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZ, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_D16_XYZW, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_X, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XY, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZ, -amdgpu_cdna2_op_TBUFFER_LOAD_FORMAT_XYZW, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_X, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XY, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZ, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_D16_XYZW, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_X, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XY, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZ, -amdgpu_cdna2_op_TBUFFER_STORE_FORMAT_XYZW, -amdgpu_cdna2_op_V_ACCVGPR_MOV_B32, -amdgpu_cdna2_op_V_ACCVGPR_READ, -amdgpu_cdna2_op_V_ACCVGPR_WRITE, -amdgpu_cdna2_op_V_ADD3_U32, -amdgpu_cdna2_op_V_ADDC_CO_U32, -amdgpu_cdna2_op_V_ADD_CO_U32, -amdgpu_cdna2_op_V_ADD_F16, -amdgpu_cdna2_op_V_ADD_F32, -amdgpu_cdna2_op_V_ADD_F64, -amdgpu_cdna2_op_V_ADD_I16, -amdgpu_cdna2_op_V_ADD_I32, -amdgpu_cdna2_op_V_ADD_LSHL_U32, -amdgpu_cdna2_op_V_ADD_U16, -amdgpu_cdna2_op_V_ADD_U32, -amdgpu_cdna2_op_V_ALIGNBIT_B32, -amdgpu_cdna2_op_V_ALIGNBYTE_B32, -amdgpu_cdna2_op_V_AND_B32, -amdgpu_cdna2_op_V_AND_OR_B32, -amdgpu_cdna2_op_V_ASHRREV_I16, -amdgpu_cdna2_op_V_ASHRREV_I32, -amdgpu_cdna2_op_V_ASHRREV_I64, -amdgpu_cdna2_op_V_BCNT_U32_B32, -amdgpu_cdna2_op_V_BFE_I32, -amdgpu_cdna2_op_V_BFE_U32, -amdgpu_cdna2_op_V_BFI_B32, -amdgpu_cdna2_op_V_BFM_B32, -amdgpu_cdna2_op_V_BFREV_B32, -amdgpu_cdna2_op_V_CEIL_F16, -amdgpu_cdna2_op_V_CEIL_F32, -amdgpu_cdna2_op_V_CEIL_F64, -amdgpu_cdna2_op_V_CLREXCP, -amdgpu_cdna2_op_V_CMPX_CLASS_F16, -amdgpu_cdna2_op_V_CMPX_CLASS_F32, -amdgpu_cdna2_op_V_CMPX_CLASS_F64, -amdgpu_cdna2_op_V_CMPX_EQ_F16, -amdgpu_cdna2_op_V_CMPX_EQ_F32, -amdgpu_cdna2_op_V_CMPX_EQ_F64, -amdgpu_cdna2_op_V_CMPX_EQ_I16, -amdgpu_cdna2_op_V_CMPX_EQ_I32, -amdgpu_cdna2_op_V_CMPX_EQ_I64, -amdgpu_cdna2_op_V_CMPX_EQ_U16, -amdgpu_cdna2_op_V_CMPX_EQ_U32, -amdgpu_cdna2_op_V_CMPX_EQ_U64, -amdgpu_cdna2_op_V_CMPX_F_F16, -amdgpu_cdna2_op_V_CMPX_F_F32, -amdgpu_cdna2_op_V_CMPX_F_F64, -amdgpu_cdna2_op_V_CMPX_F_I16, -amdgpu_cdna2_op_V_CMPX_F_I32, -amdgpu_cdna2_op_V_CMPX_F_I64, -amdgpu_cdna2_op_V_CMPX_F_U16, -amdgpu_cdna2_op_V_CMPX_F_U32, -amdgpu_cdna2_op_V_CMPX_F_U64, -amdgpu_cdna2_op_V_CMPX_GE_F16, -amdgpu_cdna2_op_V_CMPX_GE_F32, -amdgpu_cdna2_op_V_CMPX_GE_F64, -amdgpu_cdna2_op_V_CMPX_GE_I16, -amdgpu_cdna2_op_V_CMPX_GE_I32, -amdgpu_cdna2_op_V_CMPX_GE_I64, -amdgpu_cdna2_op_V_CMPX_GE_U16, -amdgpu_cdna2_op_V_CMPX_GE_U32, -amdgpu_cdna2_op_V_CMPX_GE_U64, -amdgpu_cdna2_op_V_CMPX_GT_F16, -amdgpu_cdna2_op_V_CMPX_GT_F32, -amdgpu_cdna2_op_V_CMPX_GT_F64, -amdgpu_cdna2_op_V_CMPX_GT_I16, -amdgpu_cdna2_op_V_CMPX_GT_I32, -amdgpu_cdna2_op_V_CMPX_GT_I64, -amdgpu_cdna2_op_V_CMPX_GT_U16, -amdgpu_cdna2_op_V_CMPX_GT_U32, -amdgpu_cdna2_op_V_CMPX_GT_U64, -amdgpu_cdna2_op_V_CMPX_LE_F16, -amdgpu_cdna2_op_V_CMPX_LE_F32, -amdgpu_cdna2_op_V_CMPX_LE_F64, -amdgpu_cdna2_op_V_CMPX_LE_I16, -amdgpu_cdna2_op_V_CMPX_LE_I32, -amdgpu_cdna2_op_V_CMPX_LE_I64, -amdgpu_cdna2_op_V_CMPX_LE_U16, -amdgpu_cdna2_op_V_CMPX_LE_U32, -amdgpu_cdna2_op_V_CMPX_LE_U64, -amdgpu_cdna2_op_V_CMPX_LG_F16, -amdgpu_cdna2_op_V_CMPX_LG_F32, -amdgpu_cdna2_op_V_CMPX_LG_F64, -amdgpu_cdna2_op_V_CMPX_LT_F16, -amdgpu_cdna2_op_V_CMPX_LT_F32, -amdgpu_cdna2_op_V_CMPX_LT_F64, -amdgpu_cdna2_op_V_CMPX_LT_I16, -amdgpu_cdna2_op_V_CMPX_LT_I32, -amdgpu_cdna2_op_V_CMPX_LT_I64, -amdgpu_cdna2_op_V_CMPX_LT_U16, -amdgpu_cdna2_op_V_CMPX_LT_U32, -amdgpu_cdna2_op_V_CMPX_LT_U64, -amdgpu_cdna2_op_V_CMPX_NEQ_F16, -amdgpu_cdna2_op_V_CMPX_NEQ_F32, -amdgpu_cdna2_op_V_CMPX_NEQ_F64, -amdgpu_cdna2_op_V_CMPX_NE_I16, -amdgpu_cdna2_op_V_CMPX_NE_I32, -amdgpu_cdna2_op_V_CMPX_NE_I64, -amdgpu_cdna2_op_V_CMPX_NE_U16, -amdgpu_cdna2_op_V_CMPX_NE_U32, -amdgpu_cdna2_op_V_CMPX_NE_U64, -amdgpu_cdna2_op_V_CMPX_NGE_F16, -amdgpu_cdna2_op_V_CMPX_NGE_F32, -amdgpu_cdna2_op_V_CMPX_NGE_F64, -amdgpu_cdna2_op_V_CMPX_NGT_F16, -amdgpu_cdna2_op_V_CMPX_NGT_F32, -amdgpu_cdna2_op_V_CMPX_NGT_F64, -amdgpu_cdna2_op_V_CMPX_NLE_F16, -amdgpu_cdna2_op_V_CMPX_NLE_F32, -amdgpu_cdna2_op_V_CMPX_NLE_F64, -amdgpu_cdna2_op_V_CMPX_NLG_F16, -amdgpu_cdna2_op_V_CMPX_NLG_F32, -amdgpu_cdna2_op_V_CMPX_NLG_F64, -amdgpu_cdna2_op_V_CMPX_NLT_F16, -amdgpu_cdna2_op_V_CMPX_NLT_F32, -amdgpu_cdna2_op_V_CMPX_NLT_F64, -amdgpu_cdna2_op_V_CMPX_O_F16, -amdgpu_cdna2_op_V_CMPX_O_F32, -amdgpu_cdna2_op_V_CMPX_O_F64, -amdgpu_cdna2_op_V_CMPX_TRU_F16, -amdgpu_cdna2_op_V_CMPX_TRU_F32, -amdgpu_cdna2_op_V_CMPX_TRU_F64, -amdgpu_cdna2_op_V_CMPX_T_I16, -amdgpu_cdna2_op_V_CMPX_T_I32, -amdgpu_cdna2_op_V_CMPX_T_I64, -amdgpu_cdna2_op_V_CMPX_T_U16, -amdgpu_cdna2_op_V_CMPX_T_U32, -amdgpu_cdna2_op_V_CMPX_T_U64, -amdgpu_cdna2_op_V_CMPX_U_F16, -amdgpu_cdna2_op_V_CMPX_U_F32, -amdgpu_cdna2_op_V_CMPX_U_F64, -amdgpu_cdna2_op_V_CMP_CLASS_F16, -amdgpu_cdna2_op_V_CMP_CLASS_F32, -amdgpu_cdna2_op_V_CMP_CLASS_F64, -amdgpu_cdna2_op_V_CMP_EQ_F16, -amdgpu_cdna2_op_V_CMP_EQ_F32, -amdgpu_cdna2_op_V_CMP_EQ_F64, -amdgpu_cdna2_op_V_CMP_EQ_I16, -amdgpu_cdna2_op_V_CMP_EQ_I32, -amdgpu_cdna2_op_V_CMP_EQ_I64, -amdgpu_cdna2_op_V_CMP_EQ_U16, -amdgpu_cdna2_op_V_CMP_EQ_U32, -amdgpu_cdna2_op_V_CMP_EQ_U64, -amdgpu_cdna2_op_V_CMP_F_F16, -amdgpu_cdna2_op_V_CMP_F_F32, -amdgpu_cdna2_op_V_CMP_F_F64, -amdgpu_cdna2_op_V_CMP_F_I16, -amdgpu_cdna2_op_V_CMP_F_I32, -amdgpu_cdna2_op_V_CMP_F_I64, -amdgpu_cdna2_op_V_CMP_F_U16, -amdgpu_cdna2_op_V_CMP_F_U32, -amdgpu_cdna2_op_V_CMP_F_U64, -amdgpu_cdna2_op_V_CMP_GE_F16, -amdgpu_cdna2_op_V_CMP_GE_F32, -amdgpu_cdna2_op_V_CMP_GE_F64, -amdgpu_cdna2_op_V_CMP_GE_I16, -amdgpu_cdna2_op_V_CMP_GE_I32, -amdgpu_cdna2_op_V_CMP_GE_I64, -amdgpu_cdna2_op_V_CMP_GE_U16, -amdgpu_cdna2_op_V_CMP_GE_U32, -amdgpu_cdna2_op_V_CMP_GE_U64, -amdgpu_cdna2_op_V_CMP_GT_F16, -amdgpu_cdna2_op_V_CMP_GT_F32, -amdgpu_cdna2_op_V_CMP_GT_F64, -amdgpu_cdna2_op_V_CMP_GT_I16, -amdgpu_cdna2_op_V_CMP_GT_I32, -amdgpu_cdna2_op_V_CMP_GT_I64, -amdgpu_cdna2_op_V_CMP_GT_U16, -amdgpu_cdna2_op_V_CMP_GT_U32, -amdgpu_cdna2_op_V_CMP_GT_U64, -amdgpu_cdna2_op_V_CMP_LE_F16, -amdgpu_cdna2_op_V_CMP_LE_F32, -amdgpu_cdna2_op_V_CMP_LE_F64, -amdgpu_cdna2_op_V_CMP_LE_I16, -amdgpu_cdna2_op_V_CMP_LE_I32, -amdgpu_cdna2_op_V_CMP_LE_I64, -amdgpu_cdna2_op_V_CMP_LE_U16, -amdgpu_cdna2_op_V_CMP_LE_U32, -amdgpu_cdna2_op_V_CMP_LE_U64, -amdgpu_cdna2_op_V_CMP_LG_F16, -amdgpu_cdna2_op_V_CMP_LG_F32, -amdgpu_cdna2_op_V_CMP_LG_F64, -amdgpu_cdna2_op_V_CMP_LT_F16, -amdgpu_cdna2_op_V_CMP_LT_F32, -amdgpu_cdna2_op_V_CMP_LT_F64, -amdgpu_cdna2_op_V_CMP_LT_I16, -amdgpu_cdna2_op_V_CMP_LT_I32, -amdgpu_cdna2_op_V_CMP_LT_I64, -amdgpu_cdna2_op_V_CMP_LT_U16, -amdgpu_cdna2_op_V_CMP_LT_U32, -amdgpu_cdna2_op_V_CMP_LT_U64, -amdgpu_cdna2_op_V_CMP_NEQ_F16, -amdgpu_cdna2_op_V_CMP_NEQ_F32, -amdgpu_cdna2_op_V_CMP_NEQ_F64, -amdgpu_cdna2_op_V_CMP_NE_I16, -amdgpu_cdna2_op_V_CMP_NE_I32, -amdgpu_cdna2_op_V_CMP_NE_I64, -amdgpu_cdna2_op_V_CMP_NE_U16, -amdgpu_cdna2_op_V_CMP_NE_U32, -amdgpu_cdna2_op_V_CMP_NE_U64, -amdgpu_cdna2_op_V_CMP_NGE_F16, -amdgpu_cdna2_op_V_CMP_NGE_F32, -amdgpu_cdna2_op_V_CMP_NGE_F64, -amdgpu_cdna2_op_V_CMP_NGT_F16, -amdgpu_cdna2_op_V_CMP_NGT_F32, -amdgpu_cdna2_op_V_CMP_NGT_F64, -amdgpu_cdna2_op_V_CMP_NLE_F16, -amdgpu_cdna2_op_V_CMP_NLE_F32, -amdgpu_cdna2_op_V_CMP_NLE_F64, -amdgpu_cdna2_op_V_CMP_NLG_F16, -amdgpu_cdna2_op_V_CMP_NLG_F32, -amdgpu_cdna2_op_V_CMP_NLG_F64, -amdgpu_cdna2_op_V_CMP_NLT_F16, -amdgpu_cdna2_op_V_CMP_NLT_F32, -amdgpu_cdna2_op_V_CMP_NLT_F64, -amdgpu_cdna2_op_V_CMP_O_F16, -amdgpu_cdna2_op_V_CMP_O_F32, -amdgpu_cdna2_op_V_CMP_O_F64, -amdgpu_cdna2_op_V_CMP_TRU_F16, -amdgpu_cdna2_op_V_CMP_TRU_F32, -amdgpu_cdna2_op_V_CMP_TRU_F64, -amdgpu_cdna2_op_V_CMP_T_I16, -amdgpu_cdna2_op_V_CMP_T_I32, -amdgpu_cdna2_op_V_CMP_T_I64, -amdgpu_cdna2_op_V_CMP_T_U16, -amdgpu_cdna2_op_V_CMP_T_U32, -amdgpu_cdna2_op_V_CMP_T_U64, -amdgpu_cdna2_op_V_CMP_U_F16, -amdgpu_cdna2_op_V_CMP_U_F32, -amdgpu_cdna2_op_V_CMP_U_F64, -amdgpu_cdna2_op_V_CNDMASK_B32, -amdgpu_cdna2_op_V_COS_F16, -amdgpu_cdna2_op_V_COS_F32, -amdgpu_cdna2_op_V_CUBEID_F32, -amdgpu_cdna2_op_V_CUBEMA_F32, -amdgpu_cdna2_op_V_CUBESC_F32, -amdgpu_cdna2_op_V_CUBETC_F32, -amdgpu_cdna2_op_V_CVT_F16_F32, -amdgpu_cdna2_op_V_CVT_F16_I16, -amdgpu_cdna2_op_V_CVT_F16_U16, -amdgpu_cdna2_op_V_CVT_F32_F16, -amdgpu_cdna2_op_V_CVT_F32_F64, -amdgpu_cdna2_op_V_CVT_F32_I32, -amdgpu_cdna2_op_V_CVT_F32_U32, -amdgpu_cdna2_op_V_CVT_F32_UBYTE0, -amdgpu_cdna2_op_V_CVT_F32_UBYTE1, -amdgpu_cdna2_op_V_CVT_F32_UBYTE2, -amdgpu_cdna2_op_V_CVT_F32_UBYTE3, -amdgpu_cdna2_op_V_CVT_F64_F32, -amdgpu_cdna2_op_V_CVT_F64_I32, -amdgpu_cdna2_op_V_CVT_F64_U32, -amdgpu_cdna2_op_V_CVT_FLR_I32_F32, -amdgpu_cdna2_op_V_CVT_I16_F16, -amdgpu_cdna2_op_V_CVT_I32_F32, -amdgpu_cdna2_op_V_CVT_I32_F64, -amdgpu_cdna2_op_V_CVT_NORM_I16_F16, -amdgpu_cdna2_op_V_CVT_NORM_U16_F16, -amdgpu_cdna2_op_V_CVT_OFF_F32_I4, -amdgpu_cdna2_op_V_CVT_PKACCUM_U8_F32, -amdgpu_cdna2_op_V_CVT_PKNORM_I16_F16, -amdgpu_cdna2_op_V_CVT_PKNORM_I16_F32, -amdgpu_cdna2_op_V_CVT_PKNORM_U16_F16, -amdgpu_cdna2_op_V_CVT_PKNORM_U16_F32, -amdgpu_cdna2_op_V_CVT_PKRTZ_F16_F32, -amdgpu_cdna2_op_V_CVT_PK_I16_I32, -amdgpu_cdna2_op_V_CVT_PK_U16_U32, -amdgpu_cdna2_op_V_CVT_PK_U8_F32, -amdgpu_cdna2_op_V_CVT_RPI_I32_F32, -amdgpu_cdna2_op_V_CVT_U16_F16, -amdgpu_cdna2_op_V_CVT_U32_F32, -amdgpu_cdna2_op_V_CVT_U32_F64, -amdgpu_cdna2_op_V_DIV_FIXUP_F16, -amdgpu_cdna2_op_V_DIV_FIXUP_F32, -amdgpu_cdna2_op_V_DIV_FIXUP_F64, -amdgpu_cdna2_op_V_DIV_FIXUP_LEGACY_F16, -amdgpu_cdna2_op_V_DIV_FMAS_F32, -amdgpu_cdna2_op_V_DIV_FMAS_F64, -amdgpu_cdna2_op_V_DIV_SCALE_F32, -amdgpu_cdna2_op_V_DIV_SCALE_F64, -amdgpu_cdna2_op_V_DOT2C_F32_F16, -amdgpu_cdna2_op_V_DOT2C_I32_I16, -amdgpu_cdna2_op_V_DOT2_F32_F16, -amdgpu_cdna2_op_V_DOT2_I32_I16, -amdgpu_cdna2_op_V_DOT2_U32_U16, -amdgpu_cdna2_op_V_DOT4C_I32_I8, -amdgpu_cdna2_op_V_DOT4_I32_I8, -amdgpu_cdna2_op_V_DOT4_U32_U8, -amdgpu_cdna2_op_V_DOT8C_I32_I4, -amdgpu_cdna2_op_V_DOT8_I32_I4, -amdgpu_cdna2_op_V_DOT8_U32_U4, -amdgpu_cdna2_op_V_EXP_F16, -amdgpu_cdna2_op_V_EXP_F32, -amdgpu_cdna2_op_V_EXP_LEGACY_F32, -amdgpu_cdna2_op_V_FFBH_I32, -amdgpu_cdna2_op_V_FFBH_U32, -amdgpu_cdna2_op_V_FFBL_B32, -amdgpu_cdna2_op_V_FLOOR_F16, -amdgpu_cdna2_op_V_FLOOR_F32, -amdgpu_cdna2_op_V_FLOOR_F64, -amdgpu_cdna2_op_V_FMAC_F32, -amdgpu_cdna2_op_V_FMAC_F64, -amdgpu_cdna2_op_V_FMA_F16, -amdgpu_cdna2_op_V_FMA_F32, -amdgpu_cdna2_op_V_FMA_F64, -amdgpu_cdna2_op_V_FMA_LEGACY_F16, -amdgpu_cdna2_op_V_FRACT_F16, -amdgpu_cdna2_op_V_FRACT_F32, -amdgpu_cdna2_op_V_FRACT_F64, -amdgpu_cdna2_op_V_FREXP_EXP_I16_F16, -amdgpu_cdna2_op_V_FREXP_EXP_I32_F32, -amdgpu_cdna2_op_V_FREXP_EXP_I32_F64, -amdgpu_cdna2_op_V_FREXP_MANT_F16, -amdgpu_cdna2_op_V_FREXP_MANT_F32, -amdgpu_cdna2_op_V_FREXP_MANT_F64, -amdgpu_cdna2_op_V_LDEXP_F16, -amdgpu_cdna2_op_V_LDEXP_F32, -amdgpu_cdna2_op_V_LDEXP_F64, -amdgpu_cdna2_op_V_LERP_U8, -amdgpu_cdna2_op_V_LOG_F16, -amdgpu_cdna2_op_V_LOG_F32, -amdgpu_cdna2_op_V_LOG_LEGACY_F32, -amdgpu_cdna2_op_V_LSHLREV_B16, -amdgpu_cdna2_op_V_LSHLREV_B32, -amdgpu_cdna2_op_V_LSHLREV_B64, -amdgpu_cdna2_op_V_LSHL_ADD_U32, -amdgpu_cdna2_op_V_LSHL_OR_B32, -amdgpu_cdna2_op_V_LSHRREV_B16, -amdgpu_cdna2_op_V_LSHRREV_B32, -amdgpu_cdna2_op_V_LSHRREV_B64, -amdgpu_cdna2_op_V_MAC_F16, -amdgpu_cdna2_op_V_MAC_F32, -amdgpu_cdna2_op_V_MADAK_F16, -amdgpu_cdna2_op_V_MADAK_F32, -amdgpu_cdna2_op_V_MADMK_F16, -amdgpu_cdna2_op_V_MADMK_F32, -amdgpu_cdna2_op_V_MAD_F16, -amdgpu_cdna2_op_V_MAD_F32, -amdgpu_cdna2_op_V_MAD_I16, -amdgpu_cdna2_op_V_MAD_I32_I16, -amdgpu_cdna2_op_V_MAD_I32_I24, -amdgpu_cdna2_op_V_MAD_I64_I32, -amdgpu_cdna2_op_V_MAD_LEGACY_F16, -amdgpu_cdna2_op_V_MAD_LEGACY_F32, -amdgpu_cdna2_op_V_MAD_LEGACY_I16, -amdgpu_cdna2_op_V_MAD_LEGACY_U16, -amdgpu_cdna2_op_V_MAD_MIXHI_F16, -amdgpu_cdna2_op_V_MAD_MIXLO_F16, -amdgpu_cdna2_op_V_MAD_MIX_F32, -amdgpu_cdna2_op_V_MAD_U16, -amdgpu_cdna2_op_V_MAD_U32_U16, -amdgpu_cdna2_op_V_MAD_U32_U24, -amdgpu_cdna2_op_V_MAD_U64_U32, -amdgpu_cdna2_op_V_MAX3_F16, -amdgpu_cdna2_op_V_MAX3_F32, -amdgpu_cdna2_op_V_MAX3_I16, -amdgpu_cdna2_op_V_MAX3_I32, -amdgpu_cdna2_op_V_MAX3_U16, -amdgpu_cdna2_op_V_MAX3_U32, -amdgpu_cdna2_op_V_MAX_F16, -amdgpu_cdna2_op_V_MAX_F32, -amdgpu_cdna2_op_V_MAX_F64, -amdgpu_cdna2_op_V_MAX_I16, -amdgpu_cdna2_op_V_MAX_I32, -amdgpu_cdna2_op_V_MAX_U16, -amdgpu_cdna2_op_V_MAX_U32, -amdgpu_cdna2_op_V_MBCNT_HI_U32_B32, -amdgpu_cdna2_op_V_MBCNT_LO_U32_B32, -amdgpu_cdna2_op_V_MED3_F16, -amdgpu_cdna2_op_V_MED3_F32, -amdgpu_cdna2_op_V_MED3_I16, -amdgpu_cdna2_op_V_MED3_I32, -amdgpu_cdna2_op_V_MED3_U16, -amdgpu_cdna2_op_V_MED3_U32, -amdgpu_cdna2_op_V_MFMA_F32_16X16X16BF16_1K, -amdgpu_cdna2_op_V_MFMA_F32_16X16X16F16, -amdgpu_cdna2_op_V_MFMA_F32_16X16X1F32, -amdgpu_cdna2_op_V_MFMA_F32_16X16X2BF16, -amdgpu_cdna2_op_V_MFMA_F32_16X16X4BF16_1K, -amdgpu_cdna2_op_V_MFMA_F32_16X16X4F16, -amdgpu_cdna2_op_V_MFMA_F32_16X16X4F32, -amdgpu_cdna2_op_V_MFMA_F32_16X16X8BF16, -amdgpu_cdna2_op_V_MFMA_F32_32X32X1F32, -amdgpu_cdna2_op_V_MFMA_F32_32X32X2BF16, -amdgpu_cdna2_op_V_MFMA_F32_32X32X2F32, -amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16, -amdgpu_cdna2_op_V_MFMA_F32_32X32X4BF16_1K, -amdgpu_cdna2_op_V_MFMA_F32_32X32X4F16, -amdgpu_cdna2_op_V_MFMA_F32_32X32X8BF16_1K, -amdgpu_cdna2_op_V_MFMA_F32_32X32X8F16, -amdgpu_cdna2_op_V_MFMA_F32_4X4X1F32, -amdgpu_cdna2_op_V_MFMA_F32_4X4X2BF16, -amdgpu_cdna2_op_V_MFMA_F32_4X4X4BF16_1K, -amdgpu_cdna2_op_V_MFMA_F32_4X4X4F16, -amdgpu_cdna2_op_V_MFMA_F64_16X16X4F64, -amdgpu_cdna2_op_V_MFMA_F64_4X4X4F64, -amdgpu_cdna2_op_V_MFMA_I32_16X16X16I8, -amdgpu_cdna2_op_V_MFMA_I32_16X16X4I8, -amdgpu_cdna2_op_V_MFMA_I32_32X32X4I8, -amdgpu_cdna2_op_V_MFMA_I32_32X32X8I8, -amdgpu_cdna2_op_V_MFMA_I32_4X4X4I8, -amdgpu_cdna2_op_V_MIN3_F16, -amdgpu_cdna2_op_V_MIN3_F32, -amdgpu_cdna2_op_V_MIN3_I16, -amdgpu_cdna2_op_V_MIN3_I32, -amdgpu_cdna2_op_V_MIN3_U16, -amdgpu_cdna2_op_V_MIN3_U32, -amdgpu_cdna2_op_V_MIN_F16, -amdgpu_cdna2_op_V_MIN_F32, -amdgpu_cdna2_op_V_MIN_F64, -amdgpu_cdna2_op_V_MIN_I16, -amdgpu_cdna2_op_V_MIN_I32, -amdgpu_cdna2_op_V_MIN_U16, -amdgpu_cdna2_op_V_MIN_U32, -amdgpu_cdna2_op_V_MOV_B32, -amdgpu_cdna2_op_V_MQSAD_PK_U16_U8, -amdgpu_cdna2_op_V_MQSAD_U32_U8, -amdgpu_cdna2_op_V_MSAD_U8, -amdgpu_cdna2_op_V_MUL_F16, -amdgpu_cdna2_op_V_MUL_F32, -amdgpu_cdna2_op_V_MUL_F64, -amdgpu_cdna2_op_V_MUL_HI_I32, -amdgpu_cdna2_op_V_MUL_HI_I32_I24, -amdgpu_cdna2_op_V_MUL_HI_U32, -amdgpu_cdna2_op_V_MUL_HI_U32_U24, -amdgpu_cdna2_op_V_MUL_I32_I24, -amdgpu_cdna2_op_V_MUL_LEGACY_F32, -amdgpu_cdna2_op_V_MUL_LO_U16, -amdgpu_cdna2_op_V_MUL_LO_U32, -amdgpu_cdna2_op_V_MUL_U32_U24, -amdgpu_cdna2_op_V_NOP, -amdgpu_cdna2_op_V_NOT_B32, -amdgpu_cdna2_op_V_OR3_B32, -amdgpu_cdna2_op_V_OR_B32, -amdgpu_cdna2_op_V_PACK_B32_F16, -amdgpu_cdna2_op_V_PERM_B32, -amdgpu_cdna2_op_V_PK_ADD_F16, -amdgpu_cdna2_op_V_PK_ADD_F32, -amdgpu_cdna2_op_V_PK_ADD_I16, -amdgpu_cdna2_op_V_PK_ADD_U16, -amdgpu_cdna2_op_V_PK_ASHRREV_I16, -amdgpu_cdna2_op_V_PK_FMAC_F16, -amdgpu_cdna2_op_V_PK_FMA_F16, -amdgpu_cdna2_op_V_PK_FMA_F32, -amdgpu_cdna2_op_V_PK_LSHLREV_B16, -amdgpu_cdna2_op_V_PK_LSHRREV_B16, -amdgpu_cdna2_op_V_PK_MAD_I16, -amdgpu_cdna2_op_V_PK_MAD_U16, -amdgpu_cdna2_op_V_PK_MAX_F16, -amdgpu_cdna2_op_V_PK_MAX_I16, -amdgpu_cdna2_op_V_PK_MAX_U16, -amdgpu_cdna2_op_V_PK_MIN_F16, -amdgpu_cdna2_op_V_PK_MIN_I16, -amdgpu_cdna2_op_V_PK_MIN_U16, -amdgpu_cdna2_op_V_PK_MOV_B32, -amdgpu_cdna2_op_V_PK_MUL_F16, -amdgpu_cdna2_op_V_PK_MUL_F32, -amdgpu_cdna2_op_V_PK_MUL_LO_U16, -amdgpu_cdna2_op_V_PK_SUB_I16, -amdgpu_cdna2_op_V_PK_SUB_U16, -amdgpu_cdna2_op_V_QSAD_PK_U16_U8, -amdgpu_cdna2_op_V_RCP_F16, -amdgpu_cdna2_op_V_RCP_F32, -amdgpu_cdna2_op_V_RCP_F64, -amdgpu_cdna2_op_V_RCP_IFLAG_F32, -amdgpu_cdna2_op_V_READFIRSTLANE_B32, -amdgpu_cdna2_op_V_READLANE_B32, -amdgpu_cdna2_op_V_RNDNE_F16, -amdgpu_cdna2_op_V_RNDNE_F32, -amdgpu_cdna2_op_V_RNDNE_F64, -amdgpu_cdna2_op_V_RSQ_F16, -amdgpu_cdna2_op_V_RSQ_F32, -amdgpu_cdna2_op_V_RSQ_F64, -amdgpu_cdna2_op_V_SAD_HI_U8, -amdgpu_cdna2_op_V_SAD_U16, -amdgpu_cdna2_op_V_SAD_U32, -amdgpu_cdna2_op_V_SAD_U8, -amdgpu_cdna2_op_V_SAT_PK_U8_I16, -amdgpu_cdna2_op_V_SCREEN_PARTITION_4SE_B32, -amdgpu_cdna2_op_V_SIN_F16, -amdgpu_cdna2_op_V_SIN_F32, -amdgpu_cdna2_op_V_SQRT_F16, -amdgpu_cdna2_op_V_SQRT_F32, -amdgpu_cdna2_op_V_SQRT_F64, -amdgpu_cdna2_op_V_SUBBREV_CO_U32, -amdgpu_cdna2_op_V_SUBB_CO_U32, -amdgpu_cdna2_op_V_SUBREV_CO_U32, -amdgpu_cdna2_op_V_SUBREV_F16, -amdgpu_cdna2_op_V_SUBREV_F32, -amdgpu_cdna2_op_V_SUBREV_U16, -amdgpu_cdna2_op_V_SUBREV_U32, -amdgpu_cdna2_op_V_SUB_CO_U32, -amdgpu_cdna2_op_V_SUB_F16, -amdgpu_cdna2_op_V_SUB_F32, -amdgpu_cdna2_op_V_SUB_I16, -amdgpu_cdna2_op_V_SUB_I32, -amdgpu_cdna2_op_V_SUB_U16, -amdgpu_cdna2_op_V_SUB_U32, -amdgpu_cdna2_op_V_SWAP_B32, -amdgpu_cdna2_op_V_TRIG_PREOP_F64, -amdgpu_cdna2_op_V_TRUNC_F16, -amdgpu_cdna2_op_V_TRUNC_F32, -amdgpu_cdna2_op_V_TRUNC_F64, -amdgpu_cdna2_op_V_WRITELANE_B32, -amdgpu_cdna2_op_V_XAD_U32, -amdgpu_cdna2_op_V_XNOR_B32, -amdgpu_cdna2_op_V_XOR_B32, diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h deleted file mode 100644 index 8515f8630b..0000000000 --- a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_sys_regs.h +++ /dev/null @@ -1,617 +0,0 @@ -#ifndef DYNINST_AMDGPU_CDNA2_SYS_REGS_H -#define DYNINST_AMDGPU_CDNA2_SYS_REGS_H -DEF_REGISTER(s0, Arch_amdgpu_cdna2| SGPR | BITS_32 | 0 , "amdgpu_cdna2"); -DEF_REGISTER(s1, Arch_amdgpu_cdna2| SGPR | BITS_32 | 1 , "amdgpu_cdna2"); -DEF_REGISTER(s2, Arch_amdgpu_cdna2| SGPR | BITS_32 | 2 , "amdgpu_cdna2"); -DEF_REGISTER(s3, Arch_amdgpu_cdna2| SGPR | BITS_32 | 3 , "amdgpu_cdna2"); -DEF_REGISTER(s4, Arch_amdgpu_cdna2| SGPR | BITS_32 | 4 , "amdgpu_cdna2"); -DEF_REGISTER(s5, Arch_amdgpu_cdna2| SGPR | BITS_32 | 5 , "amdgpu_cdna2"); -DEF_REGISTER(s6, Arch_amdgpu_cdna2| SGPR | BITS_32 | 6 , "amdgpu_cdna2"); -DEF_REGISTER(s7, Arch_amdgpu_cdna2| SGPR | BITS_32 | 7 , "amdgpu_cdna2"); -DEF_REGISTER(s8, Arch_amdgpu_cdna2| SGPR | BITS_32 | 8 , "amdgpu_cdna2"); -DEF_REGISTER(s9, Arch_amdgpu_cdna2| SGPR | BITS_32 | 9 , "amdgpu_cdna2"); -DEF_REGISTER(s10, Arch_amdgpu_cdna2| SGPR | BITS_32 | 10 , "amdgpu_cdna2"); -DEF_REGISTER(s11, Arch_amdgpu_cdna2| SGPR | BITS_32 | 11 , "amdgpu_cdna2"); -DEF_REGISTER(s12, Arch_amdgpu_cdna2| SGPR | BITS_32 | 12 , "amdgpu_cdna2"); -DEF_REGISTER(s13, Arch_amdgpu_cdna2| SGPR | BITS_32 | 13 , "amdgpu_cdna2"); -DEF_REGISTER(s14, Arch_amdgpu_cdna2| SGPR | BITS_32 | 14 , "amdgpu_cdna2"); -DEF_REGISTER(s15, Arch_amdgpu_cdna2| SGPR | BITS_32 | 15 , "amdgpu_cdna2"); -DEF_REGISTER(s16, Arch_amdgpu_cdna2| SGPR | BITS_32 | 16 , "amdgpu_cdna2"); -DEF_REGISTER(s17, Arch_amdgpu_cdna2| SGPR | BITS_32 | 17 , "amdgpu_cdna2"); -DEF_REGISTER(s18, Arch_amdgpu_cdna2| SGPR | BITS_32 | 18 , "amdgpu_cdna2"); -DEF_REGISTER(s19, Arch_amdgpu_cdna2| SGPR | BITS_32 | 19 , "amdgpu_cdna2"); -DEF_REGISTER(s20, Arch_amdgpu_cdna2| SGPR | BITS_32 | 20 , "amdgpu_cdna2"); -DEF_REGISTER(s21, Arch_amdgpu_cdna2| SGPR | BITS_32 | 21 , "amdgpu_cdna2"); -DEF_REGISTER(s22, Arch_amdgpu_cdna2| SGPR | BITS_32 | 22 , "amdgpu_cdna2"); -DEF_REGISTER(s23, Arch_amdgpu_cdna2| SGPR | BITS_32 | 23 , "amdgpu_cdna2"); -DEF_REGISTER(s24, Arch_amdgpu_cdna2| SGPR | BITS_32 | 24 , "amdgpu_cdna2"); -DEF_REGISTER(s25, Arch_amdgpu_cdna2| SGPR | BITS_32 | 25 , "amdgpu_cdna2"); -DEF_REGISTER(s26, Arch_amdgpu_cdna2| SGPR | BITS_32 | 26 , "amdgpu_cdna2"); -DEF_REGISTER(s27, Arch_amdgpu_cdna2| SGPR | BITS_32 | 27 , "amdgpu_cdna2"); -DEF_REGISTER(s28, Arch_amdgpu_cdna2| SGPR | BITS_32 | 28 , "amdgpu_cdna2"); -DEF_REGISTER(s29, Arch_amdgpu_cdna2| SGPR | BITS_32 | 29 , "amdgpu_cdna2"); -DEF_REGISTER(s30, Arch_amdgpu_cdna2| SGPR | BITS_32 | 30 , "amdgpu_cdna2"); -DEF_REGISTER(s31, Arch_amdgpu_cdna2| SGPR | BITS_32 | 31 , "amdgpu_cdna2"); -DEF_REGISTER(s32, Arch_amdgpu_cdna2| SGPR | BITS_32 | 32 , "amdgpu_cdna2"); -DEF_REGISTER(s33, Arch_amdgpu_cdna2| SGPR | BITS_32 | 33 , "amdgpu_cdna2"); -DEF_REGISTER(s34, Arch_amdgpu_cdna2| SGPR | BITS_32 | 34 , "amdgpu_cdna2"); -DEF_REGISTER(s35, Arch_amdgpu_cdna2| SGPR | BITS_32 | 35 , "amdgpu_cdna2"); -DEF_REGISTER(s36, Arch_amdgpu_cdna2| SGPR | BITS_32 | 36 , "amdgpu_cdna2"); -DEF_REGISTER(s37, Arch_amdgpu_cdna2| SGPR | BITS_32 | 37 , "amdgpu_cdna2"); -DEF_REGISTER(s38, Arch_amdgpu_cdna2| SGPR | BITS_32 | 38 , "amdgpu_cdna2"); -DEF_REGISTER(s39, Arch_amdgpu_cdna2| SGPR | BITS_32 | 39 , "amdgpu_cdna2"); -DEF_REGISTER(s40, Arch_amdgpu_cdna2| SGPR | BITS_32 | 40 , "amdgpu_cdna2"); -DEF_REGISTER(s41, Arch_amdgpu_cdna2| SGPR | BITS_32 | 41 , "amdgpu_cdna2"); -DEF_REGISTER(s42, Arch_amdgpu_cdna2| SGPR | BITS_32 | 42 , "amdgpu_cdna2"); -DEF_REGISTER(s43, Arch_amdgpu_cdna2| SGPR | BITS_32 | 43 , "amdgpu_cdna2"); -DEF_REGISTER(s44, Arch_amdgpu_cdna2| SGPR | BITS_32 | 44 , "amdgpu_cdna2"); -DEF_REGISTER(s45, Arch_amdgpu_cdna2| SGPR | BITS_32 | 45 , "amdgpu_cdna2"); -DEF_REGISTER(s46, Arch_amdgpu_cdna2| SGPR | BITS_32 | 46 , "amdgpu_cdna2"); -DEF_REGISTER(s47, Arch_amdgpu_cdna2| SGPR | BITS_32 | 47 , "amdgpu_cdna2"); -DEF_REGISTER(s48, Arch_amdgpu_cdna2| SGPR | BITS_32 | 48 , "amdgpu_cdna2"); -DEF_REGISTER(s49, Arch_amdgpu_cdna2| SGPR | BITS_32 | 49 , "amdgpu_cdna2"); -DEF_REGISTER(s50, Arch_amdgpu_cdna2| SGPR | BITS_32 | 50 , "amdgpu_cdna2"); -DEF_REGISTER(s51, Arch_amdgpu_cdna2| SGPR | BITS_32 | 51 , "amdgpu_cdna2"); -DEF_REGISTER(s52, Arch_amdgpu_cdna2| SGPR | BITS_32 | 52 , "amdgpu_cdna2"); -DEF_REGISTER(s53, Arch_amdgpu_cdna2| SGPR | BITS_32 | 53 , "amdgpu_cdna2"); -DEF_REGISTER(s54, Arch_amdgpu_cdna2| SGPR | BITS_32 | 54 , "amdgpu_cdna2"); -DEF_REGISTER(s55, Arch_amdgpu_cdna2| SGPR | BITS_32 | 55 , "amdgpu_cdna2"); -DEF_REGISTER(s56, Arch_amdgpu_cdna2| SGPR | BITS_32 | 56 , "amdgpu_cdna2"); -DEF_REGISTER(s57, Arch_amdgpu_cdna2| SGPR | BITS_32 | 57 , "amdgpu_cdna2"); -DEF_REGISTER(s58, Arch_amdgpu_cdna2| SGPR | BITS_32 | 58 , "amdgpu_cdna2"); -DEF_REGISTER(s59, Arch_amdgpu_cdna2| SGPR | BITS_32 | 59 , "amdgpu_cdna2"); -DEF_REGISTER(s60, Arch_amdgpu_cdna2| SGPR | BITS_32 | 60 , "amdgpu_cdna2"); -DEF_REGISTER(s61, Arch_amdgpu_cdna2| SGPR | BITS_32 | 61 , "amdgpu_cdna2"); -DEF_REGISTER(s62, Arch_amdgpu_cdna2| SGPR | BITS_32 | 62 , "amdgpu_cdna2"); -DEF_REGISTER(s63, Arch_amdgpu_cdna2| SGPR | BITS_32 | 63 , "amdgpu_cdna2"); -DEF_REGISTER(s64, Arch_amdgpu_cdna2| SGPR | BITS_32 | 64 , "amdgpu_cdna2"); -DEF_REGISTER(s65, Arch_amdgpu_cdna2| SGPR | BITS_32 | 65 , "amdgpu_cdna2"); -DEF_REGISTER(s66, Arch_amdgpu_cdna2| SGPR | BITS_32 | 66 , "amdgpu_cdna2"); -DEF_REGISTER(s67, Arch_amdgpu_cdna2| SGPR | BITS_32 | 67 , "amdgpu_cdna2"); -DEF_REGISTER(s68, Arch_amdgpu_cdna2| SGPR | BITS_32 | 68 , "amdgpu_cdna2"); -DEF_REGISTER(s69, Arch_amdgpu_cdna2| SGPR | BITS_32 | 69 , "amdgpu_cdna2"); -DEF_REGISTER(s70, Arch_amdgpu_cdna2| SGPR | BITS_32 | 70 , "amdgpu_cdna2"); -DEF_REGISTER(s71, Arch_amdgpu_cdna2| SGPR | BITS_32 | 71 , "amdgpu_cdna2"); -DEF_REGISTER(s72, Arch_amdgpu_cdna2| SGPR | BITS_32 | 72 , "amdgpu_cdna2"); -DEF_REGISTER(s73, Arch_amdgpu_cdna2| SGPR | BITS_32 | 73 , "amdgpu_cdna2"); -DEF_REGISTER(s74, Arch_amdgpu_cdna2| SGPR | BITS_32 | 74 , "amdgpu_cdna2"); -DEF_REGISTER(s75, Arch_amdgpu_cdna2| SGPR | BITS_32 | 75 , "amdgpu_cdna2"); -DEF_REGISTER(s76, Arch_amdgpu_cdna2| SGPR | BITS_32 | 76 , "amdgpu_cdna2"); -DEF_REGISTER(s77, Arch_amdgpu_cdna2| SGPR | BITS_32 | 77 , "amdgpu_cdna2"); -DEF_REGISTER(s78, Arch_amdgpu_cdna2| SGPR | BITS_32 | 78 , "amdgpu_cdna2"); -DEF_REGISTER(s79, Arch_amdgpu_cdna2| SGPR | BITS_32 | 79 , "amdgpu_cdna2"); -DEF_REGISTER(s80, Arch_amdgpu_cdna2| SGPR | BITS_32 | 80 , "amdgpu_cdna2"); -DEF_REGISTER(s81, Arch_amdgpu_cdna2| SGPR | BITS_32 | 81 , "amdgpu_cdna2"); -DEF_REGISTER(s82, Arch_amdgpu_cdna2| SGPR | BITS_32 | 82 , "amdgpu_cdna2"); -DEF_REGISTER(s83, Arch_amdgpu_cdna2| SGPR | BITS_32 | 83 , "amdgpu_cdna2"); -DEF_REGISTER(s84, Arch_amdgpu_cdna2| SGPR | BITS_32 | 84 , "amdgpu_cdna2"); -DEF_REGISTER(s85, Arch_amdgpu_cdna2| SGPR | BITS_32 | 85 , "amdgpu_cdna2"); -DEF_REGISTER(s86, Arch_amdgpu_cdna2| SGPR | BITS_32 | 86 , "amdgpu_cdna2"); -DEF_REGISTER(s87, Arch_amdgpu_cdna2| SGPR | BITS_32 | 87 , "amdgpu_cdna2"); -DEF_REGISTER(s88, Arch_amdgpu_cdna2| SGPR | BITS_32 | 88 , "amdgpu_cdna2"); -DEF_REGISTER(s89, Arch_amdgpu_cdna2| SGPR | BITS_32 | 89 , "amdgpu_cdna2"); -DEF_REGISTER(s90, Arch_amdgpu_cdna2| SGPR | BITS_32 | 90 , "amdgpu_cdna2"); -DEF_REGISTER(s91, Arch_amdgpu_cdna2| SGPR | BITS_32 | 91 , "amdgpu_cdna2"); -DEF_REGISTER(s92, Arch_amdgpu_cdna2| SGPR | BITS_32 | 92 , "amdgpu_cdna2"); -DEF_REGISTER(s93, Arch_amdgpu_cdna2| SGPR | BITS_32 | 93 , "amdgpu_cdna2"); -DEF_REGISTER(s94, Arch_amdgpu_cdna2| SGPR | BITS_32 | 94 , "amdgpu_cdna2"); -DEF_REGISTER(s95, Arch_amdgpu_cdna2| SGPR | BITS_32 | 95 , "amdgpu_cdna2"); -DEF_REGISTER(s96, Arch_amdgpu_cdna2| SGPR | BITS_32 | 96 , "amdgpu_cdna2"); -DEF_REGISTER(s97, Arch_amdgpu_cdna2| SGPR | BITS_32 | 97 , "amdgpu_cdna2"); -DEF_REGISTER(s98, Arch_amdgpu_cdna2| SGPR | BITS_32 | 98 , "amdgpu_cdna2"); -DEF_REGISTER(s99, Arch_amdgpu_cdna2| SGPR | BITS_32 | 99 , "amdgpu_cdna2"); -DEF_REGISTER(s100, Arch_amdgpu_cdna2| SGPR | BITS_32 | 100 , "amdgpu_cdna2"); -DEF_REGISTER(s101, Arch_amdgpu_cdna2| SGPR | BITS_32 | 101 , "amdgpu_cdna2"); -DEF_REGISTER(v0, Arch_amdgpu_cdna2| VGPR | BITS_32 | 0 , "amdgpu_cdna2"); -DEF_REGISTER(v1, Arch_amdgpu_cdna2| VGPR | BITS_32 | 1 , "amdgpu_cdna2"); -DEF_REGISTER(v2, Arch_amdgpu_cdna2| VGPR | BITS_32 | 2 , "amdgpu_cdna2"); -DEF_REGISTER(v3, Arch_amdgpu_cdna2| VGPR | BITS_32 | 3 , "amdgpu_cdna2"); -DEF_REGISTER(v4, Arch_amdgpu_cdna2| VGPR | BITS_32 | 4 , "amdgpu_cdna2"); -DEF_REGISTER(v5, Arch_amdgpu_cdna2| VGPR | BITS_32 | 5 , "amdgpu_cdna2"); -DEF_REGISTER(v6, Arch_amdgpu_cdna2| VGPR | BITS_32 | 6 , "amdgpu_cdna2"); -DEF_REGISTER(v7, Arch_amdgpu_cdna2| VGPR | BITS_32 | 7 , "amdgpu_cdna2"); -DEF_REGISTER(v8, Arch_amdgpu_cdna2| VGPR | BITS_32 | 8 , "amdgpu_cdna2"); -DEF_REGISTER(v9, Arch_amdgpu_cdna2| VGPR | BITS_32 | 9 , "amdgpu_cdna2"); -DEF_REGISTER(v10, Arch_amdgpu_cdna2| VGPR | BITS_32 | 10 , "amdgpu_cdna2"); -DEF_REGISTER(v11, Arch_amdgpu_cdna2| VGPR | BITS_32 | 11 , "amdgpu_cdna2"); -DEF_REGISTER(v12, Arch_amdgpu_cdna2| VGPR | BITS_32 | 12 , "amdgpu_cdna2"); -DEF_REGISTER(v13, Arch_amdgpu_cdna2| VGPR | BITS_32 | 13 , "amdgpu_cdna2"); -DEF_REGISTER(v14, Arch_amdgpu_cdna2| VGPR | BITS_32 | 14 , "amdgpu_cdna2"); -DEF_REGISTER(v15, Arch_amdgpu_cdna2| VGPR | BITS_32 | 15 , "amdgpu_cdna2"); -DEF_REGISTER(v16, Arch_amdgpu_cdna2| VGPR | BITS_32 | 16 , "amdgpu_cdna2"); -DEF_REGISTER(v17, Arch_amdgpu_cdna2| VGPR | BITS_32 | 17 , "amdgpu_cdna2"); -DEF_REGISTER(v18, Arch_amdgpu_cdna2| VGPR | BITS_32 | 18 , "amdgpu_cdna2"); -DEF_REGISTER(v19, Arch_amdgpu_cdna2| VGPR | BITS_32 | 19 , "amdgpu_cdna2"); -DEF_REGISTER(v20, Arch_amdgpu_cdna2| VGPR | BITS_32 | 20 , "amdgpu_cdna2"); -DEF_REGISTER(v21, Arch_amdgpu_cdna2| VGPR | BITS_32 | 21 , "amdgpu_cdna2"); -DEF_REGISTER(v22, Arch_amdgpu_cdna2| VGPR | BITS_32 | 22 , "amdgpu_cdna2"); -DEF_REGISTER(v23, Arch_amdgpu_cdna2| VGPR | BITS_32 | 23 , "amdgpu_cdna2"); -DEF_REGISTER(v24, Arch_amdgpu_cdna2| VGPR | BITS_32 | 24 , "amdgpu_cdna2"); -DEF_REGISTER(v25, Arch_amdgpu_cdna2| VGPR | BITS_32 | 25 , "amdgpu_cdna2"); -DEF_REGISTER(v26, Arch_amdgpu_cdna2| VGPR | BITS_32 | 26 , "amdgpu_cdna2"); -DEF_REGISTER(v27, Arch_amdgpu_cdna2| VGPR | BITS_32 | 27 , "amdgpu_cdna2"); -DEF_REGISTER(v28, Arch_amdgpu_cdna2| VGPR | BITS_32 | 28 , "amdgpu_cdna2"); -DEF_REGISTER(v29, Arch_amdgpu_cdna2| VGPR | BITS_32 | 29 , "amdgpu_cdna2"); -DEF_REGISTER(v30, Arch_amdgpu_cdna2| VGPR | BITS_32 | 30 , "amdgpu_cdna2"); -DEF_REGISTER(v31, Arch_amdgpu_cdna2| VGPR | BITS_32 | 31 , "amdgpu_cdna2"); -DEF_REGISTER(v32, Arch_amdgpu_cdna2| VGPR | BITS_32 | 32 , "amdgpu_cdna2"); -DEF_REGISTER(v33, Arch_amdgpu_cdna2| VGPR | BITS_32 | 33 , "amdgpu_cdna2"); -DEF_REGISTER(v34, Arch_amdgpu_cdna2| VGPR | BITS_32 | 34 , "amdgpu_cdna2"); -DEF_REGISTER(v35, Arch_amdgpu_cdna2| VGPR | BITS_32 | 35 , "amdgpu_cdna2"); -DEF_REGISTER(v36, Arch_amdgpu_cdna2| VGPR | BITS_32 | 36 , "amdgpu_cdna2"); -DEF_REGISTER(v37, Arch_amdgpu_cdna2| VGPR | BITS_32 | 37 , "amdgpu_cdna2"); -DEF_REGISTER(v38, Arch_amdgpu_cdna2| VGPR | BITS_32 | 38 , "amdgpu_cdna2"); -DEF_REGISTER(v39, Arch_amdgpu_cdna2| VGPR | BITS_32 | 39 , "amdgpu_cdna2"); -DEF_REGISTER(v40, Arch_amdgpu_cdna2| VGPR | BITS_32 | 40 , "amdgpu_cdna2"); -DEF_REGISTER(v41, Arch_amdgpu_cdna2| VGPR | BITS_32 | 41 , "amdgpu_cdna2"); -DEF_REGISTER(v42, Arch_amdgpu_cdna2| VGPR | BITS_32 | 42 , "amdgpu_cdna2"); -DEF_REGISTER(v43, Arch_amdgpu_cdna2| VGPR | BITS_32 | 43 , "amdgpu_cdna2"); -DEF_REGISTER(v44, Arch_amdgpu_cdna2| VGPR | BITS_32 | 44 , "amdgpu_cdna2"); -DEF_REGISTER(v45, Arch_amdgpu_cdna2| VGPR | BITS_32 | 45 , "amdgpu_cdna2"); -DEF_REGISTER(v46, Arch_amdgpu_cdna2| VGPR | BITS_32 | 46 , "amdgpu_cdna2"); -DEF_REGISTER(v47, Arch_amdgpu_cdna2| VGPR | BITS_32 | 47 , "amdgpu_cdna2"); -DEF_REGISTER(v48, Arch_amdgpu_cdna2| VGPR | BITS_32 | 48 , "amdgpu_cdna2"); -DEF_REGISTER(v49, Arch_amdgpu_cdna2| VGPR | BITS_32 | 49 , "amdgpu_cdna2"); -DEF_REGISTER(v50, Arch_amdgpu_cdna2| VGPR | BITS_32 | 50 , "amdgpu_cdna2"); -DEF_REGISTER(v51, Arch_amdgpu_cdna2| VGPR | BITS_32 | 51 , "amdgpu_cdna2"); -DEF_REGISTER(v52, Arch_amdgpu_cdna2| VGPR | BITS_32 | 52 , "amdgpu_cdna2"); -DEF_REGISTER(v53, Arch_amdgpu_cdna2| VGPR | BITS_32 | 53 , "amdgpu_cdna2"); -DEF_REGISTER(v54, Arch_amdgpu_cdna2| VGPR | BITS_32 | 54 , "amdgpu_cdna2"); -DEF_REGISTER(v55, Arch_amdgpu_cdna2| VGPR | BITS_32 | 55 , "amdgpu_cdna2"); -DEF_REGISTER(v56, Arch_amdgpu_cdna2| VGPR | BITS_32 | 56 , "amdgpu_cdna2"); -DEF_REGISTER(v57, Arch_amdgpu_cdna2| VGPR | BITS_32 | 57 , "amdgpu_cdna2"); -DEF_REGISTER(v58, Arch_amdgpu_cdna2| VGPR | BITS_32 | 58 , "amdgpu_cdna2"); -DEF_REGISTER(v59, Arch_amdgpu_cdna2| VGPR | BITS_32 | 59 , "amdgpu_cdna2"); -DEF_REGISTER(v60, Arch_amdgpu_cdna2| VGPR | BITS_32 | 60 , "amdgpu_cdna2"); -DEF_REGISTER(v61, Arch_amdgpu_cdna2| VGPR | BITS_32 | 61 , "amdgpu_cdna2"); -DEF_REGISTER(v62, Arch_amdgpu_cdna2| VGPR | BITS_32 | 62 , "amdgpu_cdna2"); -DEF_REGISTER(v63, Arch_amdgpu_cdna2| VGPR | BITS_32 | 63 , "amdgpu_cdna2"); -DEF_REGISTER(v64, Arch_amdgpu_cdna2| VGPR | BITS_32 | 64 , "amdgpu_cdna2"); -DEF_REGISTER(v65, Arch_amdgpu_cdna2| VGPR | BITS_32 | 65 , "amdgpu_cdna2"); -DEF_REGISTER(v66, Arch_amdgpu_cdna2| VGPR | BITS_32 | 66 , "amdgpu_cdna2"); -DEF_REGISTER(v67, Arch_amdgpu_cdna2| VGPR | BITS_32 | 67 , "amdgpu_cdna2"); -DEF_REGISTER(v68, Arch_amdgpu_cdna2| VGPR | BITS_32 | 68 , "amdgpu_cdna2"); -DEF_REGISTER(v69, Arch_amdgpu_cdna2| VGPR | BITS_32 | 69 , "amdgpu_cdna2"); -DEF_REGISTER(v70, Arch_amdgpu_cdna2| VGPR | BITS_32 | 70 , "amdgpu_cdna2"); -DEF_REGISTER(v71, Arch_amdgpu_cdna2| VGPR | BITS_32 | 71 , "amdgpu_cdna2"); -DEF_REGISTER(v72, Arch_amdgpu_cdna2| VGPR | BITS_32 | 72 , "amdgpu_cdna2"); -DEF_REGISTER(v73, Arch_amdgpu_cdna2| VGPR | BITS_32 | 73 , "amdgpu_cdna2"); -DEF_REGISTER(v74, Arch_amdgpu_cdna2| VGPR | BITS_32 | 74 , "amdgpu_cdna2"); -DEF_REGISTER(v75, Arch_amdgpu_cdna2| VGPR | BITS_32 | 75 , "amdgpu_cdna2"); -DEF_REGISTER(v76, Arch_amdgpu_cdna2| VGPR | BITS_32 | 76 , "amdgpu_cdna2"); -DEF_REGISTER(v77, Arch_amdgpu_cdna2| VGPR | BITS_32 | 77 , "amdgpu_cdna2"); -DEF_REGISTER(v78, Arch_amdgpu_cdna2| VGPR | BITS_32 | 78 , "amdgpu_cdna2"); -DEF_REGISTER(v79, Arch_amdgpu_cdna2| VGPR | BITS_32 | 79 , "amdgpu_cdna2"); -DEF_REGISTER(v80, Arch_amdgpu_cdna2| VGPR | BITS_32 | 80 , "amdgpu_cdna2"); -DEF_REGISTER(v81, Arch_amdgpu_cdna2| VGPR | BITS_32 | 81 , "amdgpu_cdna2"); -DEF_REGISTER(v82, Arch_amdgpu_cdna2| VGPR | BITS_32 | 82 , "amdgpu_cdna2"); -DEF_REGISTER(v83, Arch_amdgpu_cdna2| VGPR | BITS_32 | 83 , "amdgpu_cdna2"); -DEF_REGISTER(v84, Arch_amdgpu_cdna2| VGPR | BITS_32 | 84 , "amdgpu_cdna2"); -DEF_REGISTER(v85, Arch_amdgpu_cdna2| VGPR | BITS_32 | 85 , "amdgpu_cdna2"); -DEF_REGISTER(v86, Arch_amdgpu_cdna2| VGPR | BITS_32 | 86 , "amdgpu_cdna2"); -DEF_REGISTER(v87, Arch_amdgpu_cdna2| VGPR | BITS_32 | 87 , "amdgpu_cdna2"); -DEF_REGISTER(v88, Arch_amdgpu_cdna2| VGPR | BITS_32 | 88 , "amdgpu_cdna2"); -DEF_REGISTER(v89, Arch_amdgpu_cdna2| VGPR | BITS_32 | 89 , "amdgpu_cdna2"); -DEF_REGISTER(v90, Arch_amdgpu_cdna2| VGPR | BITS_32 | 90 , "amdgpu_cdna2"); -DEF_REGISTER(v91, Arch_amdgpu_cdna2| VGPR | BITS_32 | 91 , "amdgpu_cdna2"); -DEF_REGISTER(v92, Arch_amdgpu_cdna2| VGPR | BITS_32 | 92 , "amdgpu_cdna2"); -DEF_REGISTER(v93, Arch_amdgpu_cdna2| VGPR | BITS_32 | 93 , "amdgpu_cdna2"); -DEF_REGISTER(v94, Arch_amdgpu_cdna2| VGPR | BITS_32 | 94 , "amdgpu_cdna2"); -DEF_REGISTER(v95, Arch_amdgpu_cdna2| VGPR | BITS_32 | 95 , "amdgpu_cdna2"); -DEF_REGISTER(v96, Arch_amdgpu_cdna2| VGPR | BITS_32 | 96 , "amdgpu_cdna2"); -DEF_REGISTER(v97, Arch_amdgpu_cdna2| VGPR | BITS_32 | 97 , "amdgpu_cdna2"); -DEF_REGISTER(v98, Arch_amdgpu_cdna2| VGPR | BITS_32 | 98 , "amdgpu_cdna2"); -DEF_REGISTER(v99, Arch_amdgpu_cdna2| VGPR | BITS_32 | 99 , "amdgpu_cdna2"); -DEF_REGISTER(v100, Arch_amdgpu_cdna2| VGPR | BITS_32 | 100 , "amdgpu_cdna2"); -DEF_REGISTER(v101, Arch_amdgpu_cdna2| VGPR | BITS_32 | 101 , "amdgpu_cdna2"); -DEF_REGISTER(v102, Arch_amdgpu_cdna2| VGPR | BITS_32 | 102 , "amdgpu_cdna2"); -DEF_REGISTER(v103, Arch_amdgpu_cdna2| VGPR | BITS_32 | 103 , "amdgpu_cdna2"); -DEF_REGISTER(v104, Arch_amdgpu_cdna2| VGPR | BITS_32 | 104 , "amdgpu_cdna2"); -DEF_REGISTER(v105, Arch_amdgpu_cdna2| VGPR | BITS_32 | 105 , "amdgpu_cdna2"); -DEF_REGISTER(v106, Arch_amdgpu_cdna2| VGPR | BITS_32 | 106 , "amdgpu_cdna2"); -DEF_REGISTER(v107, Arch_amdgpu_cdna2| VGPR | BITS_32 | 107 , "amdgpu_cdna2"); -DEF_REGISTER(v108, Arch_amdgpu_cdna2| VGPR | BITS_32 | 108 , "amdgpu_cdna2"); -DEF_REGISTER(v109, Arch_amdgpu_cdna2| VGPR | BITS_32 | 109 , "amdgpu_cdna2"); -DEF_REGISTER(v110, Arch_amdgpu_cdna2| VGPR | BITS_32 | 110 , "amdgpu_cdna2"); -DEF_REGISTER(v111, Arch_amdgpu_cdna2| VGPR | BITS_32 | 111 , "amdgpu_cdna2"); -DEF_REGISTER(v112, Arch_amdgpu_cdna2| VGPR | BITS_32 | 112 , "amdgpu_cdna2"); -DEF_REGISTER(v113, Arch_amdgpu_cdna2| VGPR | BITS_32 | 113 , "amdgpu_cdna2"); -DEF_REGISTER(v114, Arch_amdgpu_cdna2| VGPR | BITS_32 | 114 , "amdgpu_cdna2"); -DEF_REGISTER(v115, Arch_amdgpu_cdna2| VGPR | BITS_32 | 115 , "amdgpu_cdna2"); -DEF_REGISTER(v116, Arch_amdgpu_cdna2| VGPR | BITS_32 | 116 , "amdgpu_cdna2"); -DEF_REGISTER(v117, Arch_amdgpu_cdna2| VGPR | BITS_32 | 117 , "amdgpu_cdna2"); -DEF_REGISTER(v118, Arch_amdgpu_cdna2| VGPR | BITS_32 | 118 , "amdgpu_cdna2"); -DEF_REGISTER(v119, Arch_amdgpu_cdna2| VGPR | BITS_32 | 119 , "amdgpu_cdna2"); -DEF_REGISTER(v120, Arch_amdgpu_cdna2| VGPR | BITS_32 | 120 , "amdgpu_cdna2"); -DEF_REGISTER(v121, Arch_amdgpu_cdna2| VGPR | BITS_32 | 121 , "amdgpu_cdna2"); -DEF_REGISTER(v122, Arch_amdgpu_cdna2| VGPR | BITS_32 | 122 , "amdgpu_cdna2"); -DEF_REGISTER(v123, Arch_amdgpu_cdna2| VGPR | BITS_32 | 123 , "amdgpu_cdna2"); -DEF_REGISTER(v124, Arch_amdgpu_cdna2| VGPR | BITS_32 | 124 , "amdgpu_cdna2"); -DEF_REGISTER(v125, Arch_amdgpu_cdna2| VGPR | BITS_32 | 125 , "amdgpu_cdna2"); -DEF_REGISTER(v126, Arch_amdgpu_cdna2| VGPR | BITS_32 | 126 , "amdgpu_cdna2"); -DEF_REGISTER(v127, Arch_amdgpu_cdna2| VGPR | BITS_32 | 127 , "amdgpu_cdna2"); -DEF_REGISTER(v128, Arch_amdgpu_cdna2| VGPR | BITS_32 | 128 , "amdgpu_cdna2"); -DEF_REGISTER(v129, Arch_amdgpu_cdna2| VGPR | BITS_32 | 129 , "amdgpu_cdna2"); -DEF_REGISTER(v130, Arch_amdgpu_cdna2| VGPR | BITS_32 | 130 , "amdgpu_cdna2"); -DEF_REGISTER(v131, Arch_amdgpu_cdna2| VGPR | BITS_32 | 131 , "amdgpu_cdna2"); -DEF_REGISTER(v132, Arch_amdgpu_cdna2| VGPR | BITS_32 | 132 , "amdgpu_cdna2"); -DEF_REGISTER(v133, Arch_amdgpu_cdna2| VGPR | BITS_32 | 133 , "amdgpu_cdna2"); -DEF_REGISTER(v134, Arch_amdgpu_cdna2| VGPR | BITS_32 | 134 , "amdgpu_cdna2"); -DEF_REGISTER(v135, Arch_amdgpu_cdna2| VGPR | BITS_32 | 135 , "amdgpu_cdna2"); -DEF_REGISTER(v136, Arch_amdgpu_cdna2| VGPR | BITS_32 | 136 , "amdgpu_cdna2"); -DEF_REGISTER(v137, Arch_amdgpu_cdna2| VGPR | BITS_32 | 137 , "amdgpu_cdna2"); -DEF_REGISTER(v138, Arch_amdgpu_cdna2| VGPR | BITS_32 | 138 , "amdgpu_cdna2"); -DEF_REGISTER(v139, Arch_amdgpu_cdna2| VGPR | BITS_32 | 139 , "amdgpu_cdna2"); -DEF_REGISTER(v140, Arch_amdgpu_cdna2| VGPR | BITS_32 | 140 , "amdgpu_cdna2"); -DEF_REGISTER(v141, Arch_amdgpu_cdna2| VGPR | BITS_32 | 141 , "amdgpu_cdna2"); -DEF_REGISTER(v142, Arch_amdgpu_cdna2| VGPR | BITS_32 | 142 , "amdgpu_cdna2"); -DEF_REGISTER(v143, Arch_amdgpu_cdna2| VGPR | BITS_32 | 143 , "amdgpu_cdna2"); -DEF_REGISTER(v144, Arch_amdgpu_cdna2| VGPR | BITS_32 | 144 , "amdgpu_cdna2"); -DEF_REGISTER(v145, Arch_amdgpu_cdna2| VGPR | BITS_32 | 145 , "amdgpu_cdna2"); -DEF_REGISTER(v146, Arch_amdgpu_cdna2| VGPR | BITS_32 | 146 , "amdgpu_cdna2"); -DEF_REGISTER(v147, Arch_amdgpu_cdna2| VGPR | BITS_32 | 147 , "amdgpu_cdna2"); -DEF_REGISTER(v148, Arch_amdgpu_cdna2| VGPR | BITS_32 | 148 , "amdgpu_cdna2"); -DEF_REGISTER(v149, Arch_amdgpu_cdna2| VGPR | BITS_32 | 149 , "amdgpu_cdna2"); -DEF_REGISTER(v150, Arch_amdgpu_cdna2| VGPR | BITS_32 | 150 , "amdgpu_cdna2"); -DEF_REGISTER(v151, Arch_amdgpu_cdna2| VGPR | BITS_32 | 151 , "amdgpu_cdna2"); -DEF_REGISTER(v152, Arch_amdgpu_cdna2| VGPR | BITS_32 | 152 , "amdgpu_cdna2"); -DEF_REGISTER(v153, Arch_amdgpu_cdna2| VGPR | BITS_32 | 153 , "amdgpu_cdna2"); -DEF_REGISTER(v154, Arch_amdgpu_cdna2| VGPR | BITS_32 | 154 , "amdgpu_cdna2"); -DEF_REGISTER(v155, Arch_amdgpu_cdna2| VGPR | BITS_32 | 155 , "amdgpu_cdna2"); -DEF_REGISTER(v156, Arch_amdgpu_cdna2| VGPR | BITS_32 | 156 , "amdgpu_cdna2"); -DEF_REGISTER(v157, Arch_amdgpu_cdna2| VGPR | BITS_32 | 157 , "amdgpu_cdna2"); -DEF_REGISTER(v158, Arch_amdgpu_cdna2| VGPR | BITS_32 | 158 , "amdgpu_cdna2"); -DEF_REGISTER(v159, Arch_amdgpu_cdna2| VGPR | BITS_32 | 159 , "amdgpu_cdna2"); -DEF_REGISTER(v160, Arch_amdgpu_cdna2| VGPR | BITS_32 | 160 , "amdgpu_cdna2"); -DEF_REGISTER(v161, Arch_amdgpu_cdna2| VGPR | BITS_32 | 161 , "amdgpu_cdna2"); -DEF_REGISTER(v162, Arch_amdgpu_cdna2| VGPR | BITS_32 | 162 , "amdgpu_cdna2"); -DEF_REGISTER(v163, Arch_amdgpu_cdna2| VGPR | BITS_32 | 163 , "amdgpu_cdna2"); -DEF_REGISTER(v164, Arch_amdgpu_cdna2| VGPR | BITS_32 | 164 , "amdgpu_cdna2"); -DEF_REGISTER(v165, Arch_amdgpu_cdna2| VGPR | BITS_32 | 165 , "amdgpu_cdna2"); -DEF_REGISTER(v166, Arch_amdgpu_cdna2| VGPR | BITS_32 | 166 , "amdgpu_cdna2"); -DEF_REGISTER(v167, Arch_amdgpu_cdna2| VGPR | BITS_32 | 167 , "amdgpu_cdna2"); -DEF_REGISTER(v168, Arch_amdgpu_cdna2| VGPR | BITS_32 | 168 , "amdgpu_cdna2"); -DEF_REGISTER(v169, Arch_amdgpu_cdna2| VGPR | BITS_32 | 169 , "amdgpu_cdna2"); -DEF_REGISTER(v170, Arch_amdgpu_cdna2| VGPR | BITS_32 | 170 , "amdgpu_cdna2"); -DEF_REGISTER(v171, Arch_amdgpu_cdna2| VGPR | BITS_32 | 171 , "amdgpu_cdna2"); -DEF_REGISTER(v172, Arch_amdgpu_cdna2| VGPR | BITS_32 | 172 , "amdgpu_cdna2"); -DEF_REGISTER(v173, Arch_amdgpu_cdna2| VGPR | BITS_32 | 173 , "amdgpu_cdna2"); -DEF_REGISTER(v174, Arch_amdgpu_cdna2| VGPR | BITS_32 | 174 , "amdgpu_cdna2"); -DEF_REGISTER(v175, Arch_amdgpu_cdna2| VGPR | BITS_32 | 175 , "amdgpu_cdna2"); -DEF_REGISTER(v176, Arch_amdgpu_cdna2| VGPR | BITS_32 | 176 , "amdgpu_cdna2"); -DEF_REGISTER(v177, Arch_amdgpu_cdna2| VGPR | BITS_32 | 177 , "amdgpu_cdna2"); -DEF_REGISTER(v178, Arch_amdgpu_cdna2| VGPR | BITS_32 | 178 , "amdgpu_cdna2"); -DEF_REGISTER(v179, Arch_amdgpu_cdna2| VGPR | BITS_32 | 179 , "amdgpu_cdna2"); -DEF_REGISTER(v180, Arch_amdgpu_cdna2| VGPR | BITS_32 | 180 , "amdgpu_cdna2"); -DEF_REGISTER(v181, Arch_amdgpu_cdna2| VGPR | BITS_32 | 181 , "amdgpu_cdna2"); -DEF_REGISTER(v182, Arch_amdgpu_cdna2| VGPR | BITS_32 | 182 , "amdgpu_cdna2"); -DEF_REGISTER(v183, Arch_amdgpu_cdna2| VGPR | BITS_32 | 183 , "amdgpu_cdna2"); -DEF_REGISTER(v184, Arch_amdgpu_cdna2| VGPR | BITS_32 | 184 , "amdgpu_cdna2"); -DEF_REGISTER(v185, Arch_amdgpu_cdna2| VGPR | BITS_32 | 185 , "amdgpu_cdna2"); -DEF_REGISTER(v186, Arch_amdgpu_cdna2| VGPR | BITS_32 | 186 , "amdgpu_cdna2"); -DEF_REGISTER(v187, Arch_amdgpu_cdna2| VGPR | BITS_32 | 187 , "amdgpu_cdna2"); -DEF_REGISTER(v188, Arch_amdgpu_cdna2| VGPR | BITS_32 | 188 , "amdgpu_cdna2"); -DEF_REGISTER(v189, Arch_amdgpu_cdna2| VGPR | BITS_32 | 189 , "amdgpu_cdna2"); -DEF_REGISTER(v190, Arch_amdgpu_cdna2| VGPR | BITS_32 | 190 , "amdgpu_cdna2"); -DEF_REGISTER(v191, Arch_amdgpu_cdna2| VGPR | BITS_32 | 191 , "amdgpu_cdna2"); -DEF_REGISTER(v192, Arch_amdgpu_cdna2| VGPR | BITS_32 | 192 , "amdgpu_cdna2"); -DEF_REGISTER(v193, Arch_amdgpu_cdna2| VGPR | BITS_32 | 193 , "amdgpu_cdna2"); -DEF_REGISTER(v194, Arch_amdgpu_cdna2| VGPR | BITS_32 | 194 , "amdgpu_cdna2"); -DEF_REGISTER(v195, Arch_amdgpu_cdna2| VGPR | BITS_32 | 195 , "amdgpu_cdna2"); -DEF_REGISTER(v196, Arch_amdgpu_cdna2| VGPR | BITS_32 | 196 , "amdgpu_cdna2"); -DEF_REGISTER(v197, Arch_amdgpu_cdna2| VGPR | BITS_32 | 197 , "amdgpu_cdna2"); -DEF_REGISTER(v198, Arch_amdgpu_cdna2| VGPR | BITS_32 | 198 , "amdgpu_cdna2"); -DEF_REGISTER(v199, Arch_amdgpu_cdna2| VGPR | BITS_32 | 199 , "amdgpu_cdna2"); -DEF_REGISTER(v200, Arch_amdgpu_cdna2| VGPR | BITS_32 | 200 , "amdgpu_cdna2"); -DEF_REGISTER(v201, Arch_amdgpu_cdna2| VGPR | BITS_32 | 201 , "amdgpu_cdna2"); -DEF_REGISTER(v202, Arch_amdgpu_cdna2| VGPR | BITS_32 | 202 , "amdgpu_cdna2"); -DEF_REGISTER(v203, Arch_amdgpu_cdna2| VGPR | BITS_32 | 203 , "amdgpu_cdna2"); -DEF_REGISTER(v204, Arch_amdgpu_cdna2| VGPR | BITS_32 | 204 , "amdgpu_cdna2"); -DEF_REGISTER(v205, Arch_amdgpu_cdna2| VGPR | BITS_32 | 205 , "amdgpu_cdna2"); -DEF_REGISTER(v206, Arch_amdgpu_cdna2| VGPR | BITS_32 | 206 , "amdgpu_cdna2"); -DEF_REGISTER(v207, Arch_amdgpu_cdna2| VGPR | BITS_32 | 207 , "amdgpu_cdna2"); -DEF_REGISTER(v208, Arch_amdgpu_cdna2| VGPR | BITS_32 | 208 , "amdgpu_cdna2"); -DEF_REGISTER(v209, Arch_amdgpu_cdna2| VGPR | BITS_32 | 209 , "amdgpu_cdna2"); -DEF_REGISTER(v210, Arch_amdgpu_cdna2| VGPR | BITS_32 | 210 , "amdgpu_cdna2"); -DEF_REGISTER(v211, Arch_amdgpu_cdna2| VGPR | BITS_32 | 211 , "amdgpu_cdna2"); -DEF_REGISTER(v212, Arch_amdgpu_cdna2| VGPR | BITS_32 | 212 , "amdgpu_cdna2"); -DEF_REGISTER(v213, Arch_amdgpu_cdna2| VGPR | BITS_32 | 213 , "amdgpu_cdna2"); -DEF_REGISTER(v214, Arch_amdgpu_cdna2| VGPR | BITS_32 | 214 , "amdgpu_cdna2"); -DEF_REGISTER(v215, Arch_amdgpu_cdna2| VGPR | BITS_32 | 215 , "amdgpu_cdna2"); -DEF_REGISTER(v216, Arch_amdgpu_cdna2| VGPR | BITS_32 | 216 , "amdgpu_cdna2"); -DEF_REGISTER(v217, Arch_amdgpu_cdna2| VGPR | BITS_32 | 217 , "amdgpu_cdna2"); -DEF_REGISTER(v218, Arch_amdgpu_cdna2| VGPR | BITS_32 | 218 , "amdgpu_cdna2"); -DEF_REGISTER(v219, Arch_amdgpu_cdna2| VGPR | BITS_32 | 219 , "amdgpu_cdna2"); -DEF_REGISTER(v220, Arch_amdgpu_cdna2| VGPR | BITS_32 | 220 , "amdgpu_cdna2"); -DEF_REGISTER(v221, Arch_amdgpu_cdna2| VGPR | BITS_32 | 221 , "amdgpu_cdna2"); -DEF_REGISTER(v222, Arch_amdgpu_cdna2| VGPR | BITS_32 | 222 , "amdgpu_cdna2"); -DEF_REGISTER(v223, Arch_amdgpu_cdna2| VGPR | BITS_32 | 223 , "amdgpu_cdna2"); -DEF_REGISTER(v224, Arch_amdgpu_cdna2| VGPR | BITS_32 | 224 , "amdgpu_cdna2"); -DEF_REGISTER(v225, Arch_amdgpu_cdna2| VGPR | BITS_32 | 225 , "amdgpu_cdna2"); -DEF_REGISTER(v226, Arch_amdgpu_cdna2| VGPR | BITS_32 | 226 , "amdgpu_cdna2"); -DEF_REGISTER(v227, Arch_amdgpu_cdna2| VGPR | BITS_32 | 227 , "amdgpu_cdna2"); -DEF_REGISTER(v228, Arch_amdgpu_cdna2| VGPR | BITS_32 | 228 , "amdgpu_cdna2"); -DEF_REGISTER(v229, Arch_amdgpu_cdna2| VGPR | BITS_32 | 229 , "amdgpu_cdna2"); -DEF_REGISTER(v230, Arch_amdgpu_cdna2| VGPR | BITS_32 | 230 , "amdgpu_cdna2"); -DEF_REGISTER(v231, Arch_amdgpu_cdna2| VGPR | BITS_32 | 231 , "amdgpu_cdna2"); -DEF_REGISTER(v232, Arch_amdgpu_cdna2| VGPR | BITS_32 | 232 , "amdgpu_cdna2"); -DEF_REGISTER(v233, Arch_amdgpu_cdna2| VGPR | BITS_32 | 233 , "amdgpu_cdna2"); -DEF_REGISTER(v234, Arch_amdgpu_cdna2| VGPR | BITS_32 | 234 , "amdgpu_cdna2"); -DEF_REGISTER(v235, Arch_amdgpu_cdna2| VGPR | BITS_32 | 235 , "amdgpu_cdna2"); -DEF_REGISTER(v236, Arch_amdgpu_cdna2| VGPR | BITS_32 | 236 , "amdgpu_cdna2"); -DEF_REGISTER(v237, Arch_amdgpu_cdna2| VGPR | BITS_32 | 237 , "amdgpu_cdna2"); -DEF_REGISTER(v238, Arch_amdgpu_cdna2| VGPR | BITS_32 | 238 , "amdgpu_cdna2"); -DEF_REGISTER(v239, Arch_amdgpu_cdna2| VGPR | BITS_32 | 239 , "amdgpu_cdna2"); -DEF_REGISTER(v240, Arch_amdgpu_cdna2| VGPR | BITS_32 | 240 , "amdgpu_cdna2"); -DEF_REGISTER(v241, Arch_amdgpu_cdna2| VGPR | BITS_32 | 241 , "amdgpu_cdna2"); -DEF_REGISTER(v242, Arch_amdgpu_cdna2| VGPR | BITS_32 | 242 , "amdgpu_cdna2"); -DEF_REGISTER(v243, Arch_amdgpu_cdna2| VGPR | BITS_32 | 243 , "amdgpu_cdna2"); -DEF_REGISTER(v244, Arch_amdgpu_cdna2| VGPR | BITS_32 | 244 , "amdgpu_cdna2"); -DEF_REGISTER(v245, Arch_amdgpu_cdna2| VGPR | BITS_32 | 245 , "amdgpu_cdna2"); -DEF_REGISTER(v246, Arch_amdgpu_cdna2| VGPR | BITS_32 | 246 , "amdgpu_cdna2"); -DEF_REGISTER(v247, Arch_amdgpu_cdna2| VGPR | BITS_32 | 247 , "amdgpu_cdna2"); -DEF_REGISTER(v248, Arch_amdgpu_cdna2| VGPR | BITS_32 | 248 , "amdgpu_cdna2"); -DEF_REGISTER(v249, Arch_amdgpu_cdna2| VGPR | BITS_32 | 249 , "amdgpu_cdna2"); -DEF_REGISTER(v250, Arch_amdgpu_cdna2| VGPR | BITS_32 | 250 , "amdgpu_cdna2"); -DEF_REGISTER(v251, Arch_amdgpu_cdna2| VGPR | BITS_32 | 251 , "amdgpu_cdna2"); -DEF_REGISTER(v252, Arch_amdgpu_cdna2| VGPR | BITS_32 | 252 , "amdgpu_cdna2"); -DEF_REGISTER(v253, Arch_amdgpu_cdna2| VGPR | BITS_32 | 253 , "amdgpu_cdna2"); -DEF_REGISTER(v254, Arch_amdgpu_cdna2| VGPR | BITS_32 | 254 , "amdgpu_cdna2"); -DEF_REGISTER(v255, Arch_amdgpu_cdna2| VGPR | BITS_32 | 255 , "amdgpu_cdna2"); -DEF_REGISTER(acc0, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 0 , "amdgpu_cdna2"); -DEF_REGISTER(acc1, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 1 , "amdgpu_cdna2"); -DEF_REGISTER(acc2, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 2 , "amdgpu_cdna2"); -DEF_REGISTER(acc3, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 3 , "amdgpu_cdna2"); -DEF_REGISTER(acc4, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 4 , "amdgpu_cdna2"); -DEF_REGISTER(acc5, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 5 , "amdgpu_cdna2"); -DEF_REGISTER(acc6, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 6 , "amdgpu_cdna2"); -DEF_REGISTER(acc7, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 7 , "amdgpu_cdna2"); -DEF_REGISTER(acc8, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 8 , "amdgpu_cdna2"); -DEF_REGISTER(acc9, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 9 , "amdgpu_cdna2"); -DEF_REGISTER(acc10, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 10 , "amdgpu_cdna2"); -DEF_REGISTER(acc11, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 11 , "amdgpu_cdna2"); -DEF_REGISTER(acc12, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 12 , "amdgpu_cdna2"); -DEF_REGISTER(acc13, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 13 , "amdgpu_cdna2"); -DEF_REGISTER(acc14, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 14 , "amdgpu_cdna2"); -DEF_REGISTER(acc15, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 15 , "amdgpu_cdna2"); -DEF_REGISTER(acc16, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 16 , "amdgpu_cdna2"); -DEF_REGISTER(acc17, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 17 , "amdgpu_cdna2"); -DEF_REGISTER(acc18, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 18 , "amdgpu_cdna2"); -DEF_REGISTER(acc19, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 19 , "amdgpu_cdna2"); -DEF_REGISTER(acc20, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 20 , "amdgpu_cdna2"); -DEF_REGISTER(acc21, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 21 , "amdgpu_cdna2"); -DEF_REGISTER(acc22, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 22 , "amdgpu_cdna2"); -DEF_REGISTER(acc23, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 23 , "amdgpu_cdna2"); -DEF_REGISTER(acc24, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 24 , "amdgpu_cdna2"); -DEF_REGISTER(acc25, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 25 , "amdgpu_cdna2"); -DEF_REGISTER(acc26, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 26 , "amdgpu_cdna2"); -DEF_REGISTER(acc27, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 27 , "amdgpu_cdna2"); -DEF_REGISTER(acc28, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 28 , "amdgpu_cdna2"); -DEF_REGISTER(acc29, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 29 , "amdgpu_cdna2"); -DEF_REGISTER(acc30, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 30 , "amdgpu_cdna2"); -DEF_REGISTER(acc31, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 31 , "amdgpu_cdna2"); -DEF_REGISTER(acc32, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 32 , "amdgpu_cdna2"); -DEF_REGISTER(acc33, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 33 , "amdgpu_cdna2"); -DEF_REGISTER(acc34, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 34 , "amdgpu_cdna2"); -DEF_REGISTER(acc35, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 35 , "amdgpu_cdna2"); -DEF_REGISTER(acc36, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 36 , "amdgpu_cdna2"); -DEF_REGISTER(acc37, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 37 , "amdgpu_cdna2"); -DEF_REGISTER(acc38, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 38 , "amdgpu_cdna2"); -DEF_REGISTER(acc39, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 39 , "amdgpu_cdna2"); -DEF_REGISTER(acc40, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 40 , "amdgpu_cdna2"); -DEF_REGISTER(acc41, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 41 , "amdgpu_cdna2"); -DEF_REGISTER(acc42, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 42 , "amdgpu_cdna2"); -DEF_REGISTER(acc43, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 43 , "amdgpu_cdna2"); -DEF_REGISTER(acc44, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 44 , "amdgpu_cdna2"); -DEF_REGISTER(acc45, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 45 , "amdgpu_cdna2"); -DEF_REGISTER(acc46, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 46 , "amdgpu_cdna2"); -DEF_REGISTER(acc47, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 47 , "amdgpu_cdna2"); -DEF_REGISTER(acc48, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 48 , "amdgpu_cdna2"); -DEF_REGISTER(acc49, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 49 , "amdgpu_cdna2"); -DEF_REGISTER(acc50, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 50 , "amdgpu_cdna2"); -DEF_REGISTER(acc51, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 51 , "amdgpu_cdna2"); -DEF_REGISTER(acc52, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 52 , "amdgpu_cdna2"); -DEF_REGISTER(acc53, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 53 , "amdgpu_cdna2"); -DEF_REGISTER(acc54, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 54 , "amdgpu_cdna2"); -DEF_REGISTER(acc55, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 55 , "amdgpu_cdna2"); -DEF_REGISTER(acc56, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 56 , "amdgpu_cdna2"); -DEF_REGISTER(acc57, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 57 , "amdgpu_cdna2"); -DEF_REGISTER(acc58, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 58 , "amdgpu_cdna2"); -DEF_REGISTER(acc59, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 59 , "amdgpu_cdna2"); -DEF_REGISTER(acc60, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 60 , "amdgpu_cdna2"); -DEF_REGISTER(acc61, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 61 , "amdgpu_cdna2"); -DEF_REGISTER(acc62, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 62 , "amdgpu_cdna2"); -DEF_REGISTER(acc63, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 63 , "amdgpu_cdna2"); -DEF_REGISTER(acc64, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 64 , "amdgpu_cdna2"); -DEF_REGISTER(acc65, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 65 , "amdgpu_cdna2"); -DEF_REGISTER(acc66, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 66 , "amdgpu_cdna2"); -DEF_REGISTER(acc67, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 67 , "amdgpu_cdna2"); -DEF_REGISTER(acc68, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 68 , "amdgpu_cdna2"); -DEF_REGISTER(acc69, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 69 , "amdgpu_cdna2"); -DEF_REGISTER(acc70, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 70 , "amdgpu_cdna2"); -DEF_REGISTER(acc71, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 71 , "amdgpu_cdna2"); -DEF_REGISTER(acc72, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 72 , "amdgpu_cdna2"); -DEF_REGISTER(acc73, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 73 , "amdgpu_cdna2"); -DEF_REGISTER(acc74, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 74 , "amdgpu_cdna2"); -DEF_REGISTER(acc75, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 75 , "amdgpu_cdna2"); -DEF_REGISTER(acc76, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 76 , "amdgpu_cdna2"); -DEF_REGISTER(acc77, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 77 , "amdgpu_cdna2"); -DEF_REGISTER(acc78, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 78 , "amdgpu_cdna2"); -DEF_REGISTER(acc79, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 79 , "amdgpu_cdna2"); -DEF_REGISTER(acc80, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 80 , "amdgpu_cdna2"); -DEF_REGISTER(acc81, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 81 , "amdgpu_cdna2"); -DEF_REGISTER(acc82, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 82 , "amdgpu_cdna2"); -DEF_REGISTER(acc83, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 83 , "amdgpu_cdna2"); -DEF_REGISTER(acc84, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 84 , "amdgpu_cdna2"); -DEF_REGISTER(acc85, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 85 , "amdgpu_cdna2"); -DEF_REGISTER(acc86, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 86 , "amdgpu_cdna2"); -DEF_REGISTER(acc87, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 87 , "amdgpu_cdna2"); -DEF_REGISTER(acc88, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 88 , "amdgpu_cdna2"); -DEF_REGISTER(acc89, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 89 , "amdgpu_cdna2"); -DEF_REGISTER(acc90, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 90 , "amdgpu_cdna2"); -DEF_REGISTER(acc91, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 91 , "amdgpu_cdna2"); -DEF_REGISTER(acc92, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 92 , "amdgpu_cdna2"); -DEF_REGISTER(acc93, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 93 , "amdgpu_cdna2"); -DEF_REGISTER(acc94, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 94 , "amdgpu_cdna2"); -DEF_REGISTER(acc95, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 95 , "amdgpu_cdna2"); -DEF_REGISTER(acc96, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 96 , "amdgpu_cdna2"); -DEF_REGISTER(acc97, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 97 , "amdgpu_cdna2"); -DEF_REGISTER(acc98, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 98 , "amdgpu_cdna2"); -DEF_REGISTER(acc99, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 99 , "amdgpu_cdna2"); -DEF_REGISTER(acc100, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 100 , "amdgpu_cdna2"); -DEF_REGISTER(acc101, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 101 , "amdgpu_cdna2"); -DEF_REGISTER(acc102, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 102 , "amdgpu_cdna2"); -DEF_REGISTER(acc103, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 103 , "amdgpu_cdna2"); -DEF_REGISTER(acc104, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 104 , "amdgpu_cdna2"); -DEF_REGISTER(acc105, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 105 , "amdgpu_cdna2"); -DEF_REGISTER(acc106, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 106 , "amdgpu_cdna2"); -DEF_REGISTER(acc107, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 107 , "amdgpu_cdna2"); -DEF_REGISTER(acc108, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 108 , "amdgpu_cdna2"); -DEF_REGISTER(acc109, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 109 , "amdgpu_cdna2"); -DEF_REGISTER(acc110, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 110 , "amdgpu_cdna2"); -DEF_REGISTER(acc111, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 111 , "amdgpu_cdna2"); -DEF_REGISTER(acc112, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 112 , "amdgpu_cdna2"); -DEF_REGISTER(acc113, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 113 , "amdgpu_cdna2"); -DEF_REGISTER(acc114, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 114 , "amdgpu_cdna2"); -DEF_REGISTER(acc115, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 115 , "amdgpu_cdna2"); -DEF_REGISTER(acc116, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 116 , "amdgpu_cdna2"); -DEF_REGISTER(acc117, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 117 , "amdgpu_cdna2"); -DEF_REGISTER(acc118, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 118 , "amdgpu_cdna2"); -DEF_REGISTER(acc119, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 119 , "amdgpu_cdna2"); -DEF_REGISTER(acc120, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 120 , "amdgpu_cdna2"); -DEF_REGISTER(acc121, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 121 , "amdgpu_cdna2"); -DEF_REGISTER(acc122, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 122 , "amdgpu_cdna2"); -DEF_REGISTER(acc123, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 123 , "amdgpu_cdna2"); -DEF_REGISTER(acc124, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 124 , "amdgpu_cdna2"); -DEF_REGISTER(acc125, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 125 , "amdgpu_cdna2"); -DEF_REGISTER(acc126, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 126 , "amdgpu_cdna2"); -DEF_REGISTER(acc127, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 127 , "amdgpu_cdna2"); -DEF_REGISTER(acc128, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 128 , "amdgpu_cdna2"); -DEF_REGISTER(acc129, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 129 , "amdgpu_cdna2"); -DEF_REGISTER(acc130, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 130 , "amdgpu_cdna2"); -DEF_REGISTER(acc131, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 131 , "amdgpu_cdna2"); -DEF_REGISTER(acc132, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 132 , "amdgpu_cdna2"); -DEF_REGISTER(acc133, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 133 , "amdgpu_cdna2"); -DEF_REGISTER(acc134, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 134 , "amdgpu_cdna2"); -DEF_REGISTER(acc135, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 135 , "amdgpu_cdna2"); -DEF_REGISTER(acc136, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 136 , "amdgpu_cdna2"); -DEF_REGISTER(acc137, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 137 , "amdgpu_cdna2"); -DEF_REGISTER(acc138, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 138 , "amdgpu_cdna2"); -DEF_REGISTER(acc139, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 139 , "amdgpu_cdna2"); -DEF_REGISTER(acc140, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 140 , "amdgpu_cdna2"); -DEF_REGISTER(acc141, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 141 , "amdgpu_cdna2"); -DEF_REGISTER(acc142, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 142 , "amdgpu_cdna2"); -DEF_REGISTER(acc143, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 143 , "amdgpu_cdna2"); -DEF_REGISTER(acc144, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 144 , "amdgpu_cdna2"); -DEF_REGISTER(acc145, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 145 , "amdgpu_cdna2"); -DEF_REGISTER(acc146, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 146 , "amdgpu_cdna2"); -DEF_REGISTER(acc147, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 147 , "amdgpu_cdna2"); -DEF_REGISTER(acc148, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 148 , "amdgpu_cdna2"); -DEF_REGISTER(acc149, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 149 , "amdgpu_cdna2"); -DEF_REGISTER(acc150, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 150 , "amdgpu_cdna2"); -DEF_REGISTER(acc151, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 151 , "amdgpu_cdna2"); -DEF_REGISTER(acc152, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 152 , "amdgpu_cdna2"); -DEF_REGISTER(acc153, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 153 , "amdgpu_cdna2"); -DEF_REGISTER(acc154, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 154 , "amdgpu_cdna2"); -DEF_REGISTER(acc155, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 155 , "amdgpu_cdna2"); -DEF_REGISTER(acc156, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 156 , "amdgpu_cdna2"); -DEF_REGISTER(acc157, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 157 , "amdgpu_cdna2"); -DEF_REGISTER(acc158, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 158 , "amdgpu_cdna2"); -DEF_REGISTER(acc159, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 159 , "amdgpu_cdna2"); -DEF_REGISTER(acc160, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 160 , "amdgpu_cdna2"); -DEF_REGISTER(acc161, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 161 , "amdgpu_cdna2"); -DEF_REGISTER(acc162, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 162 , "amdgpu_cdna2"); -DEF_REGISTER(acc163, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 163 , "amdgpu_cdna2"); -DEF_REGISTER(acc164, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 164 , "amdgpu_cdna2"); -DEF_REGISTER(acc165, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 165 , "amdgpu_cdna2"); -DEF_REGISTER(acc166, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 166 , "amdgpu_cdna2"); -DEF_REGISTER(acc167, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 167 , "amdgpu_cdna2"); -DEF_REGISTER(acc168, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 168 , "amdgpu_cdna2"); -DEF_REGISTER(acc169, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 169 , "amdgpu_cdna2"); -DEF_REGISTER(acc170, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 170 , "amdgpu_cdna2"); -DEF_REGISTER(acc171, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 171 , "amdgpu_cdna2"); -DEF_REGISTER(acc172, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 172 , "amdgpu_cdna2"); -DEF_REGISTER(acc173, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 173 , "amdgpu_cdna2"); -DEF_REGISTER(acc174, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 174 , "amdgpu_cdna2"); -DEF_REGISTER(acc175, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 175 , "amdgpu_cdna2"); -DEF_REGISTER(acc176, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 176 , "amdgpu_cdna2"); -DEF_REGISTER(acc177, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 177 , "amdgpu_cdna2"); -DEF_REGISTER(acc178, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 178 , "amdgpu_cdna2"); -DEF_REGISTER(acc179, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 179 , "amdgpu_cdna2"); -DEF_REGISTER(acc180, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 180 , "amdgpu_cdna2"); -DEF_REGISTER(acc181, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 181 , "amdgpu_cdna2"); -DEF_REGISTER(acc182, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 182 , "amdgpu_cdna2"); -DEF_REGISTER(acc183, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 183 , "amdgpu_cdna2"); -DEF_REGISTER(acc184, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 184 , "amdgpu_cdna2"); -DEF_REGISTER(acc185, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 185 , "amdgpu_cdna2"); -DEF_REGISTER(acc186, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 186 , "amdgpu_cdna2"); -DEF_REGISTER(acc187, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 187 , "amdgpu_cdna2"); -DEF_REGISTER(acc188, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 188 , "amdgpu_cdna2"); -DEF_REGISTER(acc189, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 189 , "amdgpu_cdna2"); -DEF_REGISTER(acc190, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 190 , "amdgpu_cdna2"); -DEF_REGISTER(acc191, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 191 , "amdgpu_cdna2"); -DEF_REGISTER(acc192, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 192 , "amdgpu_cdna2"); -DEF_REGISTER(acc193, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 193 , "amdgpu_cdna2"); -DEF_REGISTER(acc194, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 194 , "amdgpu_cdna2"); -DEF_REGISTER(acc195, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 195 , "amdgpu_cdna2"); -DEF_REGISTER(acc196, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 196 , "amdgpu_cdna2"); -DEF_REGISTER(acc197, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 197 , "amdgpu_cdna2"); -DEF_REGISTER(acc198, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 198 , "amdgpu_cdna2"); -DEF_REGISTER(acc199, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 199 , "amdgpu_cdna2"); -DEF_REGISTER(acc200, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 200 , "amdgpu_cdna2"); -DEF_REGISTER(acc201, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 201 , "amdgpu_cdna2"); -DEF_REGISTER(acc202, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 202 , "amdgpu_cdna2"); -DEF_REGISTER(acc203, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 203 , "amdgpu_cdna2"); -DEF_REGISTER(acc204, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 204 , "amdgpu_cdna2"); -DEF_REGISTER(acc205, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 205 , "amdgpu_cdna2"); -DEF_REGISTER(acc206, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 206 , "amdgpu_cdna2"); -DEF_REGISTER(acc207, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 207 , "amdgpu_cdna2"); -DEF_REGISTER(acc208, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 208 , "amdgpu_cdna2"); -DEF_REGISTER(acc209, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 209 , "amdgpu_cdna2"); -DEF_REGISTER(acc210, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 210 , "amdgpu_cdna2"); -DEF_REGISTER(acc211, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 211 , "amdgpu_cdna2"); -DEF_REGISTER(acc212, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 212 , "amdgpu_cdna2"); -DEF_REGISTER(acc213, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 213 , "amdgpu_cdna2"); -DEF_REGISTER(acc214, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 214 , "amdgpu_cdna2"); -DEF_REGISTER(acc215, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 215 , "amdgpu_cdna2"); -DEF_REGISTER(acc216, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 216 , "amdgpu_cdna2"); -DEF_REGISTER(acc217, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 217 , "amdgpu_cdna2"); -DEF_REGISTER(acc218, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 218 , "amdgpu_cdna2"); -DEF_REGISTER(acc219, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 219 , "amdgpu_cdna2"); -DEF_REGISTER(acc220, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 220 , "amdgpu_cdna2"); -DEF_REGISTER(acc221, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 221 , "amdgpu_cdna2"); -DEF_REGISTER(acc222, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 222 , "amdgpu_cdna2"); -DEF_REGISTER(acc223, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 223 , "amdgpu_cdna2"); -DEF_REGISTER(acc224, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 224 , "amdgpu_cdna2"); -DEF_REGISTER(acc225, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 225 , "amdgpu_cdna2"); -DEF_REGISTER(acc226, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 226 , "amdgpu_cdna2"); -DEF_REGISTER(acc227, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 227 , "amdgpu_cdna2"); -DEF_REGISTER(acc228, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 228 , "amdgpu_cdna2"); -DEF_REGISTER(acc229, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 229 , "amdgpu_cdna2"); -DEF_REGISTER(acc230, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 230 , "amdgpu_cdna2"); -DEF_REGISTER(acc231, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 231 , "amdgpu_cdna2"); -DEF_REGISTER(acc232, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 232 , "amdgpu_cdna2"); -DEF_REGISTER(acc233, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 233 , "amdgpu_cdna2"); -DEF_REGISTER(acc234, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 234 , "amdgpu_cdna2"); -DEF_REGISTER(acc235, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 235 , "amdgpu_cdna2"); -DEF_REGISTER(acc236, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 236 , "amdgpu_cdna2"); -DEF_REGISTER(acc237, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 237 , "amdgpu_cdna2"); -DEF_REGISTER(acc238, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 238 , "amdgpu_cdna2"); -DEF_REGISTER(acc239, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 239 , "amdgpu_cdna2"); -DEF_REGISTER(acc240, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 240 , "amdgpu_cdna2"); -DEF_REGISTER(acc241, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 241 , "amdgpu_cdna2"); -DEF_REGISTER(acc242, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 242 , "amdgpu_cdna2"); -DEF_REGISTER(acc243, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 243 , "amdgpu_cdna2"); -DEF_REGISTER(acc244, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 244 , "amdgpu_cdna2"); -DEF_REGISTER(acc245, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 245 , "amdgpu_cdna2"); -DEF_REGISTER(acc246, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 246 , "amdgpu_cdna2"); -DEF_REGISTER(acc247, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 247 , "amdgpu_cdna2"); -DEF_REGISTER(acc248, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 248 , "amdgpu_cdna2"); -DEF_REGISTER(acc249, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 249 , "amdgpu_cdna2"); -DEF_REGISTER(acc250, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 250 , "amdgpu_cdna2"); -DEF_REGISTER(acc251, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 251 , "amdgpu_cdna2"); -DEF_REGISTER(acc252, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 252 , "amdgpu_cdna2"); -DEF_REGISTER(acc253, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 253 , "amdgpu_cdna2"); -DEF_REGISTER(acc254, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 254 , "amdgpu_cdna2"); -DEF_REGISTER(acc255, Arch_amdgpu_cdna2| ACC_VGPR | BITS_32 | 255 , "amdgpu_cdna2"); -#endif From 2e08788d6215cf361eb2b9e7d332eb31a29c57d1 Mon Sep 17 00:00:00 2001 From: bbiiggppiigg Date: Thu, 3 Mar 2022 23:14:50 +0000 Subject: [PATCH 081/505] Fix potential buffer overrun in AMDGPU decoders (#1208) * add assert to check for potential buffer overun * add assert to check for potential buffer overrun in vega --- .../AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C | 110 ++- .../AMDGPU/vega/amdgpu_vega_decoder_impl.C | 921 +++++++++--------- 2 files changed, 563 insertions(+), 468 deletions(-) diff --git a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C index 66947766d8..645f938477 100644 --- a/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C +++ b/instructionAPI/src/AMDGPU/cdna2/amdgpu_cdna2_decoder_impl.C @@ -1628,6 +1628,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_SOP1(){ layout.OP = longfield<8,15>(insn_long); layout.SDST = longfield<16,22>(insn_long); layout.SSRC0 = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_SOP1Operands(); @@ -1640,6 +1641,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_SOPC(){ layout.OP = longfield<16,22>(insn_long); layout.SSRC0 = longfield<0,7>(insn_long); layout.SSRC1 = longfield<8,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_SOPCOperands(); @@ -1651,6 +1653,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_SOPP(){ layout.ENCODING = longfield<23,31>(insn_long); layout.OP = longfield<16,22>(insn_long); layout.SIMM16 = longfield<0,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_SOPPOperands(); @@ -1663,6 +1666,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_SOPK(){ layout.OP = longfield<23,27>(insn_long); layout.SDST = longfield<16,22>(insn_long); layout.SIMM16 = longfield<0,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_SOPKOperands(); @@ -1676,6 +1680,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_SOP2(){ layout.SDST = longfield<16,22>(insn_long); layout.SSRC0 = longfield<0,7>(insn_long); layout.SSRC1 = longfield<8,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_SOP2Operands(); @@ -1694,6 +1699,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_SMEM(){ layout.SDATA = longfield<6,12>(insn_long); layout.SOFFSET = longfield<57,63>(insn_long); layout.SOFFSET_EN = longfield<14,14>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_SMEMOperands(); @@ -1706,6 +1712,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP1(){ layout.OP = longfield<9,16>(insn_long); layout.SRC0 = longfield<0,8>(insn_long); layout.VDST = longfield<17,24>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP1Operands(); @@ -1718,6 +1725,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOPC(){ layout.OP = longfield<17,24>(insn_long); layout.SRC0 = longfield<0,8>(insn_long); layout.VSRC1 = longfield<9,16>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOPCOperands(); @@ -1731,6 +1739,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP2(){ layout.SRC0 = longfield<0,8>(insn_long); layout.VDST = longfield<17,24>(insn_long); layout.VSRC1 = longfield<9,16>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP2Operands(); @@ -1745,6 +1754,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VINTRP(){ layout.OP = longfield<16,17>(insn_long); layout.VDST = longfield<18,25>(insn_long); layout.VSRC = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VINTRPOperands(); @@ -1765,6 +1775,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P(){ layout.SRC1 = longfield<41,49>(insn_long); layout.SRC2 = longfield<50,58>(insn_long); layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP3POperands(); @@ -1784,6 +1795,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3(){ layout.SRC1 = longfield<41,49>(insn_long); layout.SRC2 = longfield<50,58>(insn_long); layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP3Operands(); @@ -1802,6 +1814,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_DS(){ layout.OFFSET1 = longfield<8,15>(insn_long); layout.OP = longfield<17,24>(insn_long); layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_DS_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_DS_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_DS_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_DSOperands(); @@ -1824,6 +1837,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_MUBUF(){ layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; layout.VADDR = longfield<32,39>(insn_long); layout.VDATA = longfield<40,47>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_MUBUFOperands(); @@ -1847,6 +1861,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_MTBUF(){ layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; layout.VADDR = longfield<32,39>(insn_long); layout.VDATA = longfield<40,47>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_MTBUFOperands(); @@ -1872,6 +1887,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_MIMG(){ layout.UNORM = longfield<12,12>(insn_long); layout.VADDR = longfield<32,39>(insn_long); layout.VDATA = longfield<40,47>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_MIMGOperands(); @@ -1893,6 +1909,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT(){ layout.SEG = longfield<14,15>(insn_long); layout.SLC = longfield<17,17>(insn_long); layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_FLATOperands(); @@ -1914,6 +1931,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT_GLBL(){ layout.SEG = longfield<14,15>(insn_long); layout.SLC = longfield<17,17>(insn_long); layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_FLAT_GLBLOperands(); @@ -1935,6 +1953,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_FLAT_SCRATCH(){ layout.SEG = longfield<14,15>(insn_long); layout.SLC = longfield<17,17>(insn_long); layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_FLAT_SCRATCHOperands(); @@ -1949,6 +1968,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP2_LITERAL(){ layout.SRC0 = longfield<0,8>(insn_long); layout.VDST = longfield<17,24>(insn_long); layout.VSRC1 = longfield<9,16>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP2_LITERALOperands(); @@ -1967,6 +1987,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3B(){ layout.SRC1 = longfield<41,49>(insn_long); layout.SRC2 = longfield<50,58>(insn_long); layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP3BOperands(); @@ -1986,6 +2007,7 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P_MFMA(){ layout.SRC1 = longfield<41,49>(insn_long); layout.SRC2 = longfield<50,58>(insn_long); layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[0]) && "Opcode over or underflow"); const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[layout.OP]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); finalizeENC_VOP3P_MFMAOperands(); @@ -1994,133 +2016,177 @@ void InstructionDecoder_amdgpu_cdna2::decodeENC_VOP3P_MFMA(){ void InstructionDecoder_amdgpu_cdna2::mainDecodeOpcode(){ if(IS_ENC_SOP1(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[longfield<8,15>(insn_long)]; + uint32_t op_value = longfield<8,15>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP1_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_SOP1; } else if(IS_ENC_SOPC(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[longfield<16,22>(insn_long)]; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPC_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_SOPC; } else if(IS_ENC_SOPP(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[longfield<16,22>(insn_long)]; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPP_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_SOPP; } else if(IS_ENC_SOPK(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[longfield<23,27>(insn_long)]; + uint32_t op_value = longfield<23,27>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOPK_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_SOPK; } else if(IS_ENC_SOP2(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[longfield<23,29>(insn_long)]; + uint32_t op_value = longfield<23,29>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SOP2_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_SOP2; } else if(IS_ENC_SMEM(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[longfield<18,25>(insn_long)]; + uint32_t op_value = longfield<18,25>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_SMEM_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_SMEM; } else if(IS_ENC_VOP1(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[longfield<9,16>(insn_long)]; + uint32_t op_value = longfield<9,16>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP1_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP1; } else if(IS_ENC_VOPC(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[longfield<17,24>(insn_long)]; + uint32_t op_value = longfield<17,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOPC_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOPC; } else if(IS_ENC_VOP2(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[longfield<25,30>(insn_long)]; + uint32_t op_value = longfield<25,30>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP2; } else if(IS_ENC_VINTRP(insn_long)){ insn_size = 4; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[longfield<16,17>(insn_long)]; + uint32_t op_value = longfield<16,17>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VINTRP_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VINTRP; } else if(IS_ENC_VOP3P(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[longfield<16,22>(insn_long)]; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP3P; } else if(IS_ENC_VOP3(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[longfield<16,25>(insn_long)]; + uint32_t op_value = longfield<16,25>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP3; } else if(IS_ENC_DS(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_DS_insn_table[longfield<17,24>(insn_long)]; + uint32_t op_value = longfield<17,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_DS_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_DS_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_DS_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_DS; } else if(IS_ENC_MUBUF(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[longfield<18,24>(insn_long)]; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MUBUF_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_MUBUF; } else if(IS_ENC_MTBUF(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[longfield<15,18>(insn_long)]; + uint32_t op_value = longfield<15,18>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MTBUF_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_MTBUF; } else if(IS_ENC_MIMG(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[longfield<18,24>(insn_long)]; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_MIMG_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_MIMG; } else if(IS_ENC_FLAT(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[longfield<18,24>(insn_long)]; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_FLAT; } else if(IS_ENC_FLAT_GLBL(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[longfield<18,24>(insn_long)]; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_GLBL_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_FLAT_GLBL; } else if(IS_ENC_FLAT_SCRATCH(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[longfield<18,24>(insn_long)]; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_FLAT_SCRATCH_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_FLAT_SCRATCH; } else if(IS_ENC_VOP2_LITERAL(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[longfield<25,30>(insn_long)]; + uint32_t op_value = longfield<25,30>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP2_LITERAL_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP2_LITERAL; } else if(IS_ENC_VOP3B(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[longfield<16,25>(insn_long)]; + uint32_t op_value = longfield<16,25>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3B_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP3B; } else if(IS_ENC_VOP3P_MFMA(insn_long)){ insn_size = 8; - const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[longfield<16,22>(insn_long)]; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table) / sizeof(amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_cdna2_insn_entry &insn_entry = amdgpu_cdna2_insn_entry::ENC_VOP3P_MFMA_insn_table[op]; this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); instr_family = ENC_VOP3P_MFMA; } diff --git a/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C index 9506a7661d..3c5874fe3d 100644 --- a/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C +++ b/instructionAPI/src/AMDGPU/vega/amdgpu_vega_decoder_impl.C @@ -1,484 +1,513 @@ +#define CHECK(t) assert(layout.op >= 0 && layout.op < LEN(ARR(t)) && "layout.op overflow or underflow ") + +#define DECODE_AND_CHECK(t,l,h) \ + uint32_t op_value = longfield(insn_long); \ + CHECK2(t); \ + const amdgpu_vega_insn_entry & insn_entry = ARR(t) [op_value]; + +#define CHECK2(t) assert( op_value < LEN(ARR(t)) && "layout.op overflow or underflow ") +#define ARR(t) amdgpu_vega_insn_entry::TABLE(t) +#define TABLE(t) t##_insn_table +#define LEN(A) sizeof(A)/sizeof(A[0]) + void InstructionDecoder_amdgpu_vega::decodeSOP2(){ - unsigned insn_size_ = 4; - layout_sop2 & layout = insn_layout.sop2; - layout.ssrc0 = longfield<0,7>(insn_long); - layout.ssrc1 = longfield<8,15>(insn_long); - layout.sdst = longfield<16,22>(insn_long); - layout.op = longfield<23,29>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop2_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeSOP2Operands(); + unsigned insn_size_ = 4; + layout_sop2 & layout = insn_layout.sop2; + layout.ssrc0 = longfield<0,7>(insn_long); + layout.ssrc1 = longfield<8,15>(insn_long); + layout.sdst = longfield<16,22>(insn_long); + layout.op = longfield<23,29>(insn_long); + CHECK(sop2); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop2_insn_table[layout.op]; + decodeOperands(insn_entry); + + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeSOP2Operands(); } void InstructionDecoder_amdgpu_vega::decodeSOP1(){ - unsigned insn_size_ = 4; - layout_sop1 & layout = insn_layout.sop1; - layout.ssrc0 = longfield<0,7>(insn_long); - layout.op = longfield<8,15>(insn_long); - layout.sdst = longfield<16,22>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop1_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeSOP1Operands(); + unsigned insn_size_ = 4; + layout_sop1 & layout = insn_layout.sop1; + layout.ssrc0 = longfield<0,7>(insn_long); + layout.op = longfield<8,15>(insn_long); + layout.sdst = longfield<16,22>(insn_long); + CHECK(sop1); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop1_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeSOP1Operands(); } void InstructionDecoder_amdgpu_vega::decodeSOPK(){ - unsigned insn_size_ = 4; - layout_sopk & layout = insn_layout.sopk; - layout.simm16 = longfield<0,15>(insn_long); - layout.sdst = longfield<16,22>(insn_long); - layout.op = longfield<23,27>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopk_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeSOPKOperands(); + unsigned insn_size_ = 4; + layout_sopk & layout = insn_layout.sopk; + layout.simm16 = longfield<0,15>(insn_long); + layout.sdst = longfield<16,22>(insn_long); + layout.op = longfield<23,27>(insn_long); + CHECK(sopk); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopk_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeSOPKOperands(); } void InstructionDecoder_amdgpu_vega::decodeSOPC(){ - unsigned insn_size_ = 4; - layout_sopc & layout = insn_layout.sopc; - layout.ssrc0 = longfield<0,7>(insn_long); - layout.ssrc1 = longfield<8,15>(insn_long); - layout.op = longfield<16,22>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopc_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeSOPCOperands(); + unsigned insn_size_ = 4; + layout_sopc & layout = insn_layout.sopc; + layout.ssrc0 = longfield<0,7>(insn_long); + layout.ssrc1 = longfield<8,15>(insn_long); + layout.op = longfield<16,22>(insn_long); + CHECK(sopc); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopc_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeSOPCOperands(); } void InstructionDecoder_amdgpu_vega::decodeSOPP(){ - unsigned insn_size_ = 4; - layout_sopp & layout = insn_layout.sopp; - layout.simm16 = longfield<0,15>(insn_long); - layout.op = longfield<16,22>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopp_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeSOPPOperands(); + unsigned insn_size_ = 4; + layout_sopp & layout = insn_layout.sopp; + layout.simm16 = longfield<0,15>(insn_long); + layout.op = longfield<16,22>(insn_long); + CHECK(sopp); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopp_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeSOPPOperands(); } void InstructionDecoder_amdgpu_vega::decodeSMEM(){ - unsigned insn_size_ = 8; - layout_smem & layout = insn_layout.smem; - layout.sbase = longfield<0,5>(insn_long); - layout.sdata = longfield<6,12>(insn_long); - layout.soe = longfield<14,14>(insn_long); - layout.nv = longfield<15,15>(insn_long); - layout.glc = longfield<16,16>(insn_long); - layout.imm = longfield<17,17>(insn_long); - layout.op = longfield<18,25>(insn_long); - layout.offset = longfield<32,52>(insn_long); - layout.soffset = longfield<57,63>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::smem_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeSMEMOperands(); + unsigned insn_size_ = 8; + layout_smem & layout = insn_layout.smem; + layout.sbase = longfield<0,5>(insn_long); + layout.sdata = longfield<6,12>(insn_long); + layout.soe = longfield<14,14>(insn_long); + layout.nv = longfield<15,15>(insn_long); + layout.glc = longfield<16,16>(insn_long); + layout.imm = longfield<17,17>(insn_long); + layout.op = longfield<18,25>(insn_long); + layout.offset = longfield<32,52>(insn_long); + layout.soffset = longfield<57,63>(insn_long); + CHECK(smem); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::smem_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeSMEMOperands(); } void InstructionDecoder_amdgpu_vega::decodeVOP2(){ - unsigned insn_size_ = 4; - layout_vop2 & layout = insn_layout.vop2; - layout.src0 = longfield<0,8>(insn_long); - layout.vsrc1 = longfield<9,16>(insn_long); - layout.vdst = longfield<17,24>(insn_long); - layout.op = longfield<25,30>(insn_long); - if (layout.src0 == 249){ - vop_literal_layout_sdwa &vop_literal = layout.literal.sdwa; - vop_literal.src0 = longfield<32,39>(insn_long); - vop_literal.dst_sel = longfield<40,42>(insn_long); - vop_literal.dst_u = longfield<43,44>(insn_long); - vop_literal.clmp = longfield<45,45>(insn_long); - vop_literal.omod = longfield<46,47>(insn_long); - vop_literal.src0_sel = longfield<48,50>(insn_long); - vop_literal.src0_next = longfield<51,51>(insn_long); - vop_literal.src0_neg = longfield<52,52>(insn_long); - vop_literal.src0_abs = longfield<53,53>(insn_long); - vop_literal.s0 = longfield<55,55>(insn_long); - vop_literal.src1_sel = longfield<56,58>(insn_long); - vop_literal.src_sext = longfield<59,59>(insn_long); - vop_literal.src1_neg = longfield<60,60>(insn_long); - vop_literal.s1 = longfield<63,63>(insn_long); - } - if (layout.src0 == 250){ - vop_literal_layout_dpp &vop_literal = layout.literal.dpp; - vop_literal.src0 = longfield<32,39>(insn_long); - vop_literal.dpp_ctrl = longfield<40,48>(insn_long); - vop_literal.bc = longfield<51,51>(insn_long); - vop_literal.src0_neg = longfield<52,52>(insn_long); - vop_literal.src0_abs = longfield<53,53>(insn_long); - vop_literal.src1_neg = longfield<54,54>(insn_long); - vop_literal.src1_abs = longfield<55,55>(insn_long); - vop_literal.bank_mask = longfield<56,59>(insn_long); - vop_literal.row_mask = longfield<60,63>(insn_long); - } - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop2_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeVOP2Operands(); + unsigned insn_size_ = 4; + layout_vop2 & layout = insn_layout.vop2; + layout.src0 = longfield<0,8>(insn_long); + layout.vsrc1 = longfield<9,16>(insn_long); + layout.vdst = longfield<17,24>(insn_long); + layout.op = longfield<25,30>(insn_long); + if (layout.src0 == 249){ + vop_literal_layout_sdwa &vop_literal = layout.literal.sdwa; + vop_literal.src0 = longfield<32,39>(insn_long); + vop_literal.dst_sel = longfield<40,42>(insn_long); + vop_literal.dst_u = longfield<43,44>(insn_long); + vop_literal.clmp = longfield<45,45>(insn_long); + vop_literal.omod = longfield<46,47>(insn_long); + vop_literal.src0_sel = longfield<48,50>(insn_long); + vop_literal.src0_next = longfield<51,51>(insn_long); + vop_literal.src0_neg = longfield<52,52>(insn_long); + vop_literal.src0_abs = longfield<53,53>(insn_long); + vop_literal.s0 = longfield<55,55>(insn_long); + vop_literal.src1_sel = longfield<56,58>(insn_long); + vop_literal.src_sext = longfield<59,59>(insn_long); + vop_literal.src1_neg = longfield<60,60>(insn_long); + vop_literal.s1 = longfield<63,63>(insn_long); + } + if (layout.src0 == 250){ + vop_literal_layout_dpp &vop_literal = layout.literal.dpp; + vop_literal.src0 = longfield<32,39>(insn_long); + vop_literal.dpp_ctrl = longfield<40,48>(insn_long); + vop_literal.bc = longfield<51,51>(insn_long); + vop_literal.src0_neg = longfield<52,52>(insn_long); + vop_literal.src0_abs = longfield<53,53>(insn_long); + vop_literal.src1_neg = longfield<54,54>(insn_long); + vop_literal.src1_abs = longfield<55,55>(insn_long); + vop_literal.bank_mask = longfield<56,59>(insn_long); + vop_literal.row_mask = longfield<60,63>(insn_long); + } + CHECK(vop2); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop2_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeVOP2Operands(); } void InstructionDecoder_amdgpu_vega::decodeVOP1(){ - unsigned insn_size_ = 4; - layout_vop1 & layout = insn_layout.vop1; - layout.src0 = longfield<0,8>(insn_long); - layout.op = longfield<9,16>(insn_long); - layout.vdst = longfield<17,24>(insn_long); - if (layout.src0 == 249){ - vop_literal_layout_sdwa &vop_literal = layout.literal.sdwa; - vop_literal.src0 = longfield<32,39>(insn_long); - vop_literal.dst_sel = longfield<40,42>(insn_long); - vop_literal.dst_u = longfield<43,44>(insn_long); - vop_literal.clmp = longfield<45,45>(insn_long); - vop_literal.omod = longfield<46,47>(insn_long); - vop_literal.src0_sel = longfield<48,50>(insn_long); - vop_literal.src0_next = longfield<51,51>(insn_long); - vop_literal.src0_neg = longfield<52,52>(insn_long); - vop_literal.src0_abs = longfield<53,53>(insn_long); - vop_literal.s0 = longfield<55,55>(insn_long); - vop_literal.src1_sel = longfield<56,58>(insn_long); - vop_literal.src_sext = longfield<59,59>(insn_long); - vop_literal.src1_neg = longfield<60,60>(insn_long); - vop_literal.s1 = longfield<63,63>(insn_long); - } - if (layout.src0 == 250){ - vop_literal_layout_dpp &vop_literal = layout.literal.dpp; - vop_literal.src0 = longfield<32,39>(insn_long); - vop_literal.dpp_ctrl = longfield<40,48>(insn_long); - vop_literal.bc = longfield<51,51>(insn_long); - vop_literal.src0_neg = longfield<52,52>(insn_long); - vop_literal.src0_abs = longfield<53,53>(insn_long); - vop_literal.src1_neg = longfield<54,54>(insn_long); - vop_literal.src1_abs = longfield<55,55>(insn_long); - vop_literal.bank_mask = longfield<56,59>(insn_long); - vop_literal.row_mask = longfield<60,63>(insn_long); - } - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop1_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeVOP1Operands(); + unsigned insn_size_ = 4; + layout_vop1 & layout = insn_layout.vop1; + layout.src0 = longfield<0,8>(insn_long); + layout.op = longfield<9,16>(insn_long); + layout.vdst = longfield<17,24>(insn_long); + if (layout.src0 == 249){ + vop_literal_layout_sdwa &vop_literal = layout.literal.sdwa; + vop_literal.src0 = longfield<32,39>(insn_long); + vop_literal.dst_sel = longfield<40,42>(insn_long); + vop_literal.dst_u = longfield<43,44>(insn_long); + vop_literal.clmp = longfield<45,45>(insn_long); + vop_literal.omod = longfield<46,47>(insn_long); + vop_literal.src0_sel = longfield<48,50>(insn_long); + vop_literal.src0_next = longfield<51,51>(insn_long); + vop_literal.src0_neg = longfield<52,52>(insn_long); + vop_literal.src0_abs = longfield<53,53>(insn_long); + vop_literal.s0 = longfield<55,55>(insn_long); + vop_literal.src1_sel = longfield<56,58>(insn_long); + vop_literal.src_sext = longfield<59,59>(insn_long); + vop_literal.src1_neg = longfield<60,60>(insn_long); + vop_literal.s1 = longfield<63,63>(insn_long); + } + if (layout.src0 == 250){ + vop_literal_layout_dpp &vop_literal = layout.literal.dpp; + vop_literal.src0 = longfield<32,39>(insn_long); + vop_literal.dpp_ctrl = longfield<40,48>(insn_long); + vop_literal.bc = longfield<51,51>(insn_long); + vop_literal.src0_neg = longfield<52,52>(insn_long); + vop_literal.src0_abs = longfield<53,53>(insn_long); + vop_literal.src1_neg = longfield<54,54>(insn_long); + vop_literal.src1_abs = longfield<55,55>(insn_long); + vop_literal.bank_mask = longfield<56,59>(insn_long); + vop_literal.row_mask = longfield<60,63>(insn_long); + } + CHECK(vop1); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop1_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeVOP1Operands(); } void InstructionDecoder_amdgpu_vega::decodeVOPC(){ - unsigned insn_size_ = 4; - layout_vopc & layout = insn_layout.vopc; - layout.src0 = longfield<0,8>(insn_long); - layout.vsrc1 = longfield<9,16>(insn_long); - layout.op = longfield<17,24>(insn_long); - if (layout.src0 == 249){ - vop_literal_layout_sdwab &vop_literal = layout.literal.sdwab; - vop_literal.src0 = longfield<32,39>(insn_long); - vop_literal.sdst = longfield<40,46>(insn_long); - vop_literal.sd = longfield<47,47>(insn_long); - vop_literal.src0_sel = longfield<48,50>(insn_long); - vop_literal.src0_next = longfield<51,51>(insn_long); - vop_literal.src0_neg = longfield<52,52>(insn_long); - vop_literal.src0_abs = longfield<53,53>(insn_long); - vop_literal.s0 = longfield<55,55>(insn_long); - vop_literal.src1_sel = longfield<56,58>(insn_long); - vop_literal.src_sext = longfield<59,59>(insn_long); - vop_literal.src1_neg = longfield<60,60>(insn_long); - vop_literal.s1 = longfield<63,63>(insn_long); - } - if (layout.src0 == 250){ - vop_literal_layout_dpp &vop_literal = layout.literal.dpp; - vop_literal.src0 = longfield<32,39>(insn_long); - vop_literal.dpp_ctrl = longfield<40,48>(insn_long); - vop_literal.bc = longfield<51,51>(insn_long); - vop_literal.src0_neg = longfield<52,52>(insn_long); - vop_literal.src0_abs = longfield<53,53>(insn_long); - vop_literal.src1_neg = longfield<54,54>(insn_long); - vop_literal.src1_abs = longfield<55,55>(insn_long); - vop_literal.bank_mask = longfield<56,59>(insn_long); - vop_literal.row_mask = longfield<60,63>(insn_long); - } - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vopc_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeVOPCOperands(); + unsigned insn_size_ = 4; + layout_vopc & layout = insn_layout.vopc; + layout.src0 = longfield<0,8>(insn_long); + layout.vsrc1 = longfield<9,16>(insn_long); + layout.op = longfield<17,24>(insn_long); + if (layout.src0 == 249){ + vop_literal_layout_sdwab &vop_literal = layout.literal.sdwab; + vop_literal.src0 = longfield<32,39>(insn_long); + vop_literal.sdst = longfield<40,46>(insn_long); + vop_literal.sd = longfield<47,47>(insn_long); + vop_literal.src0_sel = longfield<48,50>(insn_long); + vop_literal.src0_next = longfield<51,51>(insn_long); + vop_literal.src0_neg = longfield<52,52>(insn_long); + vop_literal.src0_abs = longfield<53,53>(insn_long); + vop_literal.s0 = longfield<55,55>(insn_long); + vop_literal.src1_sel = longfield<56,58>(insn_long); + vop_literal.src_sext = longfield<59,59>(insn_long); + vop_literal.src1_neg = longfield<60,60>(insn_long); + vop_literal.s1 = longfield<63,63>(insn_long); + } + if (layout.src0 == 250){ + vop_literal_layout_dpp &vop_literal = layout.literal.dpp; + vop_literal.src0 = longfield<32,39>(insn_long); + vop_literal.dpp_ctrl = longfield<40,48>(insn_long); + vop_literal.bc = longfield<51,51>(insn_long); + vop_literal.src0_neg = longfield<52,52>(insn_long); + vop_literal.src0_abs = longfield<53,53>(insn_long); + vop_literal.src1_neg = longfield<54,54>(insn_long); + vop_literal.src1_abs = longfield<55,55>(insn_long); + vop_literal.bank_mask = longfield<56,59>(insn_long); + vop_literal.row_mask = longfield<60,63>(insn_long); + } + CHECK(vopc); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vopc_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeVOPCOperands(); } void InstructionDecoder_amdgpu_vega::decodeVINTRP(){ - unsigned insn_size_ = 4; - layout_vintrp & layout = insn_layout.vintrp; - layout.vsrc = longfield<0,7>(insn_long); - layout.attr_chan = longfield<8,9>(insn_long); - layout.attr = longfield<10,15>(insn_long); - layout.op = longfield<16,17>(insn_long); - layout.vdst = longfield<18,25>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vintrp_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeVINTRPOperands(); + unsigned insn_size_ = 4; + layout_vintrp & layout = insn_layout.vintrp; + layout.vsrc = longfield<0,7>(insn_long); + layout.attr_chan = longfield<8,9>(insn_long); + layout.attr = longfield<10,15>(insn_long); + layout.op = longfield<16,17>(insn_long); + layout.vdst = longfield<18,25>(insn_long); + CHECK(vintrp); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vintrp_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeVINTRPOperands(); } void InstructionDecoder_amdgpu_vega::decodeDS(){ - unsigned insn_size_ = 8; - layout_ds & layout = insn_layout.ds; - layout.offset0 = longfield<0,7>(insn_long); - layout.offset1 = longfield<8,15>(insn_long); - layout.gds = longfield<16,16>(insn_long); - layout.op = longfield<17,24>(insn_long); - layout.addr = longfield<32,39>(insn_long); - layout.data0 = longfield<40,47>(insn_long); - layout.data1 = longfield<48,55>(insn_long); - layout.vdst = longfield<56,63>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::ds_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeDSOperands(); + unsigned insn_size_ = 8; + layout_ds & layout = insn_layout.ds; + layout.offset0 = longfield<0,7>(insn_long); + layout.offset1 = longfield<8,15>(insn_long); + layout.gds = longfield<16,16>(insn_long); + layout.op = longfield<17,24>(insn_long); + layout.addr = longfield<32,39>(insn_long); + layout.data0 = longfield<40,47>(insn_long); + layout.data1 = longfield<48,55>(insn_long); + layout.vdst = longfield<56,63>(insn_long); + CHECK(ds); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::ds_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeDSOperands(); } void InstructionDecoder_amdgpu_vega::decodeMTBUF(){ - unsigned insn_size_ = 8; - layout_mtbuf & layout = insn_layout.mtbuf; - layout.offset = longfield<0,11>(insn_long); - layout.offen = longfield<12,12>(insn_long); - layout.idxen = longfield<13,13>(insn_long); - layout.glc = longfield<14,14>(insn_long); - layout.op = longfield<15,18>(insn_long); - layout.dfmt = longfield<19,22>(insn_long); - layout.nfmt = longfield<23,25>(insn_long); - layout.vaddr = longfield<32,39>(insn_long); - layout.vdata = longfield<40,47>(insn_long); - layout.srsrc = longfield<48,52>(insn_long); - layout.slc = longfield<54,54>(insn_long); - layout.tfe = longfield<55,55>(insn_long); - layout.soffset = longfield<56,63>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mtbuf_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeMTBUFOperands(); + unsigned insn_size_ = 8; + layout_mtbuf & layout = insn_layout.mtbuf; + layout.offset = longfield<0,11>(insn_long); + layout.offen = longfield<12,12>(insn_long); + layout.idxen = longfield<13,13>(insn_long); + layout.glc = longfield<14,14>(insn_long); + layout.op = longfield<15,18>(insn_long); + layout.dfmt = longfield<19,22>(insn_long); + layout.nfmt = longfield<23,25>(insn_long); + layout.vaddr = longfield<32,39>(insn_long); + layout.vdata = longfield<40,47>(insn_long); + layout.srsrc = longfield<48,52>(insn_long); + layout.slc = longfield<54,54>(insn_long); + layout.tfe = longfield<55,55>(insn_long); + layout.soffset = longfield<56,63>(insn_long); + CHECK(mtbuf); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mtbuf_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeMTBUFOperands(); } void InstructionDecoder_amdgpu_vega::decodeMUBUF(){ - unsigned insn_size_ = 8; - layout_mubuf & layout = insn_layout.mubuf; - layout.offset = longfield<0,11>(insn_long); - layout.offen = longfield<12,12>(insn_long); - layout.idxen = longfield<13,13>(insn_long); - layout.glc = longfield<14,14>(insn_long); - layout.lds = longfield<16,16>(insn_long); - layout.slc = longfield<17,17>(insn_long); - layout.op = longfield<18,24>(insn_long); - layout.vaddr = longfield<32,39>(insn_long); - layout.vdata = longfield<40,47>(insn_long); - layout.srsrc = longfield<48,52>(insn_long); - layout.tfe = longfield<55,55>(insn_long); - layout.soffset = longfield<56,63>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mubuf_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeMUBUFOperands(); + unsigned insn_size_ = 8; + layout_mubuf & layout = insn_layout.mubuf; + layout.offset = longfield<0,11>(insn_long); + layout.offen = longfield<12,12>(insn_long); + layout.idxen = longfield<13,13>(insn_long); + layout.glc = longfield<14,14>(insn_long); + layout.lds = longfield<16,16>(insn_long); + layout.slc = longfield<17,17>(insn_long); + layout.op = longfield<18,24>(insn_long); + layout.vaddr = longfield<32,39>(insn_long); + layout.vdata = longfield<40,47>(insn_long); + layout.srsrc = longfield<48,52>(insn_long); + layout.tfe = longfield<55,55>(insn_long); + layout.soffset = longfield<56,63>(insn_long); + CHECK(mubuf); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mubuf_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeMUBUFOperands(); } void InstructionDecoder_amdgpu_vega::decodeVOP3AB(){ - unsigned insn_size_ = 8; - layout_vop3ab & layout = insn_layout.vop3ab; - layout.op = longfield<16,25>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3ab_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeVOP3ABOperands(); + unsigned insn_size_ = 8; + layout_vop3ab & layout = insn_layout.vop3ab; + layout.op = longfield<16,25>(insn_long); + CHECK(vop3ab); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3ab_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeVOP3ABOperands(); } void InstructionDecoder_amdgpu_vega::decodeVOP3P(){ - unsigned insn_size_ = 8; - layout_vop3p & layout = insn_layout.vop3p; - layout.vdst = longfield<0,7>(insn_long); - layout.neg_hi = longfield<8,10>(insn_long); - layout.opsel = longfield<11,13>(insn_long); - layout.opsel_hi2 = longfield<14,14>(insn_long); - layout.clmp = longfield<15,15>(insn_long); - layout.op = longfield<16,22>(insn_long); - layout.src0 = longfield<32,40>(insn_long); - layout.src1 = longfield<41,49>(insn_long); - layout.src2 = longfield<50,58>(insn_long); - layout.opsel_hi = longfield<59,60>(insn_long); - layout.neg = longfield<61,63>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3p_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeVOP3POperands(); + unsigned insn_size_ = 8; + layout_vop3p & layout = insn_layout.vop3p; + layout.vdst = longfield<0,7>(insn_long); + layout.neg_hi = longfield<8,10>(insn_long); + layout.opsel = longfield<11,13>(insn_long); + layout.opsel_hi2 = longfield<14,14>(insn_long); + layout.clmp = longfield<15,15>(insn_long); + layout.op = longfield<16,22>(insn_long); + layout.src0 = longfield<32,40>(insn_long); + layout.src1 = longfield<41,49>(insn_long); + layout.src2 = longfield<50,58>(insn_long); + layout.opsel_hi = longfield<59,60>(insn_long); + layout.neg = longfield<61,63>(insn_long); + CHECK(vop3p); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3p_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeVOP3POperands(); } void InstructionDecoder_amdgpu_vega::decodeFLAT(){ - unsigned insn_size_ = 8; - layout_flat & layout = insn_layout.flat; - layout.offset = longfield<0,12>(insn_long); - layout.lds = longfield<13,13>(insn_long); - layout.seg = longfield<14,15>(insn_long); - layout.glc = longfield<16,16>(insn_long); - layout.slc = longfield<17,17>(insn_long); - layout.op = longfield<18,24>(insn_long); - layout.addr = longfield<32,39>(insn_long); - layout.data = longfield<40,47>(insn_long); - layout.saddr = longfield<48,54>(insn_long); - layout.nv = longfield<55,55>(insn_long); - layout.vdst = longfield<56,63>(insn_long); - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::flat_insn_table[layout.op]; - decodeOperands(insn_entry); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - finalizeFLATOperands(); + unsigned insn_size_ = 8; + layout_flat & layout = insn_layout.flat; + layout.offset = longfield<0,12>(insn_long); + layout.lds = longfield<13,13>(insn_long); + layout.seg = longfield<14,15>(insn_long); + layout.glc = longfield<16,16>(insn_long); + layout.slc = longfield<17,17>(insn_long); + layout.op = longfield<18,24>(insn_long); + layout.addr = longfield<32,39>(insn_long); + layout.data = longfield<40,47>(insn_long); + layout.saddr = longfield<48,54>(insn_long); + layout.nv = longfield<55,55>(insn_long); + layout.vdst = longfield<56,63>(insn_long); + CHECK(flat); + const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::flat_insn_table[layout.op]; + decodeOperands(insn_entry); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + finalizeFLATOperands(); } void InstructionDecoder_amdgpu_vega::mainDecode(InstructionDecoder::buffer &b){ - if(IS_SOP2(insn_long)){ - setUseImm<0,7,255>(b,4); - setUseImm<8,15,255>(b,4); - decodeSOP2(); - } - else if(IS_SOP1(insn_long)){ - setUseImm<0,7,255>(b,4); - decodeSOP1(); - } - else if(IS_SOPK(insn_long)){ - decodeSOPK(); - } - else if(IS_SOPC(insn_long)){ - decodeSOPC(); - } - else if(IS_SOPP(insn_long)){ - decodeSOPP(); - } - else if(IS_SMEM(insn_long)){ - decodeSMEM(); - } - else if(IS_VOP2(insn_long)){ - setUseImm<0,8,249>(b,4); - setUseImm<0,8,250>(b,4); - setUseImm<0,8,255>(b,4); - decodeVOP2(); - } - else if(IS_VOP1(insn_long)){ - setUseImm<0,8,249>(b,4); - setUseImm<0,8,250>(b,4); - setUseImm<0,8,255>(b,4); - decodeVOP1(); - } - else if(IS_VOPC(insn_long)){ - setUseImm<0,8,255>(b,4); - decodeVOPC(); - } - else if(IS_VINTRP(insn_long)){ - decodeVINTRP(); - } - else if(IS_DS(insn_long)){ - decodeDS(); - } - else if(IS_MTBUF(insn_long)){ - decodeMTBUF(); - } - else if(IS_MUBUF(insn_long)){ - decodeMUBUF(); - } - else if(IS_VOP3AB(insn_long)){ - decodeVOP3AB(); - } - else if(IS_VOP3P(insn_long)){ - decodeVOP3P(); - } - else if(IS_FLAT(insn_long)){ - decodeFLAT(); - } - else{ - assert(0); - } + if(IS_SOP2(insn_long)){ + setUseImm<0,7,255>(b,4); + setUseImm<8,15,255>(b,4); + decodeSOP2(); + } + else if(IS_SOP1(insn_long)){ + setUseImm<0,7,255>(b,4); + decodeSOP1(); + } + else if(IS_SOPK(insn_long)){ + decodeSOPK(); + } + else if(IS_SOPC(insn_long)){ + decodeSOPC(); + } + else if(IS_SOPP(insn_long)){ + decodeSOPP(); + } + else if(IS_SMEM(insn_long)){ + decodeSMEM(); + } + else if(IS_VOP2(insn_long)){ + setUseImm<0,8,249>(b,4); + setUseImm<0,8,250>(b,4); + setUseImm<0,8,255>(b,4); + decodeVOP2(); + } + else if(IS_VOP1(insn_long)){ + setUseImm<0,8,249>(b,4); + setUseImm<0,8,250>(b,4); + setUseImm<0,8,255>(b,4); + decodeVOP1(); + } + else if(IS_VOPC(insn_long)){ + setUseImm<0,8,255>(b,4); + decodeVOPC(); + } + else if(IS_VINTRP(insn_long)){ + decodeVINTRP(); + } + else if(IS_DS(insn_long)){ + decodeDS(); + } + else if(IS_MTBUF(insn_long)){ + decodeMTBUF(); + } + else if(IS_MUBUF(insn_long)){ + decodeMUBUF(); + } + else if(IS_VOP3AB(insn_long)){ + decodeVOP3AB(); + } + else if(IS_VOP3P(insn_long)){ + decodeVOP3P(); + } + else if(IS_FLAT(insn_long)){ + decodeFLAT(); + } + else{ + assert(0); + } } void InstructionDecoder_amdgpu_vega::mainDecodeOpcode(InstructionDecoder::buffer &b){ - if(IS_SOP2(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop2_insn_table[longfield<23,29>(insn_long)]; - setUseImm<0,7,255>(b,4); - setUseImm<8,15,255>(b,4); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = SOP2; - } - else if(IS_SOP1(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sop1_insn_table[longfield<8,15>(insn_long)]; - setUseImm<0,7,255>(b,4); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = SOP1; - } - else if(IS_SOPK(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopk_insn_table[longfield<23,27>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = SOPK; - } - else if(IS_SOPC(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopc_insn_table[longfield<16,22>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = SOPC; - } - else if(IS_SOPP(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::sopp_insn_table[longfield<16,22>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = SOPP; - } - else if(IS_SMEM(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::smem_insn_table[longfield<18,25>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = SMEM; - } - else if(IS_VOP2(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop2_insn_table[longfield<25,30>(insn_long)]; - setUseImm<0,8,249>(b,4); - setUseImm<0,8,250>(b,4); - setUseImm<0,8,255>(b,4); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = VOP2; - } - else if(IS_VOP1(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop1_insn_table[longfield<9,16>(insn_long)]; - setUseImm<0,8,249>(b,4); - setUseImm<0,8,250>(b,4); - setUseImm<0,8,255>(b,4); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = VOP1; - } - else if(IS_VOPC(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vopc_insn_table[longfield<17,24>(insn_long)]; - setUseImm<0,8,255>(b,4); - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = VOPC; - } - else if(IS_VINTRP(insn_long)){ - unsigned insn_size_ = 4; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vintrp_insn_table[longfield<16,17>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = VINTRP; - } - else if(IS_DS(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::ds_insn_table[longfield<17,24>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = DS; - } - else if(IS_MTBUF(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mtbuf_insn_table[longfield<15,18>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = MTBUF; - } - else if(IS_MUBUF(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::mubuf_insn_table[longfield<18,24>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = MUBUF; - } - else if(IS_VOP3AB(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3ab_insn_table[longfield<16,25>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = VOP3AB; - } - else if(IS_VOP3P(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::vop3p_insn_table[longfield<11,13>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = VOP3P; - } - else if(IS_FLAT(insn_long)){ - unsigned insn_size_ = 8; - const amdgpu_vega_insn_entry &insn_entry = amdgpu_vega_insn_entry::flat_insn_table[longfield<18,24>(insn_long)]; - this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); - instr_family = FLAT; - } - else{ - assert(0); - } + if(IS_SOP2(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(sop2,23,29); + setUseImm<0,7,255>(b,4); + setUseImm<8,15,255>(b,4); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = SOP2; + } + else if(IS_SOP1(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(sop1,8,15); + setUseImm<0,7,255>(b,4); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = SOP1; + } + else if(IS_SOPK(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(sopk,23,27); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = SOPK; + } + else if(IS_SOPC(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(sopc,16,22); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = SOPC; + } + else if(IS_SOPP(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(sopp,16,22); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = SOPP; + } + else if(IS_SMEM(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(smem,18,25); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = SMEM; + } + else if(IS_VOP2(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(vop2,25,30); + setUseImm<0,8,249>(b,4); + setUseImm<0,8,250>(b,4); + setUseImm<0,8,255>(b,4); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = VOP2; + } + else if(IS_VOP1(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(vop1,9,16); + setUseImm<0,8,249>(b,4); + setUseImm<0,8,250>(b,4); + setUseImm<0,8,255>(b,4); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = VOP1; + } + else if(IS_VOPC(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(vopc,17,24); + setUseImm<0,8,255>(b,4); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = VOPC; + } + else if(IS_VINTRP(insn_long)){ + unsigned insn_size_ = 4; + DECODE_AND_CHECK(vintrp,16,17); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = VINTRP; + } + else if(IS_DS(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(ds,17,24); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = DS; + } + else if(IS_MTBUF(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(mtbuf,15,18); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = MTBUF; + } + else if(IS_MUBUF(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(mubuf,18,24); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = MUBUF; + } + else if(IS_VOP3AB(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(vop3ab,16,25); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = VOP3AB; + } + else if(IS_VOP3P(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(vop3p,11,13); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = VOP3P; + } + else if(IS_FLAT(insn_long)){ + unsigned insn_size_ = 8; + DECODE_AND_CHECK(flat,18,24); + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size_+immLen,reinterpret_cast(&insn)); + instr_family = FLAT; + } + else{ + assert(0); + } } From 922a7103b06867b19ba364cd7199ded3ac697763 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 7 Mar 2022 11:28:17 -0600 Subject: [PATCH 082/505] Docker: use more OS packages (#1211) * Use perl from OS package * Use CMake from OS package * Use Boost from OS package * Use TBB from OS package * Mark all external packages as not buildable --- docker/Dockerfile | 48 ++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 36ff99d7ba..4483cc77d7 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -10,28 +10,24 @@ ENV DEBIAN_FRONTEND=noninteractive ENV TZ=America/Los_Angeles # We can use build args to populate the specific versions of dependencies (with defaults here) -ARG BOOST_VERSION=1.73.0 +ARG BOOST_VERSION=1.71.0 ARG ELFUTILS_VERSION=0.186 ARG LIBIBERTY_VERSION=2.33.1 -ARG INTELTBB_VERSION=2020.2 -ARG PERL_VERSION=5.32.1 - -# Sort of separate from dyninst (but used to build/test) -ARG CMAKE_VERSION=3.21.2 -ENV CMAKE_VERSION=${CMAKE_VERSION} +ARG INTELTBB_VERSION=2020.3 +ARG PERL_VERSION=5.30.0 +ARG CMAKE_VERSION=3.16.3 # Set the branch name for spack to use (should be master even for PR) ARG DYNINST_BRANCH=master ENV DYNINST_BRANCH=${DYNINST_BRANCH} -# Note that perl 5.30.0 is provided by ubuntu - # Args need to be passed into envars to be used in RUN ENV BOOST_VERSION=${BOOST_VERSION} ENV ELFUTILS_VERSION=${ELFUTILS_VERSION} ENV LIBIBERTY_VERSION=${LIBIBERTY_VERSION} ENV INTELTBB_VERSION=${INTELTBB_VERSION} ENV PERL_VERSION=${PERL_VERSION} +ENV CMAKE_VERSION=${CMAKE_VERSION} RUN apt-get -qq update && \ apt-get -qq install -fy tzdata && \ @@ -53,7 +49,10 @@ RUN apt-get -qq update && \ valgrind \ vim \ wget \ - xsltproc + xsltproc \ + cmake \ + libboost1.71-all-dev \ + libtbb-dev # Install Clingo for Spack RUN python3 -m pip install --upgrade pip && \ @@ -81,17 +80,22 @@ RUN python3 -m pip install botocore boto3 && \ spack gpg trust key.pub # Find packages already installed on system, e.g. autoconf -RUN spack external find gcc@11.0.1 autoconf bzip2 git tar xz perl && \ - spack config add 'packages:all:target:[x86_64]' && \ - # Install a new CMake (Tim originally wanted 3.17.1 but spack doesn't have it) - spack install cmake@${CMAKE_VERSION} perl - -# Add cmake to a view -RUN spack view --dependencies no symlink --ignore-conflicts /opt/view cmake@${CMAKE_VERSION} perl -ENV PATH=/opt/view/bin:$PATH - -RUN spack external find cmake && \ - spack config add 'packages:cmake:buildable:False' +RUN spack external find --not-buildable gcc@11.0.1 autoconf bzip2 git tar xz perl cmake && \ + spack config add 'packages:all:target:[x86_64]' + +# 'spack external find' doesn't work on libraries +RUN printf "\n\ + boost:\n\ + externals:\n\ + - spec: boost@${BOOST_VERSION}\n\ + prefix: /usr\n\ + buildable: false\n\ + intel-tbb:\n\ + externals:\n\ + - spec: intel-tbb@${INTELTBB_VERSION}\n\ + prefix: /usr\n\ + buildable: false\n\ +" >> ~/.spack/packages.yaml # Add Dyninst source code here (e.g., from PR or master) WORKDIR /code @@ -114,6 +118,8 @@ RUN . /opt/spack/share/spack/setup-env.sh && \ spack add dyninst@${DYNINST_BRANCH} && \ # Add our hard coded versions here. + spack add cmake@${CMAKE_VERSION} && \ + spack add perl@${PERL_VERSION} && \ spack add boost@${BOOST_VERSION} && \ spack add elfutils@${ELFUTILS_VERSION} && \ spack add libiberty@${LIBIBERTY_VERSION} && \ From 76c7bc2564fa1aeeba3b832ac7245d1e8e1dbd47 Mon Sep 17 00:00:00 2001 From: William Cohen Date: Mon, 7 Mar 2022 13:54:18 -0500 Subject: [PATCH 083/505] Make a couple constant 64-bit ULL to avoid getting truncated during shifts (#1207) * Ensure ROR work with data types larger than 32 bits. * Ensure upper 32-bits of 64-bit aarch64 SIMD operand generated. --- instructionAPI/h/BinaryFunction.h | 2 +- instructionAPI/src/InstructionDecoder-aarch64.C | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/instructionAPI/h/BinaryFunction.h b/instructionAPI/h/BinaryFunction.h index 9b15def92f..34fdaa42c2 100644 --- a/instructionAPI/h/BinaryFunction.h +++ b/instructionAPI/h/BinaryFunction.h @@ -263,7 +263,7 @@ namespace Dyninst } Result one(u64, 1); - Result rot = arg1 & (Result(u64, (1<appendOperand(Immediate::makeImmediate(Result(u64, imm)), true, false); } From 9b5ffe39187cc0de148a7ca686c1548396e496c4 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 7 Mar 2022 17:37:50 -0600 Subject: [PATCH 084/505] Docker: simplify build script (#1212) * Use CMake's -S instead of undocumented -H * Remove log captures The reports are best used within the context of the PR, so storing them in the dashboard wouldn't be much use. * Reduce duplication of directory names * Use CMake commands to build/install * Separate build and install trees for Dyninst * Separate build and install directories for test suite * Simplify 'git pull' for test suite * Explicitly override test suite install directory The test suite reads Dyninst's cache which poisons the CMAKE_INSTALL_PREFIX. This overrides that and then puts the test files in the root install directory. --- docker/build.sh | 42 +++++++++++++++++++++++++----------------- docker/test.sh | 6 +++--- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/docker/build.sh b/docker/build.sh index 4d86095e55..b002397089 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -6,33 +6,41 @@ set -euo pipefail printf "⭐️ Setting up spack environment for Dyninst\n" . /opt/spack/share/spack/setup-env.sh spack env activate . -mkdir -p build/dyninst # 1. Build Dyninst printf "⭐️ Preparing to build Dyninst\n" -echo "::group::build dyninst" -cd build/dyninst -cmake -H/code -B. -DCMAKE_INSTALL_PREFIX=. > >(tee config.out) 2> >(tee config.err >&2) -make VERBOSE=1 -j2 > >(tee build.out) 2> >(tee build.err >&2) -make install VERBOSE=1 -j2 > >(tee build-install.out) 2> >(tee build-install.err >&2) +echo "::group::build dyninst" + +DYNINST_BUILD_DIR=/opt/dyninst-env/build/dyninst +mkdir -p $DYNINST_BUILD_DIR + +DYNINST_INSTALL_DIR=/opt/dyninst-env/install/dyninst +mkdir -p $DYNINST_INSTALL_DIR + +cmake -S /code -B $DYNINST_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$DYNINST_INSTALL_DIR +cmake --build $DYNINST_BUILD_DIR -- -j2 +cmake --install $DYNINST_BUILD_DIR + echo "::endgroup::" # 2. Update the test suite printf "⭐️ Updating the testsuite\n" echo "::group::update testsuite" -cd /opt/testsuite -git pull origin master -cd - +git -C /opt/testsuite pull origin master echo "::endgroup::" # 3. Build the test suite printf "⭐️ Preparing to build the testsuite\n" -echo "::group::build tests" -cd /opt/dyninst-env/ -mkdir -p build/testsuite/tests -cd build/testsuite - -cmake -H/opt/testsuite -B. -DCMAKE_INSTALL_PREFIX=$PWD/tests -DDyninst_DIR=/opt/dyninst-env/build/dyninst/lib/cmake/Dyninst > >(tee config.out) 2> >(tee config.err >&2) -make VERBOSE=1 -j2 > >(tee build.out) 2> >(tee build.err >&2) -make install VERBOSE=1 -j2 > >(tee build-install.out) 2> >(tee build-install.err >&2) +echo "::group::build tests" + +TESTSUITE_BUILD_DIR=/opt/dyninst-env/build/testsuite +mkdir -p $TESTSUITE_BUILD_DIR + +TESTSUITE_INSTALL_DIR=/opt/dyninst-env/install/testsuite +mkdir -p $TESTSUITE_INSTALL_DIR + +cmake -S /opt/testsuite -B $TESTSUITE_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$TESTSUITE_INSTALL_DIR -DDyninst_DIR=$DYNINST_INSTALL_DIR/lib/cmake/Dyninst +cmake --build $TESTSUITE_BUILD_DIR -- -j2 +cmake --install $TESTSUITE_BUILD_DIR --prefix $TESTSUITE_INSTALL_DIR +mv $TESTSUITE_INSTALL_DIR/bin/testsuite/* $TESTSUITE_INSTALL_DIR echo "::endgroup::" diff --git a/docker/test.sh b/docker/test.sh index 072cc69960..9a749b96d3 100755 --- a/docker/test.sh +++ b/docker/test.sh @@ -7,10 +7,10 @@ spack env activate . # 3. Run the tests printf "⭐️ Running tests...\n" -cd /opt/dyninst-env/build/testsuite -export DYNINSTAPI_RT_LIB=/opt/dyninst-env/build/dyninst/lib/libdyninstAPI_RT.so +cd /opt/dyninst-env/install/testsuite +export DYNINSTAPI_RT_LIB=/opt/dyninst-env/install/dyninst/lib/libdyninstAPI_RT.so export OMP_NUM_THREADS=2 -export LD_LIBRARY_PATH=/opt/dyninst-env/build/dyninst/lib:$PWD:$LD_LIBRARY_PATH +export LD_LIBRARY_PATH=/opt/dyninst-env/install/dyninst/lib:$PWD:$LD_LIBRARY_PATH ./runTests -64 -all -log test.log -j1 > >(tee stdout.log) 2> >(tee stderr.log >&2) # TODO will update here to upload given merge to master From 8b400af59bad0ef9c25072a6b9774171db012bb1 Mon Sep 17 00:00:00 2001 From: kupsch Date: Wed, 9 Mar 2022 15:38:46 -0600 Subject: [PATCH 085/505] Correctly handle DWARF subroutines during parallel parsing (#1215) Fix to only process the DWARF for a function (subprogram) once if it is defined in multiple compilation units within a library or executable. This prevents duplication of parameters, local variables and use of thread-unsafe data structures from concurrent threads. --- symtabAPI/src/dwarfWalker.C | 64 +++++++++++++++++++++++++++++++------ symtabAPI/src/dwarfWalker.h | 19 ++++++++--- 2 files changed, 69 insertions(+), 14 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index a0c5b14996..14376ebe36 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -80,8 +80,9 @@ using namespace std; } while (0) #define DWARF_CHECK_RET(x) DWARF_CHECK_RET_VAL(x, false) -DwarfWalker::DwarfWalker(Symtab *symtab, ::Dwarf * dbg) : +DwarfWalker::DwarfWalker(Symtab *symtab, ::Dwarf *dbg, std::shared_ptr pf) : DwarfParseActions(symtab, dbg), + parsedFuncs(pf), is_mangled_name_(false), modLow(0), modHigh(0), @@ -96,6 +97,9 @@ DwarfWalker::DwarfWalker(Symtab *symtab, ::Dwarf * dbg) : next_cu_header(0), compile_offset(0) { + if (!parsedFuncs) { + parsedFuncs = std::make_shared(); + } } DwarfWalker::~DwarfWalker() { @@ -180,7 +184,7 @@ bool DwarfWalker::parse() { } else { #pragma omp parallel { - DwarfWalker w(symtab(), dbg()); + DwarfWalker w(symtab(), dbg(), parsedFuncs); #pragma omp for reduction(leftmost:fixUnknownMod) \ schedule(dynamic) nowait for (unsigned int i = 0; i < module_dies.size(); i++) { @@ -610,6 +614,28 @@ void DwarfParseActions::addPrettyFuncName(std::string name) curFunc()->addPrettyName(name, true, true); } + +// helper class to set and restore currentSubprogramFunction +namespace { +class SetAndRestoreFunction +{ + public: + SetAndRestoreFunction(FunctionBase* &v, FunctionBase* newFunc) : var(v) + { + savedFunc = var; + var = newFunc; + } + ~SetAndRestoreFunction() + { + var = savedFunc; + } + private: + FunctionBase* &var; + FunctionBase* savedFunc; +}; +} + + bool DwarfWalker::parseSubprogram(DwarfWalker::inline_t func_type) { bool name_result; @@ -645,15 +671,29 @@ bool DwarfWalker::parseSubprogram(DwarfWalker::inline_t func_type) { return true; } - if (parsedFuncs.find(func) != parsedFuncs.end()) { - dwarf_printf("(0x%lx) parseSubprogram not parsing children b/c curFunc() not in parsedFuncs\n", id()); - if(name_result) { - dwarf_printf("\tname is %s\n", curName().c_str()); - } - setParseChild(false); - return true; + // this function's accessor lock to check if parsed and/or parse it + ParsedFuncs::accessor funcParsed; + + // recursive if parsing a specification or abstract origin, + // accessor is already locked + bool isRecursiveSubprogramParse = (func == currentSubprogramFunction); + + if (!isRecursiveSubprogramParse) { + // check if function is parsed, hold mutex until scope is left + parsedFuncs->insert(funcParsed, func); + if (funcParsed->second) { + dwarf_printf("(0x%lx) parseSubprogram not parsing children b/c curFunc() marked parsed in parsedFuncs\n", id()); + if(name_result) { + dwarf_printf("\tname is %s\n", curName().c_str()); + } + setParseChild(false); + return true; + } } + // set the current function being parsed and restore old value on return + SetAndRestoreFunction setAndRestore(currentSubprogramFunction, func); + if (name_result && !curName().empty()) { dwarf_printf("(0x%lx) Identified function name as %s\n", id(), curName().c_str()); if (isMangledName()) { @@ -711,7 +751,11 @@ bool DwarfWalker::parseSubprogram(DwarfWalker::inline_t func_type) { return false; } - parsedFuncs.insert(func); + if (!isRecursiveSubprogramParse) { + // the function is now parsed + funcParsed->second = true; + } + if (func_type == InlinedFunc) { dwarf_printf("End parseSubprogram for inlined func at 0x%p\n", (void*)func->getOffset()); } diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index 545fa9b0b3..705896fb26 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -214,6 +214,10 @@ class DwarfParseActions { Symtab *symtab_; virtual Object * obj() const ; + // Function object of current subprogram being parsed; used to detect + // parseSubprogram recursion + FunctionBase *currentSubprogramFunction = nullptr; + }; // class DwarfParseActions struct ContextGuard { @@ -233,7 +237,9 @@ class DwarfWalker : public DwarfParseActions { } Error; - DwarfWalker(Symtab *symtab, Dwarf* dbg); + using ParsedFuncs = tbb::concurrent_hash_map; + + DwarfWalker(Symtab *symtab, Dwarf* dbg, std::shared_ptr pf = nullptr); DwarfWalker(const DwarfWalker& o) : DwarfParseActions(o), @@ -254,7 +260,12 @@ class DwarfWalker : public DwarfParseActions { compile_offset(o.compile_offset), info_type_ids_(o.info_type_ids_), types_type_ids_(o.types_type_ids_), - sig8_type_ids_(o.sig8_type_ids_) {} + sig8_type_ids_(o.sig8_type_ids_) + { + if (!parsedFuncs) { + parsedFuncs = std::make_shared(); + } + } virtual ~DwarfWalker(); @@ -400,8 +411,8 @@ class DwarfWalker : public DwarfParseActions { Dwarf_Sword listLength); - // Header-only functions get multiple parsed. - std::set parsedFuncs; + // Map of Function* to bool (indicates function parsed) + std::shared_ptr parsedFuncs; private: std::string name_; bool is_mangled_name_; From 14d9d44f0c03199d76333b9571b1f6ed9e183e46 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Mar 2022 16:41:45 -0600 Subject: [PATCH 086/505] Documentation update for v12.1.0 (#1216) --- CHANGELOG.md | 34 +++++++++++++++++++++++++- cmake/shared.cmake | 4 +-- common/doc/manual_frontpage.tex | 4 +-- dataflowAPI/doc/dataflowAPI.pdf | Bin 349805 -> 349841 bytes dynC_API/doc/dynC_API.pdf | Bin 298512 -> 298532 bytes dyninstAPI/doc/dyninstAPI.docx | Bin 151312 -> 151289 bytes dyninstAPI/doc/dyninstAPI.pdf | Bin 409466 -> 422213 bytes instructionAPI/doc/instructionAPI.pdf | Bin 563428 -> 563447 bytes parseAPI/doc/parseAPI.pdf | Bin 404138 -> 404163 bytes patchAPI/doc/patchAPI.pdf | Bin 614185 -> 614110 bytes proccontrol/doc/proccontrol.docx | Bin 105765 -> 107962 bytes proccontrol/doc/proccontrol.pdf | Bin 355537 -> 370176 bytes stackwalk/doc/stackwalk.pdf | Bin 318588 -> 318611 bytes symtabAPI/doc/symtabAPI.pdf | Bin 457426 -> 457106 bytes 14 files changed, 37 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5003fd307b..53a9fc29b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,38 @@ # Change Log -## [12.0.1](https://github.com/dyninst/dyninst/tree/v12.0.0) (2021-11-23) +## [12.1.0](https://github.com/dyninst/dyninst/tree/v12.1.0) (2022-03-09) +[Full Changelog](https://github.com/dyninst/dyninst/compare/v12.0.1...v12.1.0) + +- Correctly handle DWARF subroutines during parallel parsing ([1215](https://github.com/dyninst/dyninst/issues/1215)) +- Docker: simplify build script ([1212](https://github.com/dyninst/dyninst/issues/1212)) +- Make a couple constant 64-bit ULL to avoid getting truncated during shifts ([1207](https://github.com/dyninst/dyninst/issues/1207)) +- Docker: use more OS packages ([1211](https://github.com/dyninst/dyninst/issues/1211)) +- Fix potential buffer overrun in AMDGPU decoders ([1208](https://github.com/dyninst/dyninst/issues/1208)) +- Code clean up for AMDGPU ([1205](https://github.com/dyninst/dyninst/issues/1205)) +- Tidy up classes in AMDGPU ([1204](https://github.com/dyninst/dyninst/issues/1204)) +- Fix compiler warnings in amdgpu cdna2 code ([1198](https://github.com/dyninst/dyninst/issues/1198)) +- Build fixes for amdgpu/cdna2 ([1203](https://github.com/dyninst/dyninst/issues/1203)) +- Add Support for AMDGPU CDNA2 Architectures based on XML ISA spec ([1107](https://github.com/dyninst/dyninst/issues/1107)) +- fix building of symlite ([1197](https://github.com/dyninst/dyninst/issues/1197)) +- Additional cleanup of memory emulation for hybrid analysis ([1172](https://github.com/dyninst/dyninst/issues/1172)) +- Allow zero-length ELF program headers ([1192](https://github.com/dyninst/dyninst/issues/1192)) +- Remove dead code and variables related to Symtab::data_ptr_ and Symtab::code_ptr_ ([1192](https://github.com/dyninst/dyninst/issues/1192)) +- Remove dead code Object::elf_vaddr_to_ptr ([1192](https://github.com/dyninst/dyninst/issues/1192)) +- glibc r_debug extensions to support multiple namespaces ([1175](https://github.com/dyninst/dyninst/issues/1175)) +- Symtab::module documentation cleanup ([1189](https://github.com/dyninst/dyninst/issues/1189)) +- Dockerfile: use explicit packages for 'spack external find' ([1195](https://github.com/dyninst/dyninst/issues/1195)) +- ParseAPI: Speed up the case where a function is called from many locations ([1190](https://github.com/dyninst/dyninst/issues/1190)) +- ELF+DWARF: always parse first entry in source file table ([1184](https://github.com/dyninst/dyninst/issues/1184)) +- Remove interposed definition of _r_debug ([1176](https://github.com/dyninst/dyninst/issues/1176)) +- start of work to add automated testing to dyninst! ([1183](https://github.com/dyninst/dyninst/issues/1183)) +- adding dyninst release trigger ([1181](https://github.com/dyninst/dyninst/issues/1181)) +- fixing workflow trigger ([1182](https://github.com/dyninst/dyninst/issues/1182)) +- Adding first stage of automated docker build ([1180](https://github.com/dyninst/dyninst/issues/1180)) +- Remove erroneous use of realloc in symtabAPI/Type-mem.h ([1170](https://github.com/dyninst/dyninst/issues/1170)) +- Clean up memoryTracker usage in binaryEdit ([877](https://github.com/dyninst/dyninst/issues/877)) + + +## [12.0.1](https://github.com/dyninst/dyninst/tree/v12.0.1) (2021-11-23) [Full Changelog](https://github.com/dyninst/dyninst/compare/v12.0.0...v12.0.1) **Build Changes** diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 0c3f6afcd1..a95a9d4ba5 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,6 +1,6 @@ set (DYNINST_MAJOR_VERSION 12) -set (DYNINST_MINOR_VERSION 0) -set (DYNINST_PATCH_VERSION 1) +set (DYNINST_MINOR_VERSION 1) +set (DYNINST_PATCH_VERSION 0) set (SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") set (LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") diff --git a/common/doc/manual_frontpage.tex b/common/doc/manual_frontpage.tex index 60796bf0f6..9690a3de53 100644 --- a/common/doc/manual_frontpage.tex +++ b/common/doc/manual_frontpage.tex @@ -42,9 +42,9 @@ % }; \node [anchor=west,font=\sffamily] (rel1) at ($(origin)+(0.75in,-5.0in)$) - {\fontsize{24}{32}\selectfont 12.0 Release}; + {\fontsize{24}{32}\selectfont 12.1 Release}; \node [anchor=west,font=\sffamily] (rel2) at ($(rel1.west)+(0in,-32pt)$) - {\fontsize{24}{32}\selectfont November 2021}; + {\fontsize{24}{32}\selectfont March 2022}; % Contact information % \matrix (UWaddress) [% diff --git a/dataflowAPI/doc/dataflowAPI.pdf b/dataflowAPI/doc/dataflowAPI.pdf index 8f613b960252a3d8b6cf2573eae31507f40d9f7a..d46da3275b58e4edf807f9b342040783eb9fefdf 100644 GIT binary patch delta 18076 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 delta 18056 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 diff --git a/dynC_API/doc/dynC_API.pdf b/dynC_API/doc/dynC_API.pdf index 96ed70a4739b864ab850e74d1d6fce91c3a07200..4bbd95f6f9a02b78b2079821a61696fc3de9dd5b 100644 GIT binary patch delta 14033 zcmai4LyRsAkR02#{l>O!+qSK5_{O$v&l}seZQI8Fd)wO{D(R%_)ag{J5uc4xoQ)Ds z0nC_0gg^}_N!xYUU_=_-egE^t9-lhci+^jSv#FM&TCtt}QGXpMydh31C39B!^ZL&u z3`;U-1snPCBM9}7Al?ai;~yC)RF@rdreFt3akbr7Rh)Rs>P6JQFM-J zzQr;J#=_bu(yV32rc;=ASOqUbbRU3TO4Wv}m=N2W4d?;vQZ3v&R_hBau4IX6a zk_-pn)F@EY6_Rae6!xmxC|@{#ViR!6&#R?>fqtc51AmHu^m=`yhS#hQ^wkVJxq`~$ zaCWPwzq$7A6q{`{{hp!sI8UF=TQpk`+a9tmu($NCs7Q#VW{b|mjUb=LKfbN8E{e=l zB#OP$X_P)O!!+4@k7pX|&QpRV68V$1zVi>D(;gPxtTgP&WxzmyM>d@7js)Sa1C=%9 z1I@+m&CDMiKZ0j0B_b>=2rC3Suu)FJOWinnD%a>9zl&*Q+>uzfwRkko%AB}%)Rw8lW!xt`fo zd-C2G%on~ku*3M=2ul($ANWdB2qg)qh^zM@?Y%Sqi)1G_uj@4cuQ+ z_$@tMLq$eO!mGcI9?hVgQb0tADc>II0U!gzo9NcJ0bupG=UI-9PJExZ`fUkseAz^Sh$WDGV_zzNbOyeT3Ad+88%)Xld(GJPGhYms8 zK18fI+z?0v@dsyKv`R2YYNG64B*(#b6Z1$#jrwg7m7T8N>?~BgeQ3b50V5a;U_Tt4jq19Om_lUu$;=2XQxH^{4V2+xh$7D?nm= zl9Yg~{aq{+XbZ#`Fn}oUrHF=!@l{q>3;zW8bMX0DkAoKk6#lFBHaPU7)&;q?eBB=k z^dbO13H+u&ZU=^94GB^IYlq^(Z`1<`;O%<*Re1b@`~_&A<#8o%8`TSZTKrZy^@*I? z1IhIfb`RR>{{Gn-!G?MK5kUC*PhG##W`6~^ttD}>mgErt_K2Ua>G}2(iVTdBn2}8` zZTU>4Va4X*xvdway2&m@pRp$ydu=`d6foz0Q(KF8`2H9~F!N)B7|4$X1>qBT?Py+x?4C#*%SK$2w(Pu=yLDL< zv`r#@`g#L+66R!LTw)_=qPK%7L$NOCVrfXG7276;JeOv1rE^{4xL=ZHD$JEXc(CKu z6dfuMwX8%|_2F$+-azpTTe~`x@ZDC0o=2Y zZ`HprR9;L$SLIz<&pbh*>_qq|DS~-iOzQh$U#kU-onoP-Mpo@82{;Xx{(!Xl-v+f6 z#*BGecSsNzto?4{qT`uP7tl3ZMU;zvN{00{i)8(^<+(VuxFvO2XIJnHbGlWB;OgBs zQYIsxqd!1aRE!3PvEi1P*)USEkUf5FlB-8Ni10g24c58cQ1@aMr+-g2J!MvEvoWry zuATuHup_|2O*i>T2+Cj46^eXFY2*6TGDnx?jAQm{!`XRKxi;H;Y2u2%TgrzON*ukz9EAF2hxG!!C%a9%P2%4IjglAY4>O6#QJL+-pUwJ@KqJWtl)grjDjoW6iow z&iLq0E7pA1A|XpyVzkgVoNiZDPFW6?T}}Yl3Xom$j@!?h3(vZ;3|j`*Z@#i1G$8Ga zZ3Ed(3-mbeTv%|-UvG?83_ee4OO(xnH9m%ktBL4GDv&eDZM}%L{r(t~|0Ka-;b%cp zk(46&@oT7=`B<}EJWvc6Qhz1&8qF^i@(~enaO2@K#mIzkFIm|!PJv+B<^nLbe@lPIX zk?Tf@kmz-WtN^ikixFa%iZmceMto&+c#V}l59lsVS9X@%Qo^Y1ZUKDpM9$`EmI1Aa z0Yn&+pP^=ZiLzaNfgie2zKYvrWb$%YEk(tf+G7v-2+9m-5uGYp#yKkQg$}NwV89nn4G!m zeA5Jx*zM^|!uG8l|7ix}OacVcU#d0l@izDSF;(N1PT`Fj(jU}A2IeXfSnXW~Hit&V zll~%ATzm*vroL?-hqg^;XngGcxC*`e#5&`%Tvq{=gK0 zKy@wyx^Y2-Ed6KXx^e`0U+?dJ_v|cq>4)+L{f1Un+wyAl5DP=OK;L^F$aH5k8xGS| z-q%~Mn4He*+ept|X&yAx=ig*&`f>J{gW4x?u$IW9`zMGH4t}rZ^iF?VyqBH#gP0E7 z<5a!G=Q3gPsf}{E!Tjf`BihxN->t&Rb%qL3>~7?F&UDxg2Drk!dogYksuO& z4cx;~VRmc^?{;UKMr-Wi7;UAly^d_^^RrDQ8qFY>eVrf2`5WjteCceTd<<4!QQF@{ zm1WpC3JWbe8=s1gFFNw)mQMg;V4R+3l2B)Z51vqv z@YUK=oPyS-w!~6GAG}oFUb0K7d4iU4PFA>Sl5MuSt=Z}MS9vmGNCj17*y5{3J8BRb zMx=&HlL$8W$uw_tZpIL-_4vukM`GS^JENnD>1L$A@&x)rh05oIe8|i_ss6*;&6yFn7J2I!ljwL`l%ti zDuWdo27aCud(G-eAA9bhq{)L>rM>6T^xw4`?bgdTnqFvW$4yS4Q*4uOnrZ&wMEhxq z$tOYrQ=ZL{Z2dpEg@R!GNT-O+&JeJRavFKuhJLL>a(jTE_^c>(m?y3`|AWeOnZJKZ z-9cqud)4Z|yJ|yj^{pQ{gx`#Y^2Z)dZ71g&?!wA_Oal*X+?~CnC)l8ZiS8oRHF0Ck z2;tnTLrLj9 z@U@F*<0pWxIzAMixIZEqM(+WFOJqA8TaEYe-(Hp|jW$){yd;2;ff=aR z%k{G!at4aDF)d;PTC{)GbL90X4U@%6gS44jy6NPwFii~W2UEpMfv<5*y`q7rNf7s5 zk;hyeOaLjiR=Q<3|Gfy5H-`>rg~mC&K~);!$UNY$`7IXiGWAH9SjgdQ9^Q#*34U1w z7xpKzp0p8}Z=yA*^KjJbil=5xT%*IFLsN?l2ofAr#_sP4Yp>`sL{)VQ( za*%5a{ndTk*hgqhuqcp|W>z@wsmYe>1~*EmC9*HnF7^8Bs?jNPZX(jD6|1z#1~UZ; zv?%5_@4=05t2KNywC@BP4kJtd63n^`?Kn4&|6>a^u@q&bdn=~%U7+tJ8n$& z*Suw>WMjyhyxkNww!WE3ic#7kH4c4dgzf9w{#txotg6=TpIQa`G-m_3M{D3g@cL!M z(rfRyV;y*ywxe-J+A-X@N6QjQ{T7?Eo_YZ4G0b-DY4A7`5zT-zOu5u59s~K>tC%ey zsu2%Vjuz+BZla{SloK9wbo!I=o%x?fDr)CM(4_WKf`O*NKO}A0*SDu6rKr8+9o=o{ zkixxh!_(@npM(b6yL*D^s`H#bML{?D;E9RI(l6*66cTUH33KQt-2UWEicN|$n)3i# zN{ku*_|9;7sz?N1lULQmN4U5l?O*cJQ+4l7wEYc6Ke1cW=MD-3*A_KmX%_O7uS7p> z=TC5|o_S;Y@-KKi@;Yg`hoR`qP|5OX?NEv5ZytubHD0$9-+GPU{1;09KpLW@J6aI4 zriPFnlXw4@cocxWvf?OQ)Yf>tvVsKaqSf<`<7^f?GSS*~o1@9$aw9c$1{ zxo8>j!m!;tRE$SKFgVCace_INpsHJDCzp8)S88M8bP_J#DsuAfLQYW)Zx_G{?>Pxt z%dIFm13vm@zZ#-%J(We~CPCUDUt+Nm#ig2+qVza9BDekQ^c$cm1ac&tluXQsPz-(sx>KVCI|Z*fagamfa`XG}Tlgc#L8tr^1L>4KE!P%P6HH4!Ewd#kAc&eO?jN zge0OC(#H~NK7RkNuk(0t`1yQZqYpz{NU&|v;xkiGs>;H>a49rUfxivJ-GuO2A`X1@ zDi4lh4_$gmeiK$b!yy2sHk3^(L!WGmi>XlqvpOvkDj}^?s!((L;!0!M^suJdF1w4% zK9h>-uGOE5Lo8ncjv1ViXJ?^X^=w?SCJe;L1@JPNSBmza!D1`wGLRdO=>TXjX=NB~ z+kZF@DM?<8(49!g8)=8Ns$8tvrjeKZH+4@$iL%Dan*^I>1A~A%*z~yUH`Tx|2EpOsa8vH#$NFoV3KT=${+pEA6L`=dT$Bz zhV_@@E84H^VyW}6Bgq@CFN8rsYq1BdzI84)S;30#asJ3OrsA5dbMwT5dB`qps(xfo zv{Cd$hpR5ad0es{_fXa_Vu<`{*(G%(t(Uz!irXstX#t?dVYt`~#v+=vYSmDr!J?yD zt8KSnufxD;7?m_!o<(hn8!qA~;eeG`h9Y8pz)n3i!v$xp7+Lnn*g}FH!_}1L%UB_b zhN!v6X)(++a@E5Djzyp=7_=+`9&IZu&ay3>j3mwYm(Z^TiBC}vME1Bp+1J&sfE zTpn-m@Bta|K*nO)qon!txGdne2oGcWrI!kRMLLtg_eP)R)c?tMm5hdPYj)Hn=(2?t zw*xXG3Sh^<*?PaPJ*eRNHzA7!LgH0g_Hros*a-;ag8W6S()pvNb?c-G>}hc)G>9fI z!2ak88%WC;49jfDTC3#?7+(`<#d7ZGHDNQWZCDA_cMdq;X_p!$V~0wW1D*Naah5k( zAnVi_Rdn46PpG>!Q86}W{~cB@B1~4n=K22FYMb@y3tHrSRpS&7qSruep4>DDqhoGy zVFnbPZ8Lvna^EHh7iVa1KZ$oHYiIQQ#U(XSc9DLFz*x-~ZofJ)?x5t#QvZN}c2QIa zYFtWFl+Yu1zSl)w#bU)>_Dy3kzTpij1z#sG{0EV;7mphp42oAf~Bb10DcscCEZdmo+c(mX6KV!;A*<2Qnjj-HMhoHceK*x$RJ0e^88+HXcElxWg{CEStofi=J zci1*6e7P!g25o%BV!P5(8uDH74Ck;rCV#-c7<3-UF~)#)>YZeIp2m|+*w|Wt#aPfH zO`%fW%c4YWY$^FEb@C^=hewHLJHlNhX0e(#+1gMS-1Um}pCLW5`8aS?=Fbrn0@-GN zEVB6D>?D>K(I-li(iXLCWFDQB7cIbF2-94jpNCx?*c^e(X8HO>Gq_grQ%BwMpP#6W z1aMG|l43P664^JueD-&qIw2>Tq9pAbm^tRv6Kd$0*&zL2Vh&%=w**m8$*ySAIS9$1 zQtzK8oxc+eY5pBP&$J?2$&oOdD|!8T<*lXS^fd3t8bliWX-YR>(`2EBgEs&pQ|7ks zP(e!ud*lw&z{)ae4bBux7hDL54HJt0R!a74QLp(*+}#6e9;)BDC=?|TaQh`Gf$>eE zdWL%)(mpYd6Oif7)sTB5o%Z)$xx6e^&7{|<@0++1wl^tftrCi_nnoPr;+m3t_ojC; zwSDsr@K!Z5UO#n^4{7*8QQ?4wESyV{Rh!=AIf;=T!q-ZcP)?WmudA(Wa^1Nn=)#t@un zZ%RTpE>~}TV0ZYj<>mqQEKm%$R{oeKLKf}<_#X?@hQQMN1WtMJ*N1>bVapK(iLHp= z!+BJC>O#T{cgBo&@f%Dz=ZDH?;XeSpc3T8GwhSB zP4YvO$v$t7#8=MJl#f4SV5q{iqoOIGgowSp$=?U3`)rG2Zirf0<#oNyCKyN&5VM>> zV5!1c_WHkV#fEtC{GEYPOLE+h`FAR5RzY$39grQtL2;9w@D70GZ$!kB04eg9$+pNM zX{FIemI*J?KO{fc=bi6!t;Bxw)L-fw{j^Ij%a`WfY2A6lYLxFprEbj~kB#;Z=I(^t zI&f>d6=n9@cyKs4{yn(2f?O2vYw7+U3#-~;zbk&VHSXJA9c6yL-P5!>7oAK0P31%7 z8CQz$l@A0~XY+uH0_&4(6!g z!Hy3Fy%6!2NEp*Zu5C3Pf9GV5wpWj@ALyFKxPeElo^y`l26*5*rF?go8vEAGif-u! z@mq)I0ke>Vm4r@o>zTVgfm5gOG&FPErtC3_#n(f#V*~bm5!;%76Co0Sud<0_@XfMR zM^91U$^_7;fL0#(vVW$W*Bb9pD%V~{aYN7B%8)oBrfla^kZoi6JNN$DhNyRe=`del z(GjS#eP;8$pjgB*k4<|QpTcRp|H7EzjD=D)lmY`^p;CIeu8k%a4wf+=L2XlV*jcn)2xN*{WY z$?NkrN?8nn+QxF)3bgc-*7iy?pn^?;_S>NNn280lNVPWsDsUIDFl$Vr9l1(sx2eM-KX;l7~ zf)_w7`wNcGIrQ%`oL++ zhb8OcbK-8{ZV}tfN%e-xqijSIzG(vQ&wX~RZ+wLXDyYy9#bXxc$E9m$D|P56D?0{?|Z?c4CBal zkG9fp(m#RQPOIg7&_l!G8`;QmbcNQZS60h>+^|gRQvy!N4yKo{*bJ1XjKKk2pbW1A z)$)bDswqB%c>&|2fvP?qKXI*HyBH9Q6-FJjQV?*f=B~6ep7OcN;Z7Ik3|*@eA|t2= zH)OM`MNMr>L>u5;f2v%^I~sCiLv={tJ%)jE!6<^Kj+HliH`zb~%nTHZ#j2ut|0EWi zbLjH-CFh5_AVVisQIE@rg(9<$d1-)=J2XA&`Aqq@DsA{hQojB)uqw+1=pP`H@bSRI zf_JaK$G{Twi=ZcZ>WI6Ba=G{r!N(W6^N5Pig;b{ZTRR~)_X+fn4Z3cU!byG3=ECY8 z{IK&Qwj^YLQhjT!kG+u6i4);vZs?tyO2G2-?ymlwQX9v%5X(%#d*M?!S8|9p=(M7` zBPUE_^Q|q2d{NA*>E(F-hy$Q-{y{^W5WQ7a7d21^E;{0rtH-$pOB-I1 zr@dhli?l_4tm>0q6yyYYOn{~s8 zN}0u-6OVy4Y1Ge2O^1c%x01amN>=`gHJ#HIbHXZ3#%Q)9B+IMu2n~jhm~4h}B^|%^ zl1DqVFuQ#z{$nUX?QH%RdmdDoY^{tfq-P(_5jcTd_jXrC0C;~hMg&nQ(vaiiMSXG_?ie}5R zc99oU&JPwz%w-nN%?=%D(93iE^Y!g}mpGE^s9z^4WOy$OKa^c`h~V(&rS8&`w7Qe69O@yfnxm$SMlXyGzl4F>HY z*B}N-4ggJZAKdzy1Mavz^v%)ziUCf(-m=(GnC#k#$!rSG+SQc(`<0ZW?8N*o^J}}- z(>R$PkrudQ+z|5)er0*}C;$sP5xk7nTeNiqk*DZnX^u%4;UPgSGJ|Lo`j#bwSV!VD z*a%KWpRa#yLCzvUjg(I2$M~2rgB(Atxflx92qSyfCx59zI59@&s6AB9>&VKy8Tute z(J)^R7kdv{P;(3SrQjv+$RAXvUjc)nxU)1@doU>wHqQT!x6}aLONY%CjNhAHVL}eL zh9M4UIM4^n4qLe-a;w#vF-S@!)Lkz33yIb3-k)4Za+Sub5xW*(Oflk262x&A|I>aE zu}Wt#b<>Fm*{Z3@sm`fQS*nCk5>$DMi4a*BL^AG0=Dxb==q0VWj0S#K{(r(R$toFa z7~Xy-uo=__ru=|5SwTKa;8(^1j=4BHn9`Y$fDE!P!L$KFtZO%l;w3)tVqvRn$g^f} zgl%sA|KgsbYru!hB;xPDkiPs&cF@RR!=YE4=``z8nOEu+J$= zaF(!mY`l^vl7G@b#EuU5&1X{(h9a2kE+FR1_0cXMG#~&nI@$R}kU13;9aclj0IbqG zArtTbl(t4%AOx#?kTy@O0wbURvIdAYOl_a?!0OQEJ|Yrw7))<%VpVBUAVEr6m?K~g z=rOYa<7q{BdMjY(0${3hBo0u^iTwPK^-vnYS&$H9=^)`y;P4dZQcAcM>v1}k1Nm&y0Z~X zxfS>$c0mJ#t2jnDbc+-$BXJarD-?Dl7pE)xy7?6=NB@%!X9&sCpEJ{QQXqK=s{7X$d7S;qA ziVhY@!W!|b)Boz}OB=RIX?0v4j67zUbAbaK7D( z(Ad2(Ysc01-JrPg?FX>B7g`OIpW;f9Wr>U5+(nUO$(hZZf^^pLXVSc>_YY$megCx8 z*g3$EpP|ge(Z9p*#p&nEmp?rX39Y^$jZl8%@#^#T-xpF1;#K+?LVwbn=3xv`)Ddpc zIND(hiA}U=q%7ZyW}|$MP-xJ>yLe$cBlcZRo;>C1=`pVl>=Xf>`McP=Q||JC!Pm25 zAzG^$VlnRQc` zo?r)<9%Bx92YA6{@{P}W!5##i4T!OtK!BG(qShpELmH zvQGGr-`ZjJRg`8a9g^s0?feX#70=Koe~4SXWD0ilsOW0C#yI~~JjtFX9lep-ou!?y zz>u?79Zb~Wg?f*I4mp@`lGnZ?x=c27!c;zSp%D&{5~oV!N6Iy>=CZN%-SbD{<+;)j zcFd(njM zqzmFJ_>y0;+(*yQ%9U`zvECd$gDOQEIWO>xjVQlaj8#;K&hirBB3&TJs7msPkA4pp zQk>wDAeuMmtVGnZ58PE(UlIq;t6*WA0!Mdr1&!^H=sJ86XKzHqEr!453I%{{AJ?YH zLuS$^I27K5K1%T<3u;AiHod|v`-#O;s{)O2D4f4rNAMo!)61ZUm`BevQIy&jWT+Ec z!hul}FHMTp)R%y0Ri4}8g8xiQ3Xk_Z7S&*yDbBD~WHt3dPCh$GUYD4PvvG+L56i1s zNXi}48S{wK9pb%jC}c0)hy*AJLLo^fyJ3+b-K&rJ8DqI`bCnYhy^H$8NS;#2c&2HU z1a2-23RCOi1EY`l4)IIv?6c*UpILt>q@g5HtDd2^z>aTnovyVmyX8 zXIldz}F)}CP^xtTv$=44U-rX5E4tQMT+L54Uw`5{+jW`#QmX? z4uKZX4m>YM0|)b7v}_b+HQeKFDRp!rRH$S#pS03LPmd~PMFyB!b2vjIR8hyuon?rF zH%yI4Iax8l46@OT-_H-BWx%h-6!qPKn`I|S6H*n(OK(LAFB>~`4lPn-64Lbf{CBr~ zihS@AdkSaePi80638+Eza2D!h{W_C87{|dQAJTnw4QYXS^c-b1CG2WLB49ZigHEZ9 zKgyS3ZJW8C@&a73p&40P^OBBcg7IMq;kMR(lF}^M6IF*0fWswk-JCRJFZdO}0(q1P04#3gsT?^(@iUhWmW!8#8zG|GM z-aHZnBt!0l1Z7Q}IPjLsa4tME@$+6(O5sXLTg!|8m5E=MLv81W?fk7*I_Hi-tsed1 zm`SdG?fRSmaL+u#e^Ghft*`&4Q7RlDq$7cOE$KMVXUCj-V@32+fUx0&WQ!(y$r~5t z`rM|82+&@2c~n2Sl-cZy-XBq7g0U%vTXj1EKF=ovIDNMSK*2m~9OmB~q+ck*05yF@ z0iiwB9ROJ%i46#E2Yjt^ocC(;{1w-uP?){fx)2ou@TXvOm*%XO-< z0y^YGUF7B?r5UxtOHBWsl#}Bgt$JnjPToEk@lTAtv*sN?mKIy%N*Q!}`~O^&l@?nh zefGEMsQ!~zro>5{h?j&}dBaY;Iq`Y-_m3BtM0`AbSNb6lm@zn^e7Ew?H8`q!Gysn3 z{}$oOfgj;`H)Llh8(b%RSMz6U`!Qk10ZiRIRGsg2;HBK2=w=--t9}<{uTCqT#$JAT zGiOE@boCM*aR9O0r=;Ct1|tjp*uMeC=h2qF+xhd*LDmyh>?0};m1j>s_{@!xK4b}@z|O00w<5Y0Dlg; zN#CDSGJ~V2d-yRwzKqoOu&>!KlOK(rU1x5qjllI0gxoy5T>NXc>%AjuR^MK#PP+aG zOBf+rcJQaE=hAx8A(QBWNwhU2h>D9k)Z=bYwuUs;r-3=tK2y?1_;~hv*Ui0lfb+-6 z!CB|yU^j;tRV15`QoF5$ls6kWU~i>SbpEfo>d@x1QiD5Hbcvhn5_hO0VINQF+dR7q z>ot8nO*u{Y&(yCq2}+C5(bZX5)S-$n7)K6U_#S`Y?F8ma4Uw)#2alN z@us$hY>cjni`Nh_8-~tZ*;=h7PRSUV=KD*YPBH%mnq_&+^2?$md-xVM2jDKzL>X zagU+7F-zDUUEf2&J@57xFeF?HU-veF7oy>^TF;*g8+Wg}@W=0ES5c@kVAV#gFJh+* z{XS0{{g8O=u`IE>L_QP8NI-KNXXV7%xr)#D_v-2G4cqeMz%tkc(AQqK04EAWE}+3O z9$_17&v|j50Y2U4XPuxk{Fe6$*!~P9*LCpeR|Sa#hzhquEv6`89bwJVHmf zHxN6amGk-nqwkiz#0)91E;w}f4M|-k*birEPIdAi8su^7sa1G+2Yo0!!m;UZ8T3yL zZcZaJ@JZKjiA-+-BK&yX6Lqe+F)2rTd)LUfZ6%FhW$DhoEyEB4zIQ8d=LUEqEIF9| zm4m8x+c3&bip*NGGqgtjbTS~u`nSK`9N+y|GXSUlS-zDq#f#{$)IgS`E_ ze?Btj>;aDmyWL4K+;{`I&?&L8nMtmK_dBZjbpY*%TPQq>%bJ**oMQ5Ib~Pd1M-p5 z^E}_Jo;fN8Af6oKR4jaQL(nGWek36I-^KG{4B#dRk?Ez-1!Shu$ONq>S=Bk8 z&aMzy{3&jq!YJ;VnkYG86;EJLCb+80t7s-G(=PfqxttE>Waz|Jrehnz*ujyW@E{ENsfuIVpgl)Vz0yvdQmJqHn983{)H9;4 zHX9fCFFE?gF5^!sGeU+pUbbiXJhgowS*zV@6F`QVy7V908^Z1%nLxjCCC4WkZ4E)s z1}&gQ)5Ef!%oYXo>3{Ru*8fZe`V(a|y>Y^HxQ?5&v>WW3`Dyu}rK`sMqR5+#cQ&fc z&ZUB0{|bn-v^LvCTeI=6Uwdsng$=U1yr6c-illhLoUs40RZZ_$6Qx`Zqyo2*eU2X>DyDn7fMm*3<4+ z+&QU)jVoGA2=tZxYA6_^BW(jB!CLs*b~cR4c39Y4-VwXEp>s?z)uk0Ei?voXzk62P zZ52U?vL@VR`w93+Z#ewBq6!fqz$PeZ73;*$s!SQp|B7@LSA~E&Df*V9S-UTh#+QM3 znvG0h>Mw!TmVq|w{c*BDwuWPBfLqK5S*bT_LG5&k?1n$AWF<=*YE3e6)D~lC;#8~B zHvPef*%01cV_Mj8#Y-)-5SrX#S}<}J=f>nAtOHUufm9;h7sY6Hpi0Mdz*YVPRcMn} z>X5T`U(}~D0l)|Wj9gkaLXpj&Vl-7(bK%u&B$+tK72={{mytLI1>6$MjQDSnIJ(cAfw~EqFT7g+`)D(A2A0% z_q&GGva*$feu1+x>ITxT0bq&r%>VtJb1|{AursmKF|t!KGE!2*FvvNWiW<3^5mAY9 zGcz*(A4+RY0GJk(2%9h~qo|N5y9kFkGrOn|vxtZoJ3F(8C=(a6FefJm2R{+-|3^ua ziU8vRaM`M9ApM=~dbREQGlCV&6xC|-={1Vg70{o)Yzq->*B8(qS&kB^8^P{+jv^+V z#!5|65}u4!lz>7eDv`$xk5)mIpiCzH^*vpdaqri2I`j3Lovi#(mt4IDuiclcEX_8q zJen6_nX{on0!r=}w}D#7TpsYb#2#TSc+Fl2h}tk&z&E69K3pP5xB+onI;r3ztAT`H zno-;&vICP_no;%<+<0s#oRgi%$r0x z;M_MNBz`4ev}Q673U9$Zy7KD>_+O`eEP)mvWg!s5r;rrT8DKUc)q%u?GYbnY-xzvg z!6mukC2K^cphJWx0*Q!H1O;Isv0Wk$;!6#LM8{`9P@LSrC^6W5mWTBvKZH->g+=+e zPma3gXx%_Y;t*p@5I`i+G=knta7en*Af_0HKu+KXky3)F!GDKo^E;XBtiB9#0)Rsx z+%i##@)TFk>}j<#t1i-pqQJNTLmk#HsU@McqBK~2z1V~15P3F&bZfwlmLrMn2ur~b z0pu>ImM8d6ME^1$3Fcs4g4ktd^)Ku;bl13Ab+r9!Hh>+GEDi8MHk2g-+)+QdY)F~T ztNE57*ZA8B>s=m*3>S}x`~1gA18NdA`a?>dt-4>a3@1;i9YOZGqWhTv;!~V7vw@*CJwQuNss84Zr+*Bgb-`Er-1>TEIr^E~!0m&10!rdR()%ZWHI!qsYU2n`@Lmm0ZK9N z7||_r-6fOpff#U2bKmm-h?hY3K1*10tuqYcd~i@YEX#gDSO{&#Iblru))LI!3p>8l z9;^VxZ=Ezm=AASFMtZ4C-Tib58wr#sx+qSm+YTLGL+xFJBZQlRfr}K6)$xJ4ANoF!pQ5H(v ze@FqwMwFk@sP=B?JZqoVMxXWqj4@nyWX#XZ?;Y(t#vycOm!`|=B z#pj9MpeWA+OW4)BzJBPw816qsFmz!b;4wFf!9p&AAxk4lmz>io@Zk3p965#imqH3B z`x}gpxYJvekOMOlh^zkxL>)y5CW87R!tbr`CwS!n&lVVJ$vYH8nJ1mEfo#^rcyV;# z!umE9f(8;+$x!$aUKSf2nCpcEYsWXtcH-yM& z1oz$^d+M*~YJ74Nn|*M38cFGNnlg`FBe^QHGj>&MWer?fl9V`#S3OE%qg$H)-mYM( zD2IW#gzhb#bWwX^g3Nir4%`gIZU%9(Ibr7UdIf@xjFg#uYKeZz{1uL-5LUVCS&J~Wgy z>;o~2?~PipD~|2aT~yUf^kAto?6d($<-1FMFM-*Q^X{J7Z8-|}wfETr_^Ca%@WXgbyzv^4jwhI z8$7fd9P~c|`;Wj|yTJh%a$sz%iSu1(;2dmBiHaIjKvxx4ourKp3Nk#Dmu>e67nD+KAceIGuhQRwK59h_L3(05=DX%a87 z8#E;zu*4>`?I1e48i)7y%1fuzO%B}=P-_K))TQmxz5hP{XT}E zKcGCqhPwh>pn^HvoDVOeSNM(oJ|R#72SmTZ>`Y8D=yT}yk3ERLYj1)e&+K|nsgzN{fSIu#l5j*nm5+iJ3T0Dbl)rZwgz zV-K_2Kj_6}(7lO==t!uLx3CeBn_Ndgc_m@d)7*%6x4EBc=+_rR_%u>HqC4|Fchrx{ zzl33>E7`w5b%0pU#JfAmE_={r;DElTR;emKl0F{b<`>|*(&Ib&rxxSg96{BdqgCMj zfkUR2<%Hi+-^Vbo{rw#M*B@^NnHVpbRki{*8yKR6-PtX1OBQT(^??y)J6ta(+z0_b%2;dSoIjF) za6c=h$k(xe)upp?xJp3K(o$kR$@;aj3__bryYui(XKA}Q^bn>8xzN@x^KHtOAUtVik2+U@)j0kDJqj%OLa1De$=q(vdQumwPRW*c$dy!~ z$OWo3LY2h3D&`G1h6M+3IZV2*S*ByTEyC{KKMWVc2f2Uia~i-yZ81HH?7!l@ZX6%= z-uC{sg_VPLjx%#3kz>BRtHI=anJ=AAF@Zibv(lE6@ic??&`Ab;wCy)+}M05oT7W{ySIVIIgrsWi5nr z9BG8kn-u@JmYhs>;I6R_fxISCEzgxI%9c8}1IAlh!4LR?@skf^cMMZ8vskYfM)&%+^DHCLgn(>{O`!?MR4e@QT&H-h5|-a5_qTdwCD1nt9{S`)z(&a|4;D*G2tYtmE@Kc&4MwOPc?6Va9u-efEGgT~_a*eBcHJWW=|+ zgNh+r3=#OGSSP^OP5C?R`@Zg-$DK~wDRXr1afHJ1eq*#Gpcrk-lD zf#Bg5`T^4WqJ+swEtBl9D82rtHG`bbL*4Ub$~Z8h={CsrG1m1{S*J*f$c8wkf0R4- zW#(1Vm-E6QWIakI?_Z6=VRGp#4lnlBe5!Z3LLLx}!`?R_W}tJZkiNG)M?z-c1$W%) zhOT|-uOlm@^A3}>Pv2P`r!(E?Ds_8lmPycJ zIqWdvTM^?w1nbNu0dAEm7UXNXRw7%b-fTA&q;loT28LoCA!~i?6*l0>&rBTAn9^5`?0=_7GGg(d6HA#S+q44g`r8Im>_^s5=m&&6OYHavXt1NNc zWJvA#urSC2LuF26?|Rc?Ldgf}{CPV=wno_c)qW_cC(y73(?x9ZM?M`lgi4maU!IkIy`gpl-8DziY z-YmYKD;%`KaEiRyMj10cCMp7BhhNCoBE&e=Oz8CN$u%xZ91eW78kGLA zL>eFB@*tFuT}P)rmP=Q|Jhr#3$tpPK|Fd3WI6Q_0Po+xr%vklv4k`PPnR@E}5Kh#^ z@=HzHP1GvVygKZ0*4f_>4<2oMi*?Q;?VcF7EVCyI$~d*E(U#itP(jxVq=*F$S%|-B z?{GlR(VKU}Q>s0%dcRHQC1z^02Rqd@VMLZ2galA^#h<7%(?%3nTUp;@#wbkjNXpVa zV5)dO{M}NT*lL-bTR5m1c~Wm09qGVWk5F&W1~9B*piJKJbvocDl3A>5T6HHF)mCzS zdNQd%g>Ac>kVtW5%A&x3a%2IeyeVot_!VI~K~MXltU;m1B_NKvme<+AVT~hgP}m4u zp;;;rb#Su`cKW;fX_TE&sH&cnp4CwaQ*$Wb_x@=XSN*~qD{KrCQ$ zUh-pAXVS=@L1gqwX9o~F(q2}}3XF{j zXmbhB4^4ATB0DqqNxPFqq-|5KQ}(3du`C|z*N{d9YBznid=gq&MEX7t)_BGjO`e>0 zyaFDSAE_EjLe7aIic3yEau2lB+z=K)Oy;)=A~s*{oUt;-l2JqnIl*QrF#`)24!w)< zwoaHVWU(tW#>u0ZZc%_RDQdF{x3VN{7VW`l7%uEQ2u?u_=#knM3_%2AkM=96RVO(k zAY73jUTv36uo1seP7f$m65n0wF%Mr=<^GNE&K#e5oR&UxtBfR&;OJO9U|9QRZC9Z~ zPCZ&m3+n>d*fD!e%W4w^f@N24*{MiTW2-yudLy$dFJGu%NwXn74OQPPp&_=&Or+Z%r z3yM&OE4zB$$+5!4Z_^_?pGQwNT?<3Bqe`zBcr}wAB?O^yFes1Unza3kuyfW4uee;v zyOdj$rMeDr^olG$1d^@*_V8x?ousXc#T({)O`+VQ@dR3%$A z1?%J?t-J{$pU>v+*3d;0lwdDV@A=b<@@1ZUzsq2KP1b;igCqGmN3eThu*-VI)5Y8q;((!f3sXQSC%CzDX;$37GvKI{^Gr zvdhH*G>h12&o4(%$Hbn+BitKjDgk0a#dax2z&o%4#3vP+yno+gvb9I-*R-xA*dQjz zaFBTNVe0h`*N}5$ZyOeZ))YMNppteb_+I;{m-VSx5Yh|OtH9x{K-~6xIZZ)*Y4~ur zAVVArqZBj^ivP>;f(|ICv zgqAKh{YlJI<6p|d?nnGhCq+fFx=67Br&1DVQcmItp7=~YBop$Z!3WlQ_>B>Ue3B-X z)7S%jJ{GrZO$z50OYa2|nbtF|?GH>cf9ZfV7mQXB_Sc&N8n(3})~u?kH=KzCTzcv( z*fSFIf42BISiJSQYbhx;oMC^RI$zbOt`#6X? z;*d%IBaCiIjz2?AH@v<^!XXt3trYTGC8r7EkvnNZf3O=I4zE~a_(F-lj3vH4Pu&JM zS|jL+4Jo{%@@0R=S>}y*7|*-v)?NO!fMFjmX%ZZAFTV5sU13SyzBx4eBK%dUfOwtl zJ`Yvp*a{yRfI1A3;=bb0ev*Clf-8{ww+`*Hes}4v$2ZTTAbs#&;}QEe|3B5i&69Jz z4I{`Xh4`@>d+Gv_Sp*IdSSiR}`iCYU@50-j(V<@*(`;886@@DAPy(Pg9>!F4Iupa7 zeqRaRF$L)1nEnk;$|>zD#>)=7J^$y5Hz^j)ZH@bfYU;Yvtr8B6>!vG6|&$);%!$k=W8)9|Ej z2U+_&im#m$*Apgez+{6n-iQ_W*9MNI%&V&KP=MupKMc#W6M~Hu$_+K9G26=uF9j|? z?5gmn4mAkXl*Sg6ZeL`64%#yQPtB%;)f`e?Fy}cwXVQ_mYR(jqX8*!ofzh@5_wXqT zES8O5@CQ%GWQ*uP%#`qecH(^e)+~cnSoP`>M!{Z;@(CnPZfrAVbQJ***1M&>UMck@ zQy4SoDVVTjW)FU^VcH#KLd3}fFI29iY0{oSbDO0`JnQOaeM-~P_Ssks&&cb=mZc#g zR`9UVG)};Mvr)5|3g|Pe?6xEQ#|HcGkD+lR_pS{q98H;A217R^z6&9wV~6s=_o&f=Ut4nY0TW(%XSW*SSk?s;p-6RwI_8Xv7PAg% z7cFrM`iF0J+rvk2Z>a4bOWe6{J;lTWtSMYo3lh$GyA;JBYz2*7OhsE>{>$+@E*?Q- zT)u5oWXfG9sCxtz*I$r=G^R1E6p<`v0t=@KQBUG3#RtYT--s>tum^}MH?c_p=oy&l=OU%B^7GQ4lz`?)ob3l z8e~5tJ#*C?g}?j(nPjKD^|eH9V<+!8c;GVgNH51Rnrx^YxY59!;PzJ<-h02J&WN1K z?rVpG3JhBL0eLr7J#N69T{h6 z!zGG(jlClB#?zmzMemD$x|gT0&s4C6>h{)SxZ{~ct5ongGHC<$$Zgw1UQCgMH(kp> za(R$(At57Ezs(?HuGn0#MwA*T3-ydvZMbt%eO3lUy%C9BNBhjX@^%aZS%M?KW@U-X z%EZq`(|XWNG|tt!l#HvCs!lP*qOLf?GWN&nZN5kdz$f5mQfEeTsu6zj0JpQ_i zyqW_lr;cg+&WvdfN#&Cq^C0F#(_~s0x?GB*>uYnj(hvRB5`4b}imUuIRZl{1^H?OV z6nCfOs+w;)@F}gj2{=2+J4M~-?N7XzTT{r$O?Gf; zA92mChUI>^J!BnKclFT8-Bm(ULF)_P&!h$B!d?X1(+$TC$glL^7l!mj6qr3;)@Z5E zgT!8zLv(G-*??9I;FgTlT;V^awEg{;aF3O9i7mvq`kQHEDzpNvd>#9C@a>=D#4}60 z9GJ(Se_Rv&)=A1#D&kn4&M4EOQgBy+Pk5-9>TGj-Tw31-WP7rh#VYJ(qpSXz<<%}g zq1*9d_I{1op=-nEuHzvf}3T9CvLTMydVi|)gC zFNUe&Unx8EnC-IdmdzrWOoDZdp5&ZSDRsYhLj|{*%_T3x^Y~>vi)9%Hp;D!N`&B1) z%XAYLHMhhcB8sTXz0yAVubhh#?x<;j^Gp+PHc(T!@2i5ICPTF5#8yl7eAkT{QD|+5 zvc@CPrYV_eThmSFRo&L+`*?*g09>mV*k14Lzj%{!m7?$QX)jbud!_$MHn9q2AYAz^ z^Qq*>741zom-T-NRmb7Di}ytyPb_h#z-#1YBSD51Cr%1%RDv1lPxQ&N$-&Wp>>WDm z&frtLqzm0asc!+c!wF)y9?T@MvKCEhKniu z@sWx;j=`Syp`D>tVR7ZJ^-wzm)`z55ku{3UyJ?@a@&>x!{;v9E8#OD}+WE4Z50 z-t}HK8{RLZ-BANrqK)>N(0dnm>l}ISEitw{?BK-+H&^+W!ZfhSh-5Vl=_0Wd(!Y)^ zD`cjXIIYHcc6GrkD~Za1pf2%djn1wN7?_&WS#(ASURSK9(f%kB>fvhf0bxrNw>P=MSQ35k_gV%zfC=?L0TbE z>SQ{u*Q*g+Q1n%xWJd*g1QZ7#T)wx$@R#|km6orb-6TcJQ|qC>dK4?WPZJ?wrlT2Q z1v+x1rZpvF66%t7qR&%dk5e=OvcKsqo%o_o4TA(k;-=4sdL7<-b9`515wBBmcDj=H zHSZFYvS{TlnUmlajA^o#6=98RpS(+#G;7aK#&OBD>)|Ib)$s#PfPC&Fy@IEgbxQIrDbOKs%0SQryebgaErJPo8K6)9 z!rx0h9A$|ls%T84QX%V!UI)#@i4EbG<=W}S9?yH#W-{Ys`}=|1prqdgbt^0B_k#%$lHvJ z!i5_j9|I-Qnecn&p_ei421)H)pc@x15~tv}6C+(&bg!F!X@>A>=F2;}w^;7Lj?U=uF_hdid>rne zQ!wTAt*285+uVd6?N!ls4Fy$2JJU99kG%`GbCwjK8UE-7JH5;iJTI!mEZ-@A`=w>0 z2U-anh`fOAQ_zQPc2;E!qkR#n|NrCOHbrbSc1H*mH= z1ob@ZDcN0K*vo|WFq~IPy#PPT1V-{!67ezZ)_@o>>@}(4iOp!ANKsuASIfug^LVWFw$O?=nUwedOog4Hr zk|v8D7K!wV-xtV29W@M6WDL^xB`qEPns05|Dd~p| z#+uV`f^#0m3QfG9IMK8t9tGdjuAk(I5E&mvr*|Ids;2!NM5i1O^&;QG2yQnXUXxL8 zyUGU%Se1V4Oh|7l4vl0R8N`dM!{#qs5COwUXvD~Z3ENM$@r*JVfv-tMfpZ4h_8ba4 z+Sx2N{b&{Q)YC9rDTgYrMh4MjQ!VwSo|v3c!L`;7o!=^l*l=BdVll=~P5^2+Y})G$ zgNm0s8>6er1(F zOG7XgUZQw8%df9*Q~QKbnN$t5X5?t~Yxi7iB<0EiXl(4xt^ky`ft=cLe7N<=+~C<+ zW(DYmKoC-Ynn+qksh5C*Ywv+ehb)YPpD&M@7M$zl-b+#6o&_s-6i4zCF!)Kb{Zmn5JT`^qDs%8UbtKz_q{+LAv>*c-)n@wP*0}<&_ z6%n=i_+(GvAB{5u%2|jFC}0HUif^IBy|Q7bo&-V56>&~LJ#GC(Zv62JV6f-FMEdfU z7?WYaXjVyB&VE%aW{gl&IM0r`DwDz9%T7N070aFslYXXJSGicz+>SMg;06VX@KSdYG{A?iQtrh z&=ZJTV1W=xRe@dyFB4c1SsT(ZhDnAG1pBK&Coe#Q%)vy0dGyJFIi=TWu>1*>(el%= z0FmY%ng+>Wrld4<%ZHt71ThRs$Wt@~F)Gf&h7Pn9Cy9_Wrz_Jltc8*a0t$6PwFb<)7BwEDfpEvi7X;~|U! zY!|>}#|psk1BMj+mGbNjo0Kf7h;WI*1hEc|`iScxNS!4w1x-SS2$sy^S4A+T4Zw&% zQ{Wk)=Q{dfU9kNF{O&B1fRZQ@&@~{5qDDu3C2<=6UBbv9Lzu&dFhV5B+{XA&ctQvA z#3kJ|KoiB*1%*XY1I3^OzB$KoO>UCJ6nLlaIqZQ@$e}$*7MUVQPM!kkS%}|Hwb4b} z@ZeSVL|Vonc~wyJ(kCH#|DfWfnU?Z$lh`L;%oEo>FYR1312PxmfQj=?nlq)lpDrJd zi}!15PEEALlm>%D0%>xoYq0`mZ=hO)t4#Cwe!uhUM{tEO#yP|jsYY5`w$_ZBCKr-Gy%~vo2?B5A3u9yT7b?3GM1xE!JAh+y6J9fYxgVea$;Oc^@ z&O++qd8yA+_CH7qdZ-&{dpmuB9KAhb+y8iv6eeO1Chs5DfZJU1PY5J;NY9+VLrGFB ze*xz6t(%->))DS}p$+kAl}#ZJnC97zRh^)Dil905BAqqRd9^Yb;p%m^DhKx4I+AY| z)nNSRO!PQ)hEdFg$yhAHEYcta(Pokgd`&|k)tb|AygPf2J-yK!#ScOhOHokd=ZI4w zv(T6+wDS(t6}{#I>M5yB&xq=X#hL zIDA2@cvYGr6w<|NL*_)D@X!{v$nZ*vzt%efxsPKFR;f`uVt>63_{WcSK#|50c~T+c zIDq1(VkSUJ=#{xNghQ^>vx!Y}O7iSCLAKqg>J}={06T?)Hc0805XP|>k(fwqhwEYZ z76mh4JR6%47Wqe_F8%}zw;`RrWJ-J=Y~TD^8a$DSx-TQIBU(){K8qHkDO!MrpmR7B z!Ko;{(vjeslmwUHyEmduFPZ=KY=P70BRBrwFkV?y9P-=&aR`Q(d>STyV0X|Z&XBLi zsS%f%0HhTy&kKU42>+N`fabI*6u6h=rPobVBL3Wmm6a-{gyU9QH}OxO^9#7x%n85{ zD=Gi4Zk%@Q`;VwaYxD1X1a&86Sh^59$k4-u=&9*0Ozu1IEs$cKWTgaMYQI$% zq0kD$gkxCuwj6r2JtF9`(M6-QnL0-zFab0rfgDuh#V(6fv38ofIg!o=af<__wFKE4 zUYj-5gVQL4Fovke9?_bOjRd6y9qOEL?rgWV42~BqO(*jUU@=2%ggRO`bBUtb1a{^< z#{1QJj#EgDR~aZob37LII`_Ro^q~vHqXpfI;ALl zz>S0V5yj8^1)AVAmGP|ohhLZ%mOLxjgG;%VNu{j0(j}IUVBJvI;Yq*#E`P{V)n2M4ebD24;EY6jfYVxa!p ztQl2E@K|jz)l@p0qls40Yff6~5XS{nKsiAAdbE!JpjCu1s%MFkP*sDYvd((sfJ3yj zlQ%1qnAxD~0VSii81_lg0+e)FB1&t4Vzb63{asV|aVYFa24~YDmk{m`qQuk>thq z&dTrhKes@Nz#mg4TA`q)0ko9>BRO=md{YK|6UGLvrkvL!7p?B$s?rPm1kDnA!T>Ew zlDl3ASgZvlhrYZ@3#eX6YHB&NK2eA(a>=bg8Sd{|<=>w&=r+OL9m4}bIbE$JSaLY3Yk%*UN~XEvOqUH04~HL_v`_QE+0K`IdJ)Dvn%=S zeSw|PxXtlT)Bq0Epew$IAouC0zD_S4QGoE*KhCmF&XSHKFc7*Q5)g>5O3prP(fB$= z4x*nYx%b-Tn0%#^@kM8Ewa+3QotaVh$+fIp{2%6y;he_6R{PwqI-tulyWoe3OZONn z>g7DkBR+NmKJ@l$DX%n8Wd`c)dLJdXh(`tP{%d|q;pp|<45mC7=dca-`6>)#5szLX z@$TsQ(NkIY7i$*Xi1{#Y%0;!q(9S+;TJ|o{UX__YgP;0#WW$^(?BT^TQ43I+C zA|ZL@$Py7)3CjM~{&`wduM6H>_S~@T2!e@ej0z9e^dR?{3vkcvR(Dr7(>m*Aj%`YWVktaGhqYU7(VFw!!2NiY}g?lr=Cjc zNQXqC@@LUjk;Kc-8BmY9q1ftESsw@HQ2R_sC*kAR?_4%^+kxKq$47gJ=1^Yt5sGNm z0R>KLF$us&E9t&!)8GR5>9Vlai$bF-MJ$<%v@%!NJ$^rT(Yr$1V~cek164&;q_6a! zf1+eIfn#TTvkbBF(8!xE%R~VmfF2%FJOk7}uRO?S;%U?!T@iQ1wn~=J{|$%V9i3FA zOkh*;y|T%OM#sNzaB5=vrdwsT6ashPc)Vneq?9pwA!h7w__2DT1E z6#RrdZWJx+^9ZrN+?=o3$P1qM!UO8i*xsb4go4m_T={;%Je(p4U?}lKa9a2F=;J$| zT_2xtUzd+%sqCHrLLmJ_>@GudL#D7Dx}JNid+ycGlyD7v?dt?ykh-UW?Ed0lugcid z*@Pt=Ri)noOfQ;0SDP&RNa|C#7*GCgjPFaqbaf_ESoQu}ZLOXF-#R&ZRqV-tF>mUl zbncga8Ifw=MKkrT=*>gKt9y0C8P?^S^Z2&(Z@K6?LYLN%W?*~Prd8~!03R2(Cv1j? zM_WJF?xwmWB#B>wentABXp0aB-qY(;fY~O0^H{af=fl^|v#%-4%7z|evfn--a-5F` z76FB z9)S?#qgRC^FW3}izQ)K*398C-#UM>BG{=sep*7;$KBt$@xAA3=;b0^310oAc|1v9O z<;7YUez%VFF8i~5m@kN%jAN}7Q|cn^19b`HCK-q zXS&PRmiuRyXdAUpRRILZ-JPWyUAjVa_xkmLB8#gp=u_%qJDu*-oL}2Tw^z8rW@TSg z9a=QqR4wNR2ZBv@7H58(GxVECks^hj#@H}hg9`lanw(BK}7&%0FfYJR5*=P+=~+! zmr+#N0HL@jZ7Ox^$$F)F{W*+tXcNqux)zX>s@cAfH9~o>IuZEw^s71L@Q<~N+jg`R z64W(Aic4fPlK6{wWWu(ooj|0WDC0X>sNM}f7H}3*CJG1Zk6x78)6R(cWF~|U!4fV4 z2i=y>>7te{+SR{eg%nKXDy-YPt;dP)Q?Kl5&2xTN%f=;80AlSIEyN2Jtt+8nljZ_` z%B5DylyTjXkJ+5rxSIy7wdQ?nzw!&#j@h`q$#_~2=^GZF>+B|7jLAxeE;w0wT@gWG zG4L9@X*%H(PNsbO@;_fb?`F+&4R?z=G8+`|$Nv$~HETBH8jh3G^2H3g%5&MKa4%Oc zhZai+m1l0YYAEABESu5E#G-U@d}23rSKAu@*?Ki;J+WORMA(>Gn>}TQSKVhy+xT3m zV)xn-q+SW8yCDedZVoMN8Fnp5wYp^GHcPHOE%*y<{tCJY*6Y_fdSLOzhU+UVQ%9`%)g&HIy(3hoP_1rqKs{Em}lC{S*&KrBOjKTW&-Yo!{C zClV9I;OKZm-;+P^FXL*}m6<`nth&(%Pv=iyB^hl@v}156>vEfzM{J4El! zum4&HO*s|v5}(CC-~Ee^4k{3YX(NyFgQQ+Ww`|@$;W;QU;3H)8DvcuN7 zX>qc~y0ffo6(xkK1mzv6H@*O3Hi9>o=oWTd@e+$nf+pAK7L4x2xiLLRE5GCo5S0kG zMKS7a=#nvQ2o;)uaxL--eR9_B^ZHaV;D5D?iA&R3D54o$jJoo2KCFt3Bm)PzTwFBv zA_7N0-&2B_k?%DEXJ>Ad^I^SDrRZ-&iTjwENtJD*zH621e3~vVF}8<3-;lcrStKw)s}=1jmpe`Fl&d3zWoA#*S0mEeabCg&N9TUeg} zDk`okvW1(>4X}OjfO)WS*D$P_nWY@?19mf2dz%XC2T1tE^#6gCg^7hTHOCKt^}hwJ z{eA#VXc0zXQAROFF(!5`CRuN_qb|!uz-v7%aRW}^K1)Nk! zQAZk?_1=LZA%YH|+=st)=nXH+D+^Qa+KY}X2q-!$NflFAkV`DdEV(GzVm)iQ?yz9a zE^;(pa9L6P3ADQ``4LA-mJ2elXwjoy+p6*CB6>GDAz4&5$b?y zQtTAHqOzn}mAT?>{#|72w>S!Kby4&o2-V!Vv@FTf?`x${UY+3P56)w$Mye)>7+`0W z$4kKn@GO&4^b+;N!pmouyCObQa)`=!zxR9OJS~3CTK8GtpHsMkXf|Cy1rjBy_3PexJ!lhF9VZCfikr)c5004pT2Trjdgv#7}$(PeCbXYs1ObFEUY+}$QELflX;o93eL z(l8nmDTl4ELi+TjHV+8j&b#S-EdDCOf%^~Oi9xafY{JWZNb?q!<)`-Zs;t`Q*6I=P z!t8>d#CN1`afisBlBZ)lWcH%?P$0@Nc7A?^P(<@-5K-(g8aRK8#WC^0yYpfXmy&S0e%3z`+iy=a%B&EJ+CPR}SOVsaR-Yy~Q`7XxVj- z?-F8b3xv24kW-#5Xz&?6_l*U_jr#m5tTxXt+G3ZQHhuS+;H4cD-fWwr$L^ZQHgzYk&VEy~Rc3(_3VV zF%t5iKXRcF6lFlc(14(zpn!;4tW+Bj@PWbpXOYYZOa@RmVuBmnyHgSMx?6NN##vDx zh9@QtWNRdr?+zWla%Qti>4@?Bl4+`iv^=D5`~5f4n7gqOZa=}xRnNm(K0;Lv7IR+0 zGLs`v>(ES1PSBayeFHarLBQ8j1(*q`6+JV&;DJRz_eA+Ksxdfwfw7<-Kq`p> zv~uuQ<=CscLu+sG?{u`4I+~V$Cjuky*qR1CmxD!zZH)8(aTsSVMnY10SnW`Z9O ziycf9Mecc!GQzaR1K!6KwBx+=Yy`!gacz}K7EBx0enLPvNMegNzW3G7b;SEOO+Hie z_@mqx6~1;sVm`iydWw#aa=!#8eP!gNd^ZQE5&`m#hQWznjuXM$x9ZN|H>h8P5P~#E z$w&$IrImPXwN3hd9S_C*uaj7vF>bFU2m#T>YP~_x zKS)IxNGMnW1^#AWARv8EAfW&6>rEyBWddxfi!gtU*G-!@+277GdD>}d69tI>{wOAw zt#uvcJU!wGjDK!>EI`*JYpYSkqM`*JYD=!Do;UmFrcpWPQ4jFc76@ZHTFMcQuUdny z$~YO1L9b?TBqyRCqg94Ct zBCC^s8C5O)`SZW37%A?lDhoOBpZ@IC@pfri?xFH^l&t2twO$974G@5Nv6Us~eB5)n zk^<H@1DHaaMr`OzCqqR^JMelnoyTw_L*aBwLs$-g8d8< zbK3?NY?Y=_g6@L&+NW7=hwkQG8zrcw5@KqUx|4fAW0(*5YGw!r0sI*|F>6~Um)iGw`+h!(VKUm2LIn3 zZgVdT%>PzR!_DLWFK_*is+H#dRHf1VZ&mXD#5x)N&sY{y{{PC?%+CV;zjFPLDp`jO z5wOJs*L$ad#dDoD?nPwT!=u+&BZ3GD!`5?BwBAH7TdyRo`}?&JN2o`bo%o3qM$s3a zPqnDArXUR=fgq2CpS;0F2D}z26*_D3*wK@#o6zr7ra}>W%3Rq&x^|_YVV2?rg;b+w zYU~Vz-&wLB)ftHbjb*_iC>0YWn-&?;4hU<3ijX?!iKVg=QZeZq)inRZ9M5q447QPR zT+s3AN)Sd1qstPntVdjPwI26d1yF68q8(GEhcCg99n2jfpz^A!&Y0()p~G|9&nlN# zXHHcyJZVk>z;5IOffoCSZA@hp#kBdr!#>UoV)`P2H~Sh+368#kP7k=-(qOx214j1O z23GN#J&S#aL+i7G5sS>H;w!y3nxEb;Ka`|g(``U)8J!>#s47+x+3N!B{BH}H5qp#P zsESFGnLF7>U5HxZJli~KZw4ce;h?-%_x1E^(v0#q%lEgRh%GuZ!drv;Q;uM)w#PNF zkh~6j#!rl2C_)gD3RdMIxAMS00h-v*Jf=jBx$4@MXAZY_I7RBf_;fe-cS)u!Kk7_S zpMb4NW1Ba=F)#8JRUXYoax`g_iI!6@9s*_7)x zi(#+L2>`dPAe~F`$!n{w`N}yrj_%_c$C9oS z(_pap_B6KlbRFE!r{+QV)N}fGdi@@{4n?A3cu%Jj1A3SbA4dCnJ`8?&_?}9#A^2qR zEQw?00LNFcs-YH*TW7%024I6~ENMH(p|ruQ8#gfN*@C#IurJ=l`D6bz>vk80 ztGsjm3%{}bMa#d<$a8NBtZLdF)2Zdb+c6o|)kNO9Ik+7i{(~?E!NMoAt9wu{y0>(n z(jLLP2CV|^OVPcC+qG^o4x*V|Z{Ya`*ncPgzT01C2>7?3q%PUltCBpyJkqUnt~+3` zch>7Ng1#Vm?tCULEl8049XC?MTa+}{B{hU(Wz=^Cw)UuE7rue;wz8AXUKja+Vb z=!Ci1q4s(sI^w`|YQxTI_f2ylC+K}Y@iwuY-l&bcH)N9S=@7^V8}mnJ+Fnw&6*S)S zQHaGQ+!gb+6xj7Qp1ctx_*cLV2ss9sPa_>Mse|x6id7Ms*`=-6AUxJN-JM-*c)OJv z$`e8V>PmeVdRnmQTevogT^v*GqwmmmY~8mWSP8Pp&06|*fQN*gkEtteLFf9_km>Ge z5VFgAk)*eW>g1fP*E3V+KUvp1uSOR%ex|`vX3*>E(CH5MZcDawY~ncp@XHs)I{k8f ze+r<@7jqT)LWBI4VDSC{gXk6-n$ULbRT3fXN|mrki~;v122A(*)tlaXgO&ucL2+L5 z3VL)gE9~OoT@&2o;tecEd)z4O%xgCP3M|+Tqg_#Byp(GTaP#GD-S#a(e(MCyYGa-@ z0=^&b$%*2R23=p{-sJTGd7DxX_UT;{rT*#17?gzo^q;MXa>0;B-!$U2KE4Zm>ap=~ zZJurv`y`s%>mitj^-u_o=Zpvhx zRh|CplW*P~m?5DH@N5WAe;I1-YnRgzcl=SEjZ7S^G0X*@gRgZ^ecsC$NPIHemjw}) zorSjtuN{1u0%?|+cK$h}7u~446SnjX5XH@{%OvtXwkuS!0#5UNAukJDCunYI8 zkLTHqJ$`Q85eV*?F9Zz}zm)(VNGfyq=^Mj`AmRuHA(Q*Ls!0V*6j$hi$2nikbHHI8 zw%CJxY2!4&5zdom@DMzD_}BgDhIkxuYg^{7V-S-G)=<3h0gkK&HM{Q>e(g;5;GI2Q}QU9mjb3PtXVx4e$eh;fQd??@)bjY~4#^|{r%)hRSLXgS5Av~$GRc3l5Xw3j z{Pj+l0y$W@rhcBOe+6^*Bnk}c9cljbC2XvV?j<=E?+o$f)2&pt%FoeM5t={;4@M}y z&zQe1U$n<&`yhn;P#ffx45Op@owH%n6knW5hx#sC9vm|bd;|f=a6i9)TPce?aujV%#;LK@}`_$ zBr-h>cwUi{5PU895`uQXQDtI9exyz8@OxHR%-9xCS;Og(f79QT#P2f1m{}8=Zwc1% z7U1D7d%!XbV>#Xke+32k=7Oa1J)AHNBIW~FDc1}0i7i9i@FN@1EOq3K>&ZOF_6&b7 z0EvmPpDPG@_%nWg1_*sxn?kw=ZxB_`YQoKlM=}QUJV<2GOBX5Ihbh{6m(P>yW`yO@ z@iQB^rcf2R`conrdyWn50-(}D^-V*Zmd-4F5k#q0;@1QGNvXH}X}cR&qw;mLe6#?+ zOE;<3tf+}tPpS)bcY4o}n$s)r#Kz%odTD9ON^=5bnPks0fzx_-2n+2ivl@8gKw`~E-C+srP?nj4S+#&{D?JD zmBfA}q>KFdT4~smUZVfBn7V4B(wPpzKn^auHkkHoQ;+I2AsJO6%Jd1dQj>yx#jg4c zFy}jUU2;rYUQyN?Vlri3*^vWboE-ZEK+Z;O0;)dzf@njw$XLVoRXRUE!pwP8X?C_maW#^LCn;9 zr;E#N*PxqdO3;!1s-vz|tGJC^EMTQW)TEfZp|_zEoHy~=r0O&OwmZ~!Lfp;vMEmPU zE|NJqtGlhcTCsX)4sFko(6tKytxh5E*fqLb03x;3zV@ZMwk_~G%WFVY84Z^v>mHef z9GV@%;KejK>rxsAIpAR^Fr$`cuxWEpY62sV*G{R4OX9*W6Ri~M5}R@>I&q3li(YtC zrmoc1?RL=RvvO(#Vemh)kB)qci7cn5P#+LYY{~GP%Xn`Z86L@a*RKL>vB>gSGdsn$ zJ?>zjV-_FI5qmHh?FnruL?^$+Cf9yP`MNnm&jXwWO~aw@mwWz$Ih=bpnn zmn99&%|w|z zQ9g8I*glpy6~4GiC<%a!2mKE44*Pt*j^JNbNTT$F?SD<|G}=kk)ZTOyoe-bZR}#+9 z)PiPcYp0Z)aJ(2Qx}bUwFU1`QFinEDFBg_%nK<~?&84md%KC0$TbsY?l$L^Oa=rm0uM7K(0jf(i2g zJF{V#KN=;-Dy<7D9$hxojAh<}`&sEQ)e?OhmkvTQKCRSP;fKu&-y5#lXqh&zVV>uj;? zRf#${{v88D*#r7h`j^HT`ozq4 zfUL9{{g>Pg9|QKSmT{-a_F+i9)&?s~m8gpY=>&K@&Zm^%Z!t%8fl-H2;Ql663gph2 ze-eweR6RMrEU?3n5<$STFHr~X$j8~^Bcp_!zQT}W2>|4vRf!t$k7v}IXiiF6JGb>5 zp)HobD$!pKh7;fj`LmblrivEVH~d9C+?+=s*E4tXMBOVI2P}70qD~Hu6JW`@YE8we zg;umRrsIk~PIiuye#+Z!gWFpQO*IUYO1O!OOv4p_?CeA*`IT@3;vy4h!_VuUTXKud zf|WK&Y5?RB+XP(NewY!cch|Q4JECcu&)VI(z>MJ*xw$C+nPKKSuQlju5iYSbu{l-Q z`fs7S;jJCm-p~9NC4nTn^Q<17Jdc917KeZR4zhGYXR7LLUWrUZ)kDk3+}G%wy1G_b z-KX2|PJMp8_H(zxvuy$Hb+4Z`3w-j%yVth*Jit2RT_Z4V^ZxsbxI0^EIQL2^=iZQ8 zIl43Zyjppg z#ynuzH};R$gU@rcx*6E~3=)_dihDzkH?%!snpx^zhw(Sle18g-NrRPO zz)YT-Y0@~+Z%aDGGuPFv3(ofWfqO96*)fc!Ca)9vf88gg#_@kT4_di*F1C*{C;rcR z@+~BJx0T|+wCH#}*!|oZZWwN-U)lL}${KFD591rW^D(UYEcsiN(?oIdQJU0l_OWBj z4xhgVp@nN?!&x_OC`kyhuAgfd$ptTf$$l(V2n-9G0zp2NTFIJj^ukjUiTFF!;tEddtc#tW>r~dgw>RB ziDOw_1HPh1HH)%+obg00rwL*TIjN@5s2tly-W^6fVLWJ40N#cX;xU6-)MWr5p*Iju zWYiT8gB1ywH4i|W_-JNPwoMMg3FC;CYLrv#AXNTN3M*WBnx1W@b9M48H{_>fH@Q{=>a}oCrXFnD<4ch z={Y71&XjGSsm?}LhrqN6e(sf}+B~1f#RxFF+lfzS1v=>qu@Ojp55zbNUUj} z4Q#t69n&rZ?|O=xR^s4#HO$gw>gN9)!|)%1xR!LoXZ-Dv&k*(&3TueJ35WB#)YvER zVT|{9Q$UE93)0@egbZc0FY#&leYCtgeqV3c(aKUTDoMwX3vdVM*2@UBbte4U% z^VU7TW1N6OzpIn!Ab3zPJc5xub4}5M0;SLQEJna_Y@&eA}~c@GI?sc)ajp4tI9z2InUz?|6Mf}^+%#)-y2 zn3#2F5wt8|c;}$Dqe9CTpzkDZU-Qngl@&}uZ(Oc7zMIaXn0*6bpq3PB8+6WlL?9$% z;JPLX!*wA>`!|C=_tIl$0~mwc{rp(z%*Rl&E#QNmqF63O2B*L@z`%q1V&WI#eE&OQ7-Hxs}l!NYPQaBH{@1-}4L@Xzzg$TJq7%$BWtSixxG7;w;Z`_t?0*D$pOqvVmD=oObQ!1(ie@nJ$ z!w;a-D;=>WW-6RgMmN2X=7KwE6mc`Wezi;llMLFq9K^iJH`y=r@CV_ZN1j)jMBX_| z``R@X&N4tO00$*BEw(j(v?^0ymXAEvi}S^4<&Z6kEU7p6jQGh^RF~X=F6`m2zqIW7 zQEtl`DT5A~nIf+k3HlDDenPvnROQ2P6A%Ep9NK-T4_N3(x z%7t)9QE2_7y2F;M`R6O;$P_fQQ+ zAj2RD{x}qjO=v99P(*@9K~Hf92$YG8NPn4dxh#23A*ef7fM@V7``cM{Qi#I1^DZE# z&*$x-+2!LyhI8cXBba-Sv9M&6&p3)4e8V%1=qcalw^b2SUrnYLHN6;oINY`t%X3b?Lf8)QqMv1+oGw1gn!+;G5CJV#IS;y zp;TW(BtgrpN-`kFcPz55SDZNNyB;{xg^vW`h)6k6uNTEj7aED%S_DhYWzK3su?wmZ zv`^Q85fY;e-=y*Meg((vhrw&aa(r5r+^P_qMr&@x4(+63{vx?`Q9#T-oyW#L(8vbFEMvPQ6=^|I z#dm6_tQcP;EZ`kRbQSRmgJVA9CYieE396jK7H4#J4&^tF02s|ccmxCycY0NidN=C4 z)SuZ*#k)#P+nS90_S`pl0{{*v-ewS6Lr$o7|0Zr9E_N^eE!d*oDQ#d|y}!p07UH^&T0G!x))4rudDTED}VZ zmziHE3n3Jhosp4Q$V@{n%i#c&%7$9wfiw{n;^pTs`4g~B>L=+d9u=j$T zv9dN&m?uf-`iVx^-`_UV5LRYhUcX|r1<)$8@UPRd$SgU7&W@TFG<+k$vk|&Lxz|b^ zF07uz*|l0dfJ>ENG}1#9E~XAR)ke=I>Z@nW|Ak=Polm-+d)8dMTfDYjq+q33L({__ zRbyGIfNjcjQj6X2Pz2DNuA-XBwQ*liinK6A0a;nq*dUu@7>dS`C-5Zo+h`1!k$sSV z#)=?|`KIP6z3O?7(#mS?iyz9g7nGdUi9UD8Rb`tGwAxPfn2p&HwOx**m-D(i26Ue* z(tAVKFzI78t7Wo=6X2XcC!F*S6fU65<6cRZ`Z*HixCg8hE&@bub;>&P!s}v)MNA1K zkM#8jQZ<0)6w7+Un<4fK_=0A%=43b)r;UENB=ZrItjdHKm=|+&O92Ixv||5Fyv!q+ z_3H)1)5*A=r-@iXR~@Rs*|KFyb4B6juPuTXkEiQ~_0Z?2F{o%(5UQO?e}fM8xk0J^ zC^J^aQ11m|*a1Ay&yNMfGlb|&SQ^Czf>Ym3Qet_krC@b)y?~Bu>}x+?6T!u7sI)Nx+lKNgZ!M6q3e$!n-Y=EkvI7KPd9Iq0%5zq6Q-K(_x zWuA1yg`Ak`0@&<^bg@XjAG^AwJT`)E)$NV|b3%_b;TO3;Uu+($l93H^2-ZZXe*v;! za!=#AYs2Dc$?$vid_U{jbp#?Bt?p=7J`K{ke5c+S$Hg9mmR@%lo-VSSuv-OGbg%Wf;mY76gdI>|zw0{F=acIDZn!5Zfrbcx&Jm?rL3FAxo*mI%##xf$ zO4Gg*yL+Tnq0Rk4Bh*mu4ccKXy5Zl!-U~xEjsJ%0bp)Wru-s5slXKDM4JctY3uA9` zb!pdiAjJ~%iYzUfV!ea#6G(J0I${U$BQh`m62l(pVHZSW@=zzgcMg0fJZg#NqOSmHAFrYk2t zO8CK)5QJUKfhaTCA7-Glku2b6o1_GnyGP0~+O`U<UbEwJWO;hrGgbq8Cp<+mkxsd!9w!Ge?YRWJzBYb4a)73_=;87q`6*RjwITO2iVF2AV8erBn#5oVF zt_HQgEZ&`qA$#_1Dw&%IsMGTc#_GVKkKq(Jx$g8l|wa_M4(19GuA=f znBs#+!?;iZQiw2bjsr6-6>TjhA#xLl8NT!a1YA3o9DN>Q!j`*G)>&=Hy6TDU5wZ03 zh7j-ej=yDAqmtx($U0bS9ME>Mu|c9@--BJ$3T{g4DS=@!9R0(6II@e1#wb5E5}o{! zYI%xLmPc=&!@-%mzfBEhzVwP6P*dn~WsMNs=9kg@k+GtaIP;2QY{u0e5vVE@vCF~X0>D^4Iq8W|A1xR8^__0I_CX<+zzT(UKf@eBP?n@0_`)(oyM&r&4Mt(O6~2Nk9!Hik1qbeK&daxL~-% zNDRqa?a;J<)p?m;+%G{ER)P-`h$*49-<3x9mIYS3RKW)vx7(wTw$1D7F1Y|W`vemcN@S@8ntY*LQ zhl*+og~7a^M1Fw4illD1v_LLrMLphQ+jI*h$Hgx+7B|W=tKiII4O(hk#@Lo*rw&la z1Qxz3O=pEFX+3xj4iBrwpC>JQRPxyYHOtcBCD%PA`1Azl?66ngNjuS(f^4k0bW&RG zdLiup4YE0F1r(F_+dUoUc>bdR@tz7gDSo?N@d*5mhz}udq^@MC3|^}-Z7aClIL3wn-3!XLd0jOm-uj2QGFS&S3t(88<3^~un zDA9qM8)(+Bk+Q6VkJ!Zuq3ys_%wlb$GAhD~8FtVmiYk^A0ml+EUZCu?scrZyo@?n4 z9e>1lor2Rq()@dE7DlxfHa7qt?Z)Y1J#R`GhmcYpJu{Esdj~6xRLqr470`Y|t))#|krh6UH_%iNs?$F$=YU zm2v{sBLDNw-r3Zu71Ekz))2surG3fL=`&a7>-|h3Oa!+MF}|app1Fe#y=OS!$JRrH zUSu|FMn#|ujEh@sUOtE+V7oyfYxBvpZBqThzD6C?61`(D8CRw}y! zognH5gQh)?F%x4`_1#$fM>a{jFyFXKrjxon<({G?Hm78mp~{loeuFk3uM4f2v=Mk) z1>jlrY>M5MH>bn5rJYg!-20B<(0jx|i)KGQqp(r~3}Re7)Ir6PFAjg3Ni@lp1S%az zxn~sID3?nofG4xiGO4bsj!Z_?u*3A9)VK~}ahh^z>P__DOW6ey)SJJaZ$abF4NXw_ zn^jlQ_vI(3Ez|(wDcLs}*A!_>=oG)|0fN6;+4}|csZTCvX3j@VClT7|m9^S(^EGKB^+8`Vy%PWd&Iy3{oiH zk{Vji&*)n_@fpioFV0KKyo zANgIssRL&)`J2ZE27l8#Sp7NkglXrM`Sa)uX=G~J%emq$YtG%{FE~O1t!4QfUqqiL!R8o;^ukE#mkn#XtJc-U!8I3Y~&r9Ta@)p*$~kq zJmONl5SeW6Rmtp9foQuYhmp+a_b?iWB1WI54c4LH93OaU&r;z!Wrd?s~VBBZ8G(l zbMku3*Tv~$sb=upAbTr=E{G@L5>-J}W%+11eGx__GPQF6pyM8feBW8CyFysS#tF-^!tLI2QeLuI9v|gq4!%&oJvVyzQ0sR_J$dRLJ=!EYC5N1C3hcFM zC3q7<8>bZ%&fV;rAAl z*mB##BwW#xMS+%c;w<@l1Ckj^A)L+^3N8GPA9xO?`y`U2L%-7$x@IO;yED($;B`^n zuJ}t?c7CiPsLZ$bVC$9Y0#Sm#_6^%KXY7eD`9nz-^r4)S(dChv>N!x0f8|V_repB|yLkF?s0qhk zvS#E6kaR^9GaFk!!_>D3yzDUktIdU|!Y;xN;Tq=PzA)mXlimB!c})o?5cvAq zdn%8OyPz3BnNiWtjt)DNfCzvVku-x4?PBcS9EO4L8YVRUW6nu;O`Fa3R2GpU*6Xwe zsOT%F`s0h_Iq!_$1PsH~`WR=ANIqC#%M;W)WOG=y+tjN3D>(sM63-OfAq~a}xe(Ps zRlJ~dV)CPm{mZrwGXx8g_gsp3RpE|rX{_)x?}SMK6FjCvboug!;ds*2#U^^r^Nud( z+-Ew&@CM2+t_=kDTY&qpMuIhH#qDMjV6MnGJf_x`66C4=?qFt!@$@49>Or{}q44UF z|DVl*sdST7AIVN-l59Dwkftr~W=__>7xu23Wus>DYW4kIrTVSiqq?C#HK}$p)Ie>y${#Hv+hRn+$(?b{;K%(#KI}`s> zE+<^9{}u^B+)#q}AHSIc)wVUz`88p2h zqfZG^XiHe-ok^6iy1PQvyBcxet~loU(D%B@s`e8XaPV?_ZK%^P!a+v(#3<~eSYe({Y9^rKL~dgcLY88Av1NzY*`W zuFySjqJA`@n_Qze-M%zV4CTXeG^BhyAgLXMnn*p~Z75^Dh+T$xZLGbgy$ZDZGKwTt zft6que0jkVAK>ik3adJRGy}?FW}5k6L$BuxF&M`p9W!B11fTK9G^q&(dn&Ds53;ST zE%@i>nd$ThTf1})twUy$v&&#=Uf$XI@BdyBQl&}k63cZXQVhFrbky>Gx9S%S4)8Jl zo}kT}t1#o{94GmPrP+hv7&9+8PMy@rc3QhlbayzU7>epMC5tQoC&l!zjB*h+(D<^9 z!|CHr^RrocfV~9i(8y`di-_m_Ha71{@v$i4e!m>B?37LVNh@Yn;3Wx5Marpcddo=@ z%-GblUzNSb0C~Lpr#DDN&N!SbTi1#ruSO5WwS+My)Y zGlQa=Jz!k|KcQxtB0SlEvi9>$@k!^IuGU6jDp^-n z+BcEg8;;cia3{1|t!o{2P6&GBLilZDL;RW;v{I8%DEt-YL@gz~`I99!rszoR_=+{{ zHoPTNVi4L=;~95*(!|v@#UuO}mMRIa1Xa(K)}SsBLo}o)c0GPy9k#z=e82&wSp3B) zg8s=Ug4v#5>Q5Y+@v+?wXV-QoucP+sdJDKKJ*l|>la(+ZDQ3W1)k#dPQoXaF&YUo> z+q7_OsmrDtqe`<^2!pgS*r1f3q#_Nrke&K8dVMz=UeUElQ=VyUP z9pNvYp@Ec>(&`n~7n*vLtk<9RheNWbm>8b@xLGa+AxLgFc}nhh{z$1|hivK?lwzV$VC7PSokFRxYM#r}@r4chi6X=86^@rZKuxqpk@ zf%kxuL(7E~zG?Hge|-~Qtk&nIzP-J3IGl#iM0Pnflm$``F+-}gsbtHdgDajWcLwN- zfqv0Ef>06UyUgrb;jTl(aYKP(?_A(HRaT0?}=E-EA z7uL8Psg;-f_NunpRnE_OKqa70aKMU*blULk z^zVIW4x?fC5Mi>S7wh{R=c9W}Kkp!*U1LpnKoI@aH`^38)u@k(z4)|<{h&=M_rnoN z6LkBL7;4hmq7Olcb&WkI=8@N*r{_KXx2D&l=n$4J-23Zd23J7B5dHjpP3nCn{njnX z;(avJN2HXx*9i~}>hXi>w8q59PI+48R4gqJpxV$d*GM)>BXGi_#t+}~Aif1K*#>EP zvAzT&h{UiNcoI%Zl7p_aZQ?Gs(lVLwN!2oQH$aa~dK>FMW$TbP*H{-1SGR7; zFQ;Vdf*G-u3ctC2NKL08aq7W*nVcCWtKiXACW} z^MDUuvTCv9)7GeieZGk=>Vo^U@w3O6#hk;+z&#tGok0s;_?~dOmsLD~+S_LWWnl$n z4%9b+G+^a0Px-UavyE~v8o?rdrYas6=TWPW5fM-Y_7*m@(?z#-0RFbEw|Fl4gZk0^xJR%0 z5%MkZ4!;HIK<3nnc4#w7Q|B!>xr1Gae-)7l)R$B2lb8;fYX%Pzw{34U`hdU1tk^j^ z;$XP*l>tQXS3;>Z!HcHGiMXE7%6C=-dqV|0edyMxWNi8!Sa1NqW$Nd1Zh4d*{OQK0 zyEQt;CBF>68|41-hQeX`0OJwHzEx(aiU z6{*~1SqhnA`5oB4abDAUDn0j$KKk1c?ZMA>>?G#fH`DMELOUF$;lN<&4tissdXn^d zjQu;L(Hk{WhA7~4xb6k0hoTvKP^0@9@5xXlXW8;`A5V;%?gFK)`CtNRT`4OsESt>n zuVtM|TK`%lFZ3?D)`CDT{zYb~zbyqDPC(b(N*d(VVmFhoCx7utK;Z*7%B;+2@;2Ba z7+iKig{3p1e-$NcH{pSVJ>fYTP9t$6xu&lYScD5g89bmALBbdQ46Pto;u~QsloGYO zMu14}Cd`8M!#A%4`^;8~%weze^$CZ*fp%Nd=s2!x$qUdo&W1|*IEYI@EwdQg)+0>SW31id7hdxHND+&xWZq2|a0 z&RF?wyd}W+{Q%tiPB=c+o0dil^FX3cW9$e5oFo*8iu2X zNrQt87ud~;E_Sn!%j8WCq!xRF6eC zdMR}PP0Mh_b^w{COD~TvzQmHCVyT8iLE25H4pKcEvStb3(`3w18S>$h3etU~%WPZ> zqNKU*Pb&6Y6h|n?1rfr@jXL=9In^e>aL$z|HuvWVJ(;8Vmc+sC)hg8)Bfh&8n-LN{ zxdeE+N4)I0?psi+?ePjN-RgMnAY~_;P=V4s+&O^+ApxF}{=!vr{R#YmhsqtV7@EK- zUS>S|6!p#+y@#ganK(FE!_y$0Dnoo~&{jAvyGoF7BT4Zv)8vqLn`T+?b9p)o2K zqD@|-sIz8UyglwJ1X1VWvdmlb=j~qOCI@KWIxWcIxxX&q8Ho@$9w?}DgQ+nBxb?U5 zxwMJjwG~5>FTf4en%)x8k#-NIB&uNojj3ca=pVvoi1dmK&z7yRHBocw7#vslF5>t~ zAydaS%P6U5yimmUC@&!UUpqhI@CM}AdIxNa!zkD5bBaYKbto4KX-WV1V!9F?gaD|C z#H0M!GM<3FQY?!~YMWSxVc2?eyidpep$$N zOh0^o;WU!e`h*yRi*MLc0rQ~7;o2EmfIv0B2vW&?w% zWOcn&+mExQ&dH6^D zThm#+Z|%BEcQ+t*i-Xcr5}pCJ0w~s33{&?BjV|BkHM6378b$>!7bRgzNYmSn4oQMk zO&L7J{izQ3+IN=d>HGI>pz;`L^NddE^1aF|*0&$lW+*sN6RA8)RKX98=mbz-Mw}qe z0KJHCgb`!^{@`1@w&7ScGvEs?0r_TK!~T1^RCx#%rHJcXw?488;7VeqeCL?EYCBS( z+5(AO>Wm`M(1K;>g=9CRqm&BpN(U?Fg1=I_X#zkZj5Usf(SDHQ7$IHTH zns+F7P=Ogyd*dXD^vA$@$qg`X`N!EKt3Xcj*5q>T^iD0I94oWik4~fKH{kTP_gx>v zzGFzL#AG_T$WLF``drlA1m4Xz(GUg70^x%hy6+K6As-c&if>@RJ5mZAAGRgYbS0AI zJ=EnF1ZYI^l301le&I0hMtR>pz9FXR9Lw2I0NsMpPhImQZhoro-VGp%C1-tLCdxs{IIR#@zt}bL}jei`{TVSYD{aS7uq#9~<7O40=#LA3{YOtlZfS z&mxt%?K5s}qZ`&>m+5RYl_JBzHGtB_I;zT_OFwM4w{DE`dWT8Ya|AO@TO0{tA3*0p zROGP5q;#yntQL~P>Ij&cauKVcy-014=&x)Of+*M7gs0(W+5Y6sWSgsG@Kozro#Uz- zfagM^?-#FXVmn|p|8m)ndhi;5II}!NFid>h=^)8Ax2FE;z2J3ZQjx7pq(a3~K3jIM zYAS-H$~h^y*HeC@$l~QmY{R{!UWiE8$Y3olf|ZqMr?j33LjjPgIJ@$W#nS6_v3Kro zvC+b4%lqMTu0VAN=-@Kx&&@yWpX2R6Fxc7IRh=*M^0{nXHc%jGurwoI1yY<3DZa$t zn4ZdhGB$Q z2k&0X_Zqx7f+D_HjPZ86JWyog5H)5|JjjIhT?Giz_;j7TlCv_|eDAEEsX|_F)LLX| zr&5fFfb}N&z)qIM_co{9z%e2Nd(Ty_jTBCDRo~PmC;<)*tUhPa-w+-()uj@Ni5f5^ z+#5XYwITFBd2ms<9I)>2;(d~Kn$}qJljR!kX7ajb@8M=SmY%}#V zgDN;EG1NXP?cinQP1rNffv(16{;jh(^b3r=7Sl^Pe&rh2*TtDNe}Bj!Bmea+Cd-W9 zUv`wNegdG|R~T~W9&kx_^m|rf#)=|7xNA1B7nA^#-*5qQJYv$Mkf|bE+!gEB^I8k* zx6icjoG?`~96lZsR;nT`;#4vOJFj&#LWG`UG&6I+9+ZWYvN53PJ_K1`n@eSwYz0s~ zMC<3T`V3@++p{Rha*REKRmw>&lI7=N=4!^_6ayk|pAtO|%CmgxI@-C?9CY>rxFZo& zv4bJfmzS?*+uXR?prLL@bwx8RpzC6%RFa6sqs`w}Qcd1KQw+F}EeJO*k_X~Uh;l$< z{C`=;r2d$PdG@ywWL2Xn4zIUPQ!O%;1j7mo9g0ka8fch|s#2O>#Md%s>;sWKVRa3H zsRD9iZlLC^`nzFqBR4{(jh8ixw-1LX5)8d6=!g>a<>cf9e6^Hw=0>CbHlyp3dI2%p zs*hIUy^y*|{kxa}4vego!p^^2ciHvfG< zn27@IH*s7bs`$a?w5y8r$)*ZJu7J5r+y|(foCyS=%$8T_9g2PUWEe+)249~bc{#xm zSjvCMru#o*SF=@;g8ne^T6C*)wcJprI`u?TyPBr4@riR|N-pJ6b=i24`^>$SM3=$) z_Qmt{DfNiqpVk;Z`X%4*3W1A3?hVjWEfK2msHJGN_4x||E z7#P!=m6$Vu#gHblu_+Ez3?T4IbmgUsmtmK~+vY$O&-EWVAGT+hJV0MO#YgchPM#=7 z9M)~g__voE6szF7BOO@i-c8AEl1ses`sq3?C*Q}el&OKgsIR{_h3{~PfzOy-s71~W zQ@%gK$sp4k0ys`oeEv{kXfe^xAOcc}3s2f;PE@ALV~OklRf${LEzBHg6SnQmO{xzQ zz@k@z>rX~2n~+EYdwo8DeIC323r#?>zY-;!!p9C~14LP^**ZTNZEZj>H3uwRVx1qtpSRQlX+})YBN1XX7-B-l)b+2>86t1XNywaDXF! zvpSZJ+0NT-oz7C_v;-xnZB-B@WArhvqCS^NW!800u@~0?-9{j2WG~juB}P+eB|Tti z-_HH{T(zhoyyFs15P%4{pW*=kQ~&^1DK?3{&QIq~ia{=U+6AnMfO%!5hAffLHk&IZ zKS&v(^iY?!F$a5sEJpYih(#FsB~Ax_hjkqoSa>}lYj%V@xp&8mRm&?2J!854jgH>2bPhG0drS(G``RebApnapz|0XS{TB4(HU=T+ub(j|_cL znaq-qgRyUp=tJdxt2*AGCdC=JqGAtNbBK}TP`(!lZ3_G$p+>(4`2=XUyhE&i)Z!S( z6w$)Tx)kW7OfX3Bs8G&TtMj-GX+l_(%ZrKoJuWpf#Waijpn7zExMFg{m zVjlluqU2I7kNRow?Dj|JZf>(4s?Z^o8`UJvo@OJ})$6h_!2`lp9~`bjtcR~3%)1;G z)hH;RVNLQkfBTXin41mZt6oumyya@`imy~I1TZ!dhf^?MX~@RUiW*=Xp{wKXfJ48Y z`M+U%vEsFkE3ZvHrnmM{eyqjplEn1apZ_x61yfDZVnsU=-In`Gh?fen$2`>*u#-uchb&pq z(*bu1BjslMSW19dKgcq=h= z+=CwYd#=N8yL+}l!(B0|mKt@Pa4!9eH1(@fYGZ!}aJ2H(d6pu7Kt*v!)=}m~$z|=G zbA8;%csJO(#VakryQ588_8Db-XZzt{9kWlng#08z4f)Jwa}b;L!BdS7wF|S^`>s}o*SAm{r8O5SQ*bRJ{ViTq8n4Cgo9E};MGALTXZd3oA*+@D((Rid) z7c?ubHBK^rtPL?JoP3X21(%Af;s=Obc0gHAOogXF>1}J4d1AGtCkhU&#LZw|(0irS=O{IGs70c&&qC z?jK`T6*Fy9o~l&=%;F0ug2nw1_Qqassl}Z->j^4pe$3+hZYuqE^`bQ{K2b6`!tM|!8x=G@mmZKAHnPoJ&&N`B z70#%XE5W^!N%q5Hey-v#)(|jLM3yvvk7F9Qw>s6TWCdH&iml9zha^#|FNX21B6>qS zY%qFn7qonevGvPAgu`g51LEl)TUHQHPP?=s62>16QLx+c_3lLu?hx?mRlutR?c8y$ zV?G+6P^$dw$su188YceQtnpgg07xO;hv3F_ao!Kg$0p=*Jvfqr9-@oLe&x)6efBzZ zH>_-xjE|54K|9)9(B%}*XT{^ZHiH9vV$`pL&6cy#~iqq8TEpWLthEcqBMGj>bi} z$=^IHDg%s)WhUqXx%3xQ0rleDYpT35(!rclO6`OeEZ9m@tbj_X!x6Q}0tv4!sKOs- zn`2j_SD3Nt^r6g<^|_)8F6(+l`_ld=l{x8r9l=ndH-jYPPE$BhFAz?DkV~YT>RPNz zl#w5XDRzw&ePnM!&4(^wxj>)`o#ZB3xMzVC9!@n zm4;<^oVIeZY22khhc(TAv3OO{guuQ~dM}t*2puHxg-SE-0+kHxykjbJwpw3k%8dK$ z*;Hlkn7l{F+geGT0jb?@_?D*3gEgj1VdmT+Q|7B?3*f;zod3cs;@~_@VgM=L7NGyD z&0zYzLDB9BRmc8}-Fb&UfM?Lp{tM=gd=-M8j>!-jz zx!+$u(P}m8o!}ou9u4t^cf$W3YF-kLb+L9>_vh9=$tyJP_w>vj2?zQpDv8+mW6shU zPV*I~d6j0V{P7nR8NS19-}f_9HzN8FDY?68 z1+GIu(J%q~#gCPLr!+Mvz?Ndkq-XXoCqvLlxxQiFi)o>iWxZ6O^^--*b)9owZCP5r()6rMIa6xIh0F?RG)n*j8Ay4c30 z@N{q~1m{RTN4>$HaKrutYajny&&9Oi%~CpMtS-NYcg@IutNm|_Ys`|6t}$5PsC627 zeem(DrrsJ6af`M=@5oZJAe&k0rs&pReE(d=TFWAFs#AQCe3qON1r#W!Cgkxw8ut4K zd``I^@cmFIh0W5=(x^KadM?Ukw@*&wVzSSGr3-{Oq&p`g8u`Ub*hZ>tT9vjrx>s-!*R?Q z7P<3xf1a4H0U$5nxx)f5&jgR-bkQua(f|~Kf^}c0AK~L&6vp(8(5nL!ojatjIwdWF z5CuzrasIxW$wC?YXy5{4ET}Pcnq!?8C*!-Rv-32Wrv40jB&J9Rcs6Q7go&VJ*vV>DDor!-sIH%nIz{8$EL@a@6e14>C}qk^|1z-g9&)$c0Ed1?w-cJRF8RQaE& zE5Y)kW8q#1&kQed^$X9y%DJSi>7oO#cg^d6B{{zfPIvAD>fbn-xb7!Q4CY3Cqjv%$ zk-`+VFUAa6jm8FH6$Y_8aTmE90vdNbI1a>=KWlazJYMHG07d1`bih-sul5$4ZRRcL zZB|CJ;Uz@C6Y!w~E4Q}0+_LX3PW+W6`iYgU_uxJS+Fx89+24-22TS`pG6B8lT9Ao!6J5X&Tlj0+mjf2ybf!u>;y!h2Ryhwm!1CaRO zu6tW?+_hH%S#Q9~jk?2lbo>3%1uLw({}QTy?`M8wMZgD@qF}HufALccY}=Qw<4NNE z&x6G`jRs1^G8k-=8?sG`v*{VkVy0Pt7=_>-u_LeCms?((kmq9Sq^SOXipqxV_8NN$ zbcCw+nGuhgh<_ct*glBS8-`pJ@F_2 zIDqc|{^>Q>ivV*1!~B7NaT6}lD9VHJ_r#OZqPp|#vdW;vhEY>$Sazrb8c}neTzYyo zPtpv#trkQE+8j;NWado}Frn$h{aPv7@`cI3L^8*H=}FIOu?1B$HIa?=KXccIoz2J) zLrFk0!=Wgq%?vo&pJI2%&R719lzxkq`w~%faSy3SvXh1B!%$^^*mT|>Cwb;N^^QC~ zWs;Fc{g`xE8U!T$e6e*e7Bk7z2Bt0^wVCoMj}&ABV;8v39Mls?i@3M|{O*V35*dHQ z&3e75zEHMXu-mM1|NPQgSSHb6-Ut>DUHS{-jf<}PgVD~0^}}YP{pnhx9pvrRCi}w! zi0jl(d%ya#+(CkWUTud0?-f~T%MqP}tqoZwPhm8b-t5X|Dm}u!nM}9Dad$TaQDMqu zW3nbtE5v%6WDAu6PUX2TDy-q472w8$-+859A+Y!b2$)=&LGiPCe$=S=zxr~$;@9TVXjiQBp{j>HzU~DfM zeEM}PrH7u*x8vA%5Vg{`*h&cx|DXYxhn`haX2}wM?Tk;G9%0W|bil7$Dx3yRB~ZI< z-tgV6-7Hm!yVwTL_ToweJ8Q^#2jQzT9i!X%lqN&@UQ9aLeL<1>wgnDEQuf;gSx%)A z#if740h;1}%`bZ(@e*d_jdPrIq%mP9GwwrlTPyf4UK74(G7ep!_m?Y?VJCdL9XDp8 zwPgNhSVa<7ZXW{8?2(uN4qoOQS%h$C2>LfA`zb~#eh%D zF7g0Y1rm@N0l+)dQmah4bKk^&{rRuV1B0$gJn|8L%j9<~aHSlpm_G8tTycFjrDsJ| zuX9oV>PNUDce%mFBTMXYvyFGQ&c=iDSy!?RHs0d{wec$W8A;VCetwsjto#srhD?^h zvyb7~rLi9Y$on?==>1i{oMj*(b&z^lLjB7pG9MZQ`@OCe&GX5!z}NyxP(W}Fe0=8@ zVv&n~=}T~&PfLpx6>ah@2htTiK6fKqQ`!AWNdW9>q5YXDc*WqxtJft{(z(58Kyw5_ z3!YBBU#Q=R^i8FSz55_f>@gH`0yzVBwew|dI(v8P?)-a$v6exV^8md|Rfk|}#Z&AV z+8X>oTZ)J_|=v?9Je!Q!cxe&&yuk54#G_cIn|9eQR- z!&!DVLigu<=-6_oXL~bF-Mf}8J?kP`fdc1kDhj#I5|bf(9dp=3G#i!I^$Y(e1*^4K z@{yj%8t<983iLz=$2f4A7zV zQY7gG8#F(Ci8nUN3~Ig#+P*z0qAr1<-R`MmL&10QD6%?9K9hQPSXuv(gR5G7!6V$NlMJ{x&7 zNbbT-XseHsqX}&%=e$?LbT%^N`oO;j)Uc?L++Hvi-Zd&i#zm$s#tCvp@vq!IVqn{W zZTrNwB9}kZ824mg+A`DPOqNC(UP0fzOcvh0PZ=|lCz|_E8U`{KVyItg*7`qQjWN?)@_stG95@l=7b4At2uz zUDwY_oWN}Ih59{Ea~2K0@lszK?4Q>)fu6IW(&Au9f_u?QtZ~ic!7VSmHyQBO_-a7{ zw(kn@fFr4_x=^825=Z9Pm7mnIRh62l!EOAlLYnLM^F_q3V~WJtEaT~BaY z@g%2lT%}woyF|N~dE{r<1#uV-Bu=WQ&5p2#YaL-(GM@u+x$VOSUEiM$o-n|$KsBb= z;0C)PYizX}Y&nhMfRN9By3#|347pt@s0(9~KvRWLZ>)yqg&B9CUj05#TfirYjj(Cq z9T}y(59*5Y|0@}`#fg3Y>U;0k_iA$X^zoPXpFDc{*!xH7{p0-Bjwdep;py3f>o5NL zU7#>*{3(v~XHMo#5GIteer=Ni!~4?*$XemTHioTRB)0S|fuPcVD0|9HM!xJzaB^p> zw`UNA6R-fLUSrGPK2&k;e2tPjLfmY-A=_G9Le} zqRM!)#lk8sn$8!0wR3@ot`-0;D$T63rSmoJCW)w$J`^Ogc`nneXMU)>@xnrED>q#l zj<>Dbum3e(8Jap?UCSvxnx8g2P56Ycl$18m= zNRLW;(!x_9>8sMvll=tad@{n6S3Ska6X;5ScZ~jH`{Ij#{?e(EF0e$OqZM?+nCrfg z0E5prOn|$Vzh7z$x#S>nneWsb5)~X~Sc655u>s%C*70ce5PmvCov83z){5<1`M><{ zZ(qOt@DZQ;M}FKE7{CSDB_Te|;|xnGalia@aotG6{WW^*>@MoDvt~W^c%2^mjy!TA zs$~?}2i$>ws}%RDvs@l1YWd$4|7aQvs&f}|4i>DX6*m|!^i4@hKqLp_5>t}Gf$11y2 zBJi@y1c)|vm)Y`!-|0BlHm74lpU<9Ctbwof3{~WR$y8;pXDhVN4F&@3ZTBns*UV}4 zcF5cC+FgtEz2|f|Uy>zkq6Pyte~eien2NC+;k%u_dN(59lksmV$hHPq>jg?bH=XSj zIJ_T#u7P@^W7SBxL2_)J#qDf;DwjcowNxx)Q3SQ1$Lu1ns6YU$4|{Q7DFvlmWE4B> z14TlAln2c=rW06;P>^g7g1Go3*B3$(VUfhU&KDD{5)9ipwY|BoQ?dw9YoOs~2u;%# z+caYW$r!J$@AEC|lTA19Ip;RcFews86iDJArXAW<))(276ywJQ^Wvn6K&3=73;}3N z!B6Iyp6Ne)ovBpG(4(gJC+ZW&2{uId>xTe*OSVr z!eEO$hdgbl#`&~-kwZ%RZjw};A5k2*(c*-{j%$vp5d#2MO|VT0GWD_m?m=XHiv*hVshhX9bU|T;I{_VIPVR}s1kMzwfT)}yUI6m!_Wr2IN-%= z;>AA5XvBYQT!J@)9PbdC6j#-SpK9E2Dvvn9S;|Rp%b1dHx?hNLMW6x2asBw*9M9ds zwwSA`c(AWaMkNje8o%*MZyo*h=l}le&;N7WB8s!0bgc{HK4f4Xg8V#UW71B4_QFy+ zvi9(=q1|=g&i>tlpYRu@mskwSlZ~;ZgEv#N1oO#$q<`)Eg7GQc&iBrhKj&sA_!oYF z(?eo~QC8sQh%?d+(we@IWBXFcQ}^fdNb?o>5{1b?4{8lM`XQPqV>EzfIH(s)hB>HC z+(((S>};OW^(H!nqhnXr1EeW`N18PE+A%IS5V07oyx#^c2w@4>UD&)#%yVW7mv>pP zf>9u}!X6TSNtUwXEL*o1>n^(+nyQ#)UJE_JSUOK4G?paSz;zWV8X{B8;wP8iD)a^m z-^l3%ftJKm9FrXfKqr5Sr%nYv96z+o=4o=FL-a0$q2>&je5NBek*S{4j2Imgr{3!cPG`q+j<>guI`X9Fql{%Y=)dfq9YE3k8n^SxNv?}k z*^Wt8 zPEsyL+@e4_*)0g}`O3@S)e5j?0DCYb5oVYrVGgS~(XsvW8xO~M9Zn>S+{iPPohPBp zlf%eCtS+5`!niyNR<8cHZv4*mNV`NRYaz(4cfK0OfY)CV27m^CD7871>PN2uR75Q( zurv-aNM_uRrqVm9e4e+j=)Swsjpkw|fR25RXo3++r8R(xFH=qL!Leg*!Q{EvQ`mIO z(XDg#*nwOq@d%ukyEHJfc|BjtW?5Ge8NMv+7G;?Zn_YCOaLUZKag^Dqa2P7WF++wy z)=<@-QC(@0XI5{2P*p@MLnsdlk0n=e`euajG)g zxWXLO5_#od+lD7anl8L^@ReJ>tz80+>-(m1buY0Zs(FwhJuA zPxgf&1~hhm6gmSIiNmeA5d8*$NdO3T-1?$E@zKCr`* zWNX8J8KvQ0_8bch%sDwQX!0BPVfKE@4W=^TJ@@R$dwuA_(f*vr?pSlr?4GhMY2V#( ztzONn{)ED9=W6ruUH=~d0RR8&U3+iaMz;SdME|&Oyo#Im!$AVLiL>>+ZfeBoc7fZA zf+9!u)D)@Z!-`rI$k!;a`{nXU?s?1%hY}@!%c3k%B=6!jwk1C1%$f5(zq9+Ay25yb zTBPF1+*-SY*D`Bb#2bc*1tP9rQ)CDG9C?t8iM_%Du4R-ZI4(|KqD3ZFdeG_BxITF5 zYEYX~Vz5@BYaQCy)sg~t9V^m;WGU^Z6dz~`mMV5+zDKzMoG^4Pf=Odyfj2t^bdV%} z7)cjk8p6TB^7Oj!$U0OFV>i`iNg&nYNrmNTA@x(uwyClqOC~%8D>Dt7K(umHEJ2l^ z@L^7@Z*qaUWz=%Z5r4s;bR*(%KaMiEG1hIJ$}3^2+vM(Mj*IU=&`yzLv;me#QoNn zTdlf~B|0^mYWzekWf5BoU0TKID;rxo7^a`zyDsms?urm!1R@pNNyZkQ-K=D+u9KU} zDlzPMdy*(0X>?G*(=3BKR#kIb7va1;s|#^%g{egWf7PXEU<4m|5B5fPCaC^@*&bJ{ zZ+)3Jimw$c2}0Lum729FO7q=Fx^o5;R&?HJhIML&_K5!vh|drNlb)KAh5>`Ei;Nq~ z&z2RC!=dm|kx_)4>nNukHo~N|pd>9|OB}7nIF@6XTvC0rsW{+j0~3m;Imd{dK@CA* zRp{0-hK)fS1`Usaz&L#o0>`9($)WQeV>@{pCO%9(WcEdIFdfE(#9$yjiRpx)8-^l2 zaLx&=qnBfAnio?LH+Fu&e2Kl4!n>Qd?kWGB%fAaH-+jRibLx&%x1A(|EI#7V{?;r0mlPg08&uS@Fr8NoU5 z;o~Ex+M7wthdx6hYp9s5ue-zzt28VxrXI|IFwr??v-Ksemzi^9nGG) z`Ql?*>yL0lX9CW;2b36Ys{MbJZ0Q}g${^+E-dLWP^OWZlKB39 z6yFacFh|1+!w|e5HKS@pn07_hf~9Q?Y%JvgmygVDi5XVm z@Nni6I4#L7O$E`q^_8y6&}P>G$4kJ>=&bk9Y9V}+z{eeIWWQ@b;$x4kW7HnX;UuQUccD=6diJB;wpzChE${Bzo9 z+vBRdlL;dSSfiATjY96pOe>wnYp)ARUez|6d}TxKCE^wp>GS#vy=Oe}J{lDB1%%3y z#iJ-upCK*_7kR0geuaCT!m*~`-9Yt#fJ_{^AxJ#JNpUrQN(x#^0#WHh2B)Kpu8(Fr znH-ArL*ZSzp-hH!OYc$&mB*)pi|E^lGXjs3=5H~!JqTN#^*WRnm$)o1$b8}SV>k3J z35EMwy%;SXlwmC379P+1;)wl+AJ39$bC!m4vAn=!LV<-|ks38-f1;ro&6g;#o1_YT zO<<=2;jguST>2y3jr85P=r26IS#p1lAkf;t@FgjPDDZnu=_jEWw+i5(ghfGEq#ui{ zGM|j=)T)Iqeu&bENX@Jc;j8b?Q$N)!rf9{*>=EXQbCI@ntqAn4pc6^X*C#OsC#_0A zQjL>Lz>@)u+@Dwu-n0+0r>p^wQl<52F+j%p?`$}KLMXr0NpUYPb|57Ys<|6YVcR4l zNLR$Y!zzUP9CpD){sy!|4j8&VPmZk3imUSW$A*NKvQZvfs=;iZZhYs8y#VXd%yUUg zrpGcn^JdD3-AV*y<_#KPN^fG9=Y?h#h=w_8bDsCKv85Pq0oh=UMsWYz{J+xtw~}T1 z_L4?_eHXm*@+i>O1$5Q0&vXz%_ubb6uw8LW70Y1hs8o!FfJ4~aR0t{@Ghr$(XNSJH zbgw0YtEwPX!l1x9Jd~F+pp~6RtPl&>eB_3t7;Df9dRCEt@?c@{q^NFQmGf2<#Pm{L zCfl>>?-UwN9a7;{3k;0Ov;C!1wchk32%WiqZVpn9tuSng{e1NC!^wxgFW9;1D-NBv zm@d@kfZJj*Uzm#oGyWB`;30;9Q|V;^m>LTA8&l^pfL*1H8sv67sRz75uzUu{l zQNJ%@3vs#d>ggp8+DuK*9G;6qjj_Bs0)G^l=Lm~ENPo(U(B+~Cl|<-As=v-WQkUAO zSJCCVpb@OsQbfm>0BYdmo;JA|Gm*$~?2fdNJrjT2FAd@D13^vO#o^)kWSF}Bqq7tG zu@Cp$PbR}Iz8j}M-$dKn5($X>P9$D`Jy*Uk;ycwaP@f>uI-|YySyjc**iT^~uf%jB z&2jtDwP3A)6Ok?JEzFaUG2)KmkPzvz^hG$e!b~UCXp1dfzLT)X*gD1FJ*rU5&!P%`un#p7ywg;!19nKwNOa?|rDpK`oR9Xh5Y0@g)WNzvI6L=V-PV7p84)@@ zxjjC>J_^_QEaCjI+bm(N*Gz6Y2Cs6Dbj9n}&cg?fo-}ch`rmS4P~7NPq|R$nvS(n= z@466JK#Vtfjn3bA=U+885Eo&BsZ2&zR^!1{5*5Lf-O$NG zgTiJ4O$kD_k5$AeN7D06khm5@Fm4xtSkrLu9X%{l0WA!ZVND?tkN0=$yO}$EtM4Wu zlLvo-gMWoQ9!(gf7^%x$pv7Pt6C%%KO(?32ci1*v$`_im{(^#p8}D+0Da9+1kSK_1 z0)9{_b`IPfUNZz)D&hgwy8CciW7%g+opW(Rh9G~!`itv69=~^f{U`>HAHRI`;?c9G zPn=(3=az%>I8;0lg@8QaO&et#h&aJDjU;fi;Zt#D3 zCL+d!I6OT6^y^O_{^!GwKY!>s-+t@7i^8v8{?a4hz^?>zpglwxx`;39e*i5>)Hscz zD@ta^?pOyQP=&UKB2=VGwD=GqM9>A*I^eKs@T{hr7Ft3HeMY=X;a!3En6!u=u>Shq zE2P4Sf@R2qN_;?)#t`ETm`kKM3YCAGY*Y4}+&Fw4LxZ!%o5({<8yJjy#wP@9u%>>Cu}WsG}=4ZDd*Pr^$PON|bhG@yT9*QRf= zuXbPc)T%#f6xe!9~KLu2zE+Wr5UOX5M-l{hpZyI0Dj#9_&Y7YJB@#M_hIKD1yG%RCx~4C6dvW4Pu;%LiC?MfT{cZ2dJ)3b zdU*XlY+*LkI^lMo_gSrc2khQbDss*;G^_?UHcb}YUzJXv;yVZq@cqG zG7#K&Oii{JOiBz)F&FXRt+01#t}>XGY6yc+k?mcF zr`ZeUT1&#@!R^*s)+ul@IXu{ zAxS|HOkqBPx(*OIN=+*(<{Xz%WzmTlcwmd`Jg(hC0B$lrSH}|s`CU);exvL{wAGyp zk>bC%KF76=IL$e$u4Av9ly)oz0S%`eUkaMHO6*=RmYG|0^p0=fP&P#UjYno2`!Zc$ z>|vJ`P91^}-wS^ihpMXkh1pO!*THq5zw*$0cH*0dsb`rBwn$*mxK~3rz5YN>v}LU#=C) zseK!T=+WjG2NngM@;kK1>?zMg4X#KCYY?O$jm1tc!KwENT8nikMGtV=P&gHMxTS#P z8R<3J!8*#iRRgZOp(>Wr94RA<16?Z`P~q&7C#_}IBgGuQ5|`b zde$kH=GKU=OKG-c-3N8A#4`V<8EN|~UQVnoo9}Eb}=bHkpo-WW!SH?Qm~2IZH- zD>c}0V#^5nRDsOUgIZNuGozI;`9Y#$!^+q^w^=&4GySHR49h}MgPbE&`KIUPh&e9!G=`>7#9f~#Vn3R zm#DgS%`d@uDLzddz%)RVrOp`h z;WQ@&CoRxa8GD-vfGQf*;=nG}Ubj56Jp#a|u{V7jDaKV*BcBXLnjXM|!FE#RTCgRd2!(^Icb~&3?3xe9mL?wr>-B@Bt z6AmzT_AgAEo$&vmKH0DZSoR97umsCCgy(CzsA7Q@EwU9qiWDUNwNQNkc?~n@Co_Na zM3c(dqXE+{R~={=&^p)`#R`nW!(l}P$a`FthGPp2+G)r$S+KFdjx2`Jm?@R;R|Zjx zMU391416o>`ZL-t#@?oH@iZkv<+>2jJ{Sw$X`zW!!5+X8eJ>hGHj8+Mq(w@ec!Ph| zoh;0=Ty@UYLDc_^iV5*nsO#Y^rD=aK<-65|*p+LBW*QQ(FrVVwroW*;zpr2ZYR=+o zFelw8jVkUQ7J3;WOWn(4iWYftSZ`04bt8f%z6Y?DheD=icr#rMqq1q)hzv{&{;%d$H!19iB2LmO@FdQpka_yIT( z6Rmfpj%z{(^&0TiXpnwC8G-KmmOn30r~#&yT2Gag%(bwJefM_Zg>82=g%D~UX;S7N z<&G=ZjXd_l7hJhQ0cp6fF=T&`%AlO866%=L-^JsOC z5Ec%C#a)}Q3Ue3+b)!*TpgfQ@D(HX$kOwE3BU3XlorYBaf0$-f6~=!)qY%OUvLMCO zDU*l+QX0sxZ%$#=pB+CEY%3($XcWb1zHH{&JigBZqyphyF^hm(IgeK#RgdAxrjVckJd__LFD{H>os7)Im#BfQ=BM<3pu9;@^cJtQxnYttF+ z4Cy;$Xq<}Ti-9A;Y^ZS@umPSiW>#HaKl8#jzW+FQ~4X8z8vSn&aHlBtuWHHe_S1RFzhJVbz3y znR|5d&z^z}b`!!qomgJ1BAzLlhO6CcR|Z^jQY4tE%TO5vRZp#}w8#{X;#V9~!HxzO zM_z56tVJciM)H5+LJ4=7S&!mRs;pl%AA|efDz~A;wMXh>VMKdHvpQl_I;uEj>`rQM zFs$9FdMe`FN4Jt}dZUz2IdJP6p^gW?SA~BaxfXF^0Lco);yf$yV5Q0yyrwTM z-D`B3uUaAwmw9j1B33sGdfb_@^+oEVQNh4bv15NKqcz32bEXS!f58>;%yPI~isNp5IRv9y zVLg(1qC83rppiO?lC&P4%Pp<%3S+u=O{RA)Z;f1D+kJIw>%Y$R5tgKd&Uy94fX6cx z7)%Fh+I$4Hu`{kkU*#INo(fzLlCTE3p^9NeQ`mwL7CVSIAAz(kjk0T8`B)q5HYk6q z?%Qe3Oj2_Fa2P3%&e%&*|M2iycxe>>SD-7xm6mY!|LY=s#ST6E#ZQ_wy!7uPRrAM_ zl+_te6OjczXwKFvNb(^J8BqHZ0}&!Z6rU)4pV`>r?eo-CWmo`9!m0T@jWVC>2LRei({lTQxR| zwvc7mH5)cAtF`S@V$3}Z&4RQkkImjK2(@{1vr=Mj=9ta{4E3VjOlC7;&wGDY?WwIS zMz;sxUva?fg0R<^SRCV511~`Cq1~b&Jo=Hs{-wGIqMhzDVHpZeDNSwTkBHU`ccerw z=W1$$+Q!^aL9^^7LO6+FaxQV7^&jPr$L}2+PXGAXOZeZjm(DM-^ULMNPA{(b$-$#1 ztFOI6t1uz}l<_Bq22kbS>lA-=r>NJXsQpRE67E+j%>T4;NR%dP>bB}%?Z|^;0j@pD zvHQtLcyb^;NBW>H;U`dNjHW^uC`!kEvOrO+FKVBK@T62t#Ehd4m%oP_iqByG1cEws zM#=%Q3ipx)Se*H7zkd0v2E)Ea`eas6dTWU9Wt#12$oAfN{N5FX%zWb`X%68`HRltb6K8Y zCs{kmx|U;-h1dxxC~n4X{K>mcw05F(7164+^wMTGPPaOFM`kY?%M%cs@E;JeI!&OG zZd}dA+zA&@*K+8%0e*itG3ZiUH;k6|aKg|fBWu`}=u;p=wGpZN}J%+E;^xQ<^`5vD*}k;&T~#`4>kb<_K*b zAE422{2F#M7h->=^XRxylq8a78`I1L{aVx=r{^kSO{6b?^P&mCtrgx5%ZjJoN_9|6 zgz6oQM2G{D>7BN2Wv{DjRGOiaJbrWQ3tK{JEx9x|7`v0C$h5QZt`lM&aJ0k)cvi6S ziub4sp1*ZJz`+DM`GDRTbz1sVPYXZsn|5)mPKn<|97}(9JzyB?Z2mC&PL+46eAy7z z)`fhLwJXSY3V@lGA6v3_Vz?8->uX=w@4!RXE__!6^djGOU&L|yAfp-!Cwe^x8T9ig`Yo~lfjtFb2p$<-f%XnfM_m| z?l%EuPGe)ToztuN9&B5XuF3;#8*kp`Ig@o@xb`{_ z*AB!rPt9$8#T8Lp}|2twDFp&L(*{h4W}B|vn~6vcKLh>kGlW)@!p z35S19Rt^D2-o`)%g2Cbxc7pl~R?6_b;11(hV%IIGnAxYu5KJ2hcOS&j(2mHfir8}$ z-ux~-M7RZUJwzybt+#+C>7?{=D9Q&>7Oqi_*J%HywQjv*z%?S=Osp8$MZ5>DRbfmI zh5mk&rTDit6?hOKYJ@yCR}kOE)B|JJm&t#XGH;_;g3W?GP?AC=0=qiM*C%7RQ7gv| zFxb&lgxY!1fOX?2zCr=%%b4KoCYl7oLB+X!GN{A1`r;Y+9fMfDfKA4ZWu>4bD5o)M z5pb*{%>k&t!0!<>0V1Z!>D+?{YK44n&^bOfKXU=6!j4aI+=hKyg~e`B9a&FjE9ZYx zA9NIFJ7t`6DDFg31#V~81kjOE-AFpUYu?1z70D&dvLSD`FSu*cux;^No4!W1y=WcS zR!E_RQlUfBgnGb^8obCLiVl*fN^A@dZrP^xXytu4t8k9} znPUvUi#RnyA8@~OUTXwp)ak%N3j2R>XfVR5x^j zh`1OVT|kGaKwb^zw5(&1IvhDGx7Eq+*Fak7^b)?(cVvxi;FatbXj!DciJ2&w>XCwj zEC8!z97p6|A+Pt=klbl#Xz|H|($L~d9Skqqgkl6QfqnMGkNw}u_U{gZ+0%cI-_f9U zX{7UcG307}@?!2MFXw&oM4z^uj+@RO;4#ezDwe9?Xy5+rZy*>(BIdtp5Wp$mp`QK& zxSkmb47707pXAWJP(e}h5l>RI5w4{#tSGG)4Tm65hXTw%pC7|nzgQHm4H0}m@*^di zAKHXWb4%;%mw#V?c8;a@^~-;M99|jtsMqqsML_&4VQ8-!_)r%j1(Kh+=xkSXrRuPj z^F_jJS(8ig0PH8+5$izm884Txzwj&Juc;vi+_1VQ55xi2)6@6)8_bQA9>!UFz=zD4 z6yebK(vc7w@Th~DuTgxyMuf82U4TuZWZZEaNAW2#;#QP+{`j3$;9^PsDi#TL7DpGcJKRQZ#E#Hw39kD=`6nF_ zD-iL$@%lP4Rv_b#St{bwC>nKtbgV?jj)b>SBj+iY^O$X{Vh=ZyW}RuhDJCQX8skN= zhd*xEYtA3sEPuIu5KkPVPLZ3`+)`b*q=LRYyQUii*2%GT$uT|Rd10vgj)m9G=j`T) zuksPkd1h)K2R$=Z103w6ozjjH7e)D&+$8-9MTBE4E5oKb!I+-g&m5J1#X07_)Xf26 zHLz@Eu7pi2R2lVJxAv-6U${o`t?%AeU!&e!nL0yvqIb4lt2B;%g=N+vqg(DcR^Gg% zORjd-*d2J4WFp*DQE|7XnR#^6OtZGxT6Qf-!J4|s)cQ14gHjhEuHFN_8x7L$CnGQv zzFj~CuG(5%)YqXw4Kb#FmRUiC`sHfkvod}lnz6nZIChE};kq*1ygznnRkyi*zJ1{= z05ZGrYDGV9W4VN;5$-I=68!&;fU6O35XEWiZZ56bO!7T{-VyLdgIUq)<%3O?lk6U; z7W3N62fzAa2&y&^{;x^u_QAIA_-<*wd)o2cN_>Zn5W_xB0_*61w+j7+@-uc;cf?zT zc$cF=N4nKW_nUj|ZjE+ZiL=y)_8C_ipK8CjO}k*L;6JA$1e>b=ss$y+T^Rn(!|*2b zbRklG+{%vc-NxYclbaQSpEJ#(MHu>4U|t2?4Zlsr?K0rJbEvdBU*M} z1kw23G=c|+E_lQ1Iw89*I{dezf!TkAAJO;~W~RX{h4s-?3sf4QpbNmAc z-o1Ob^)+{9dGB-XrpuS2A5>ZxJA`t|vU-22!AKSldmCA38!X zA?y56P}W3Rr-n!V;F_^J$Pw(kwsaKF-`M3q=91%qOkz2Lo-0+#U=f$$VVuu zzQ_lEF-3su8nuH6tfPP6Kq@kqu@&nKr}&mCvb)Uz^K*ALUS3Z1 z_BCO-4l@}Fx2>CHQ(RubI#csoRVp_Y17T(co3Yo4Nghm1y&Xk~v=ax4LS7WZ14dEE z(8+1ZH_g4B0NBCVBl`pmJ{o8EyNIKE>KQtJgXqv=oohFiI6*O)4%d5^!n-mUEcD8j z;v&dq>jHQUJ-HU=PJ`0I@3l%RmGBcm5umJOp5G20QvU2tX4YS3+NCfy_>uDU;D(t{ z9-b{f8WXxxCr68=V-O~Ef;7CuM=`kdzSrA}paP)4O|h~i;Zbs4gm5mOb2EPw$&eI( z$DTO2IOsXgp4{)t)HyqQdrxJdBN{d4DK!1q@=V;(D2_%z&NR=`MsaIJ^V0S${FXFQ z#4N@kYN%bN0fKn68N9ozET?HRi2gidnk6-e9WG0Z#doO^dbBM*H$kJ5A(xENE5qrT zheW>OV6A^;5^f2ysGnU-SM>EUpiYH<6xy;KW(ZCrxGGQumT0JE7SiNzxM+YVq!`(p z+RI*XCkud4uo5vGr4z;NJiG?JoQ<@J4XY&6eSmXnENk2t(EUj@CEOU1N^w(}oa8&- zFCUtFhlcL-<2ze-w-wR$#clP$dxc1?lAXDD#Ad}>K!MTtziKPxd0kX4K;LmZ0o6il4Sij%2M#8Tg53>_U=Tb>ajGxofP=aO{Di7{BU(lBBPyD zz%e4NUq8yo_AZ~WOisYwYda0v$_H)`XhSk_{%mbr1*_Mb^2#i7h;&&NR(hP_A2u9z zG0$yW$b~3B*SCQq+Me)>6@lKm>uocCg)l>;`T=TG%STJ9QiSGzCQ0OBHLK6XvMT1! zoO__lxKtNIA_9cx;W_|aPtC8e_(mnLbakO1x!F|+Scjq$%SW!T6f7phMoDasfqjj5N5BIh3T4jBUy}m`zX-xV zy2?h*z?A{@9bt8UWh$u9vPe(03wYw-gw+6kv1$q|Ss7<>>n7R%0{{U3|Lk4sZrez* zeib6W>_G7(j&t)M0X(_P1Sg4&*fX=h?!stMEt?yPU@|WjevT@_}8TP%wpWU@+ z*Rf^y4D(m;#JFA(9xtZ`dMAu(3`XuAMb$Ou>(R9LCRX$&wg8VRH)}`9)Dd6FzILJ7 zE=JyPO(;(?wGOHo7dc_>H6l)Xc@$rDNXzEBq3#R;ODVph0^qR%ni`Hujs%z0YAqLCqpmDSTvzVz%oaoxJOI~iLX`Yx78Ye zl!vO_(ZF$_F1%RzOhO8HN$Rzm<;I*P6%A+3HA6Um<&kW&VE&8_$?Nx6l7QZlF%h`= zM5!cj0K;1W4l&s3>Sn4fL#U$3;!kE>7g@(2H6%NHJeKaahAi5b3tHiUJX3L|!3g&H zv;5YH{1yRh%f?K><+@kc*3BCyU*CUlF2C~eljn~QU%WUvdg}ZwcK&v~HFE@)d~|U5 z;^4`D-Iss&X(Zi6g`4RRNAvxYdZj##ymGNS;qr6NV)wexCGo%i{8yBka6#+&z7kt2 zASG+pB9h{)EZCcEC&y}P1_uVlLQrv2^>m9X$Gs#E7iL}ASwD7XgK5>Viz3EJ9>VxT zyEW#ksVR730f^oFhHMyEP(zX}hMWGsHFJ!scKXq?ynlZCv-%Q_GIR z#T0I+A(M*TLLbLY5SAD26d*w8yVP(j-@Wp~p?*8d1`0a#v~7$(g0_3F&^xA&=G%mX zPT5<9GghGieu$!@N8})JteT0GZ)pv|(KexxNUX91Es2_JE?X*d$+w>1oz)C9dIDR2 z1b<b)4q@nu`A{A>glt8Mp7P6p5J}(D_ItuIycK=kl$+Q{6D(7boe%lUuuw8)-tpk3 zaf}rT8QEx@^SKSj&f$y4&tE=ydDz6Ub9iv~rQe;U_Ya)*z@N&-f?3w9;<}%I>D@5b zn#T87Ol2im@k;ZwA$3xNI2v=>mc8Bp0&EbjwcnjGxn?W`;O5WasDas8ow5v6FU5Jn z+;2c`We-e%@R=oWdpwLQZvp=l`0q=YOnKrVCb5JJUd<0QzJM@=-(NnbkU#wU==sq- zS|dwULWM@DYjd1Lkw3*Cruz+liHv1}s;}MKii$I(Y%)i>R@7(eoT)yfw!9S0zBQIZ z6_k#Zk%gltubwi z!3lH~Q1P%DnSp<+(Q8*cz{+{qj9C;mb+N2aaDC2#G{W+T%)ZBl*sb(`y_&RMaN@1V z#4HIXYD72u7?m#XxSIKya>8;0vz%}Si!a!i4{&s>i37RAtIbMiz`pmrI-RwaIpekp z3=Ulg1Al7HXvAiQcnUh=Hufmh2zy#1ZD`p}ETzfU?GDP2i`JwejqK;|yEn)UE~TL>>74jju0x zl704Zlx?Y^RQ81i*$5o7Zxa@OBRDF!*c-imaCC?_z#6634=yi4_u1jAXHQ-{f2Dr5 z+N^j>*48ormn}5UMmybNtoP$RfqSXl_-Pep#HIZbj;0p6NP(JvLzk7PO4B^%YUmj@ z6!;o^$qQ6FnXkm1Dn4isJj)<$2{lhz2$LIF@(*Y3OjGYuIgw*ML`NvTj9gV zF!igK4P{3kH{rwVn;=UuPk;-s`Og|As|%c!NhH-{WxbjbZbH>z8Irl~dAXX3+I=(j zZg|>7IO#=b%Epd=o4CRnTu~LrbrywYE{(5vLI5PqOeD{4y|cziHMv_~p=u5!Cso+l zG|o(|0VY?N@AHu!RK9(&D&D`Bt@*N5lP3+nw1pv;H2yVhmMxqJkO|SkE^NH}z#pj2LtMmkhxovLs(r-k~yBfNy`iD3zguXv(=RUmzwPZS;LqMK3HMYz*l zft{<1+>lx@NhlN1;2r^A&Zuad;nhl;VR7`eJm0DyZdyh`aK_Eq!F{>E8Y$EHi))Dt33CpbZ@U-Q^K^mM%lE8wuB{g1IMWAF0bO4G27_9LLXm zA`y<0-=-0NsGgq|Y=aK_QzB8TG0Yd{ib{AR3An?u;1VLd$-v9l)5FM&$GcYZ0mFzB zR4^r;FfB#2slgV}!Ynx4%I8?^*jA_X?lP-77p%=G zN}quYsLKNX(U(sf(`~Kd#`#v27i95gt*FV!k_cyi9fM6?!cWGY470gMIQWFv8~^C2 z4PfBm*&;N>4XPnJx`QqgjR>=faJ>1r@w4ffEoP?gwR5ls0LTCUPGt0X`*9$3<30dn zzmhbAtL3hLFBVAw6u0OXbydEofIbDE;v#0z<(IQ9%a?KIUcl@Zu!V8a#t+;2Jyx>b zLq-LEirB#gZJ~?3FlR3_+6nM5*d3=*_fTU(>|T2bxSuJ`@)&ZL0k4}1NLHH}_;HT# zen`Z$vYt|~m>McM2}4IrFj|U5$vPB3l>?Cvt3sHutRXQ#$N^v0xd_Bq4qTp<8c@i! zqPoQw;Q)gs!3-Uc1b7dME9tp4)TxwQv%r{t1>~rFvrIH&@ig8`eq%uN5_&!QX?P$~ zHC3m4+p(A6Bpnq5#vn)@15v9MGn6A5FbB8D=Z}Wdqy#gMK^I;6E%Hq~p+8jhcr0Vj zF3t8)WeOP{b@?fg$nXQ_9@3be6d2$-@PO)Bfd|!)!nGota3p1drG!8cgv6GkgY=xhWF7TcU73#OU>Bz53h?D{>~16XCJVR*A34UtJP^!*yss-*1}t-%7S&FV6Qa&dUBo7v@j&Wzetd znuTNs&`E{Xsne3E!4fT5*QHn>!7DC_d~!mlshTF8mziagpc-F0N>iPnlLelGpC|qL6k~S)7*^Dkc3}i)(H<|DeGAXqMBjwB>;q1tB=fqEVj04bcvi1OfBaSl2 zW)~BjjNvJJ9$23T*qBBaEntBzS(oNsP?`zrGl28Ig4HH)biwv5z4ivZ*1~j*)ehu{ zj_^*G03AP|TsE$tkmxlOQf3$F?G(BB$@HQe^Mfv#(;m+j`f36Yr)0n|SU$6n*A#gCEzA-hQbqnHSfpyTqPESN*iI zM1RK=<4A6V(F!9czB1z-S*$)&%8x%VVI%I`c+BjoQPXj{#pA2+pDrJ(GkRzN^R4y( zlMrYe#@MN{lCFQVSNoQwisgsIDyu2jrq#oWOPq74(;%!F2^;8|fkLT&gUDOXNa(WS zY-2EV<@{(}RZx)41B^*{L6j!>WUgiu*Q!jikSA(wgKqq@die|Ma%(NWA?wPHeJ{3! z=F-JPRaFm3O^2yv_0sQCLNs#>5rNHUl#@og4*6P59(l+fAM1x!7B-&qZ`I1~k8!Aw z4C7HV0`+?^g4GQ}AfM`g6ij9e>X{+irT)MJ-N#*h{*6K|6?}GNE<1G_wdA+S@7*fm zSd}Q~gEnb`izJLbOEY}V{FqrIyfyjJTDry(XMEL-Ug)UTRJ!9uF2Nkv9y`LlWcEwg zb)QlUdYt+c%9?~Xm>)XT?Op>c;ob?FTU!Nue-3CTl)Jfes?h#_`1oU9J%4icvGDr% z_$-Mr!((0}p~P0z)_kdJq-PuR zsabHs+-q!PncFmIjtrK~KWQ-MiDP>J4QjR|7iruhTT3kErv|dMiD4^$w(=`S)nM39 z7kuSe@h-9^{_ydCk&^04g;BuIt^y0LK!z?ogYn7H+)th@c!)JD`z-)@6A^awSXeG$ z7GmM9=w}e4j_|mmZoDWCuVOZFXuF&})XV%kchiJ=CCl}JbUmK;`)ZOh<%MtAl<@dD z#wgS{7(5jUtbq17=G5>GCd8{in5@Z==R??jv9JqdpaHA}k4P3A!4_91J zm6{as-AYzjjt64Rp(uBu z#;I5dV$yAHchQ+tJdRNynPjK&PWCe=9U#lS+`IouayQ2cRxIS7QqQxom)`=KU!V56F zcBhGPtt$mOTQf6Qt56Z&)0X_RkvC~{;+-=8A;CKQ4EDV4|;7ESSd^8E4B zr!Swqc-jbF*Ymrtz0MF%vdo9v53!CQG|d!$JsSy;En)=aEbZK&*zaXc?_14T+gKH0 zPfeS-uvMG-x|Kv*?wsetL^8+xOwYq?prJp%ce`>vr8dC(W4m1piOZ(u!2LZiDr>PQ z;I%{gsyp^fMYza3M}(fOtPUa7*U`B0t=PL7#?aVjS5#BYlYzoRkZ3E8f@Py&2BtwxDj};hZ8SR^SJUaboHE|2_2w{Po*U@$Nx~J zmWJ~I@2u^4>|na;gXFh@jB0beD4ktmpt7dv(<=9FxlO`RnxUMc-S(N@Xaa>v-neZR zTN}-ec@~CbrjiEhk^-xW!R5Khl@ptPbP~e*9gD$P5CA};Zz2LWlb)^4%FYIW^f&s@ z&z2X~hkojXev}1)WqKbLOhvs%8^XMG+pLH_?lYG*vI^ZuaQC#TCBkHU;9H`n+u{DxRi)$x*$?vYuUOlvMRk8N)Yh5Z=s=tjEPD!pnx0j3F z{B;4V49n)!>BalI@8Yo)8n>poqSr4 z*~9VO5vN8LCQx~`fIQ5pq=U|QkQBSv%c_V#(1&~^21c0@WmELeNGe)mqSPf3rh78= zi;3L@g+^Z{7 z%>%x;4ID)(*KuPHDCIG96$2WK?Bi5q9Bjgw+t2`*1st^CdDaepaW}uXaUHkcDEn1# z+!LN$hnQLTM(C|BPC>9Ct*N+wZ+vjY6GF(?A2_*5uwPRw_>B0sNA6|33X{~rqevZvv+;EY2Hay{hcv&cbD5C)L6J>ck&l5 z%rcwyaNMu}$|vn#7Pvfb7fGfOhfCJQ@wL`7H15ALJ8g1*@8;}>1w4hZfxU-wqIdhw z-b^*SL&K^~+jLztUu(H!>4x=X3^tZA>|koF%qV@XantcmGod#RpnWCmpgjH4ojBB#)92Xc!1FCva^&JNwGJ;Xw}e-MC_8bB24Y>}KdXMUh5WqbSN0pt)j10$`u8 z6jPdNTYdt6J~Un*5Mp`bR9Q7ZxMD2H)Y`?m5o-!LNnUFli7JeOY5NI=Ty$*NzW(QW zjvokL zRm)_BJK0g$T*}G|q6W@_z`=|mTZg48NrjJ7#C@h1f$`_nwr9AzjU45NewZz@|2 z@(oLWg-XOlObBj4C#Na$HSA9&S4At=6w66^VFuc4S+c1IYpmP_&v!^Q2h@!s$6vx~ z$2{hN3%k9Cd%j;L3T7ijIu!h$DduQJ;6)KnR45V2hzabN5Z&mfbss6nxyUH25X*hg zk*NtMD~IUbGN}&Sa1wdGp42kp!}JPOsw1XzKVvGLbBX(46&IuFgjvOi4OL=Fo>aW` z97%9|JYl{cx;3W{kc9fFbOn+yyWsG}Vu*$~REi})iP+YmyE!dq``jjyI&5=BAd zl6S0xOl3lj?k?BjW1LO*)WKo1-N5S-(RunO|jjSXLo_*1Tq| zS0Gjn3+K_LyrDQ^Uc zbHKIXIQeZFUGqSC(QnlB^yA~@YJNpK#j+u>ub#a+YGg?4(cRZxV@T|#Lwt5>t;{k} zb-`a*aMjx;_i39rW|)*zsjwM;Q(@73P@^>~ z;J0d0=Rg@3r7xD7zlvR5?}H?s;wN45%ZrCXBEfJFLj;>%@ zj@gVF;Z-FlSa_+!X5b=Xw3oUo;ldj)OocxM7w}tv&~16yCMvam5qyt8uk0B9v$?Le zwL>(&afaff&J^$hm8Id|`1+D3*=HX|*&5UmvM)4v$blL5ZNlPj=Lw4wxY!%LesJ_0 zZ-6fD>j#$?q5JIc)w3rrp1(R$M{=b-_tt0NPAS=xlkQ8KqHpz{3ar$Pep-djXomd~ zj;3~+1aD3PM=m&jYn5<`7%^8RHL`9!j6JYenGYJAyQzYLh{-${#-L~qoR45@Ay*1n zCZJ|EaSDSM3+3ef)^4{rIs0fS4avq-MG*nP^|f+o5lgPW+;MsDxNz-U;zDrP3@c6x z2L`ErcDRRn*ZD^(5>@V_!)gdONWCyV96?C1NB>OW!3k!6QI42s4QtHcXdo3%$78{h zixA(-kv8PJKt%kf1KjgA48R?bypaJb%GFaSE@v8g#fV?BupZbr6Fv!1skVk$5Elr} zn6G4{JO66Sy4X;qJQYS7ILGP4`Iqzim;d{6`sbH{^Y--J`+@WB$X&v5UliM5m~QbNtboa=3V9NU~ca0^!(#r z9)X<ve`W7Qh$ zZMmbz#~6zg36F^eU{Lr&=62dt`1l+opZLN=x2nb1)pD%PaZ z>Q<14IhAzKs7oZpgzKt^AX3-md?W@&oiE{!=%0~Pw8liKKdaMFU#Oc9f#&aPsupWg zOVx|crtO?jd%(O|J9j0*E=G2$1F{l9+z7|Yeu}lnr&*nJ+qnRb+=Lo3PZjBTh$o+a zp_o;HW#f^kT%8+3*Xg@Pw}d0@8TsK1NCcQPG0*%y{4p*e%~dcX=K2T=Z+Pspi13ne zR#Bhb?6aGFcGDiV?6aGj72!U+xe6u8QiJ2c8&5C8;1aP>!Kdysb*mAs&vN!z&bAuC zo5*su#fk5;o4c`3>t;8l0$(G0Hn1yyeYQzi%`;`&3=v=0ki0O=$y$LvH5H`s_0*ko zJHdv=A?8Y45E+W>VjrV|_DJC}_;if(j9upYRKQ|_hkzXLlXP-s?KtV~S^|9{uTSLli98z_6|+fJv7!Lm1Y+Aspjmy%|Niq|VM70?`C2C>WS_#XD==CGbD=R) zutc#0AtbKJ*T|5BveHJDCLwlz^P;mcRcL3%@G^XRJJZWdfqeJ=!^!WTE-pWxzWe=C z4daSv!hqfeIlw%*4*d~XCkiD=rG*omMu~QeG+zib#31lNHN+B~S>aGMxq=&)yKNSD z9O{vYm+CmJ909Czqowh6UGZcM5XCp0%E#MiZtOHc=Y+HR0*CvuBdSS%-xoN{r%hkr zuvroA3mjIVWMAOW7dZ3<4t;^cti#b4IP?V$yS7h#fy3QN*B3bS1rB|ILto&~7dY$$ z7xe`WYg#{jr}7f=^py?E&i6KVDr-~nk9kowry?@`%T#qNuN&Ci>0V`m3w}sF+Fe@q ziVSl1xa&?+XQP4C-KRuXk*YaN@T z5K%6@ij4@5ocA-`@vRGEoO23)QN$iIK);2z{00TW4JQ$> zWbA}d;!V6COdh8bHg(8*p?v}U6aw}A#EY;5YUGK35F~qXSTy|Xg}gc+ERAD=@xj;) z^L*J2FD(>BR)*8%pYlE-Cng&Toi-=_h5*wNX#8R9(%4Qd7K4y*mfER z9>e>hPBsdE7?I|4Y4iodV1KL9PnIqA__$;w)mS}Augg*}HZ_(5NE>J?p~TyiC-lF8 zB-vDMOusqmp)Bd$C?cS2kWh%rAyF)7rWfgzgpBx-!pJ6+D=$9l=s=owXzbNR<(b+z zgJ3CCZATx^4GjZ=(Rr%jEsKi{_Flb7hE9k;Ft?t6*zhC@JK6Y+@P6>i#PC4>^hU|` zUK>3a9Ui7cB`n+71FbcjCS2?*G$AyxfX#}^43zw7;5hVH=z@Oz zNVclMyU&kS{L0HtaGI>%1xEV?tZHPo)-%}<7MfY?;n)asYr|cC2!HBuIFmk@NEFBw z1>L-V7;Kb$oTM2sZ!PbX&x>8g;xW^TJCRhZJ{uRqf2cb2jq+oQNcskK-&t0fwfz`x ze(%-=dY7fZI~0*E*S@PdaSf}N=WmLqNH4a#efC&HJX17f1_qSRht&5m3cn}c8K&bg z216+i!-K2jx;qm30Ze}jf&y|2YK76%^hhj!Wp^S5uP6mXzLaj>O(TpKG`?8LV>K3w zY|C8m4&hNT7M4`R-LsH;Yi;t1sN?k%etq;AQzIbezh$pl@7+;8C5#Dsm<7zA3K=rs zdC3-KTz*y|Q(5;w7kJXg3kYqU-s)`eadtq=OVQr1O^kPKn>Ac{!nRQwSBb&9VdQat z)wrN*6bhjjnQCqPfU0{M+jP=y~+U8SM9nlGEp;$Ksn)lrM z(S93&(hReaU-iLk)R$xCKwj=MGvqt*f^=zMxD$+|3ntI0Cg&4SuP>L}jNMSGZ6utP za&e?G`UM)c7-TbQA2Ai&rP9ahTtA6_Zn=hp2@$#;p;l#1bE&kh`2(#UjDyl^D(Kkw zV*Gh}VO2XsMok?o1E$=aHXcQ}!c~<-B1lzvo3}uPyKLZWg(DUAU=icIGG2;qlvc+A z&AS6V>{O!An=H1)o zG4{FKGdZ#Vn}qx@{FX*!$ZEC7upJh5AG~PXew7$PV^$8R{F+^-E}(WQu*8O(%vS;m z+q>~B05pIHbSKeDT4*2jC#X+<&jrpT%ltN!D;5%{Ot(s1x{n z!WovzbSjee2a7$Vu-K~(_S~q?-+zx{6KfXU7wb#<{{sL3|Nrb=>vG$FII?~fp80Xg zPAPJnI8NeJrpj@W9dG4Uadzg%&Q=N{A&Fy>(14^B?b%Z`ud!8oUT&V`bTRk;-^fDH2T_AS^jP4SRnDDfOtX32@`(S^ z6vc1TXb%uiu>V!UL{*S~R%NPhM9A-kTCLRqUyo3NT}A$A#FL+3O#}V_Q^<3fT*3tL z9H7VC>m6%_etb1VXn*hb_Ddry=feZF3g2S24C=PP)ucacPllMH>8!X=-{~pJ)Gu({ zJ2u3ULPuwUeWciKOQbuA^b==T=0mp^rJ=^G;3hDS9B02>dRb?>uk3{y2@Ftv9Wr@+ zMPYd`cJI{>C(p41jB9xH!?!QIfBfR~(c@=NU!1CDOJ8|^k$dH^%?~h;wRSY#w#*_@6atHdK-fsC&g{{Ht&`nCY!ew)IH5K&G z4uI`o2N0FGcL<#(V~$yXpyh0&?(r>F=8?h_>o^oe47u8F& zT>V!1^7frWhQaCaqmxIc&!0HIO6S+%&h`*a`J{V%vi{_k+ENzvEb3K*di_8!DpGJE z;$54#x>pN#&4;_JPCeKGV5;~bYX2JDbRr9X_ynR~L|#l0zakAhCt=rQSg2q#J_Ck` zgXTEArqzyNU$FR%+y68QB)d# zj~I*$L|Ew?%1GzO9W;Dwk+x#kj5WDdSs!}R_;J(~z;~|%~-lD7^=E$_;U`Cy$ z$SyO11$(aq>OP7j12sJ8FOm@v;!_XRr)nbqYy}Ul`$-3V+^wIO{`O&A5BSu)f7*mNAbtjb#BKS1o5@bMsM=!zn ztS66DGxJ}P`lSj{u6Jbq-UyABIT%b#`WI~){GR%Bj|HMmPJmo^m!xn9Au7vNSomE? zQkKt336S&x{g3Xj7yJSw7{B`A`SHnP+*}DQruUsG8vN!O3b`C5wE7layQJIev97r@ z^A`Mm!GqufQ=N#>{712HkNWk0_|fx{-+LlSL^%I_0D|Ei4IJGXOfPsZ#I>2#Blts( z65^-Vz&5&%Nc^1pL^+W!M39D&{svPie-Y!{r^3(lg8n@lLq_nwNZ-T%4&YySO^^NA zW9^wy`1^Jb!&GR%`0?s3)M=F=~^rc2hyeJvzdRPl6)h$69n9}NPIFU0?Z zmx(DfGt=Z;5eTUW_vle!4cC1=TjG)i7QcTqGnIJgO&?=vBGifm(DXa_^Md?h6h{YK z!O+o^YRmawU2{JA2ol)*hTez`!n2~ZLNV}3i-r=Ra5QC{QuZMhtciV2w$43M0kYoc zE%zAQZcHGf;6_6Vlky=O!0P-G_qoGyrWc?6(gSo z5ep&}g9sH_vnXOwq+S$>)1HdC+O1G7AB>UIOWlW*H_?~CefJN47A?S7fT01}G^c28Ci!|8|Inj01jY6b&cjCJRd)xv>=1G_7ya3Fc# zf`J8tn)Cli$tJ2wAI~MpAt%?GMD5=VQ2fIRUCaJeOWm0N-Y%)T6ysU3yIZkK@eGv4 z43lgb!8;bY$hX*kIf(tx4;YnCbwwC5jE=h~O>SEhi};U$Fs0v1E;naIAub8 z(&*EjVLqb%fSufK(Idm*LbFsuxKCA=^8q#{p;2nXZfw|%4ZE>{4|&Oxmn$~xrhbL6 zz1(NRZgwEtT4!$NPu>^hmdI)3jaMS+=W0+yQOcc5Q4gFdBJ*k=+^RMPVgZ z6ZiVe-CkmBUkGA3&H9qRncnv__nYKF+j75U_e&;^B@3qcz>B%uinmGSsetESCp~@f ztn9YNUMKB;=sM}ivlk`TNheQVQy5E#-fDXp;e>Az#1YJB`iu* zVu%dxr6FQ1ktSlyJ0Y@buVwdl!g{g(x7aCs8VO*!lP8Zg3FbcX{PZN7rEaciVk0|4 zTgR8%LRamqZK11q&=n*vn_=Tv?7IKhwGSJ78Z=}<#)6CmnF>JWzbwL7gt5E()(Mh7}7GbJ7fwLfELB?+IS&+H&D$$~hMH!1S%cBg2?$BTN5NZxy3jqumVadBC@+P(k zckG_u0`TlU+QWusTPEC3;Q80T?la&BSy7(eJEC73!+Aeqj4X;TlRjP&({V3L*y_hl zPf?~ry{9%RpIS_lC$g2m{Fm|Aos!;_AS)C!VvVvaL=Md z<9a71LzXx(=o6H-LkgG2(BF_p4*$;GG=WXqn>c>bRXLRLNyi0&*5i)H6Yk;zDWW*- z;T=fm0+Alg%4|Qrf)S4RCPF*pVGsK2n|MeNVztl9l(|<6wEpC#;ue}3NEZJ2$G>BL zz0^2Yy|nOr8mgstSr9a4d0ptlk5c~D47l~n{9~)oadsVSHk~b~8Z5sQ-BLogUNJBU8?L3qey;=3uPY|Ces&sH-}4$|lr`<17cYa#!cof!xKb-OhSq{;Yy#uDc? zaa1-+7kBCdOPUhW+z8NREoq9Rp`BF4c51HOw&1ilGpmg8qc3*YXe7l*`hcBuWus4t zYd=TB9sXd0vq7qNtmjB`m#GUjpyNu;$a2k5B#~fRzSOp55Ijt{4E>1V!MOU(AsvVe zP?pehfpBy7AUv1|w1Kr5%0iBRxwFB(bj8S58h|k54t(`0o!eru3p}r<2~3Z6YbXCQ z`r?u+LH83#3ZlHHN>j&6@Fo!pefKMq174#= zB>5iNL;HC!S}xuS2Z}BW@ca?+1*KR*%%uw2;=Pv?fzuDfSRX2?ORKSepA6x5&5tYy zCUh-}2!yagO#mogCUmnm1cU&x>8I&xFYY+MrQs-6=%J2EL4d+2@YFKymb&Nf?N+z4 zbNjNB_xl`}_lBPGU#ojD`& z)lhpZE{rmBlv4w=vf0Y!DrGY|!$2Q3R@2FkVBZ9Bp%#wuJ5sSU_-StSoH+5$&TcrK zKwz$#VlkZulzEL>0c|gCa5WuNH&t;&Gk1MlG-Bihka=Q-DNMS5$Mwy+xuADbDM2L# zQSPCG+TgYTyh~ba>!{-#XuiSm201MRKzV{7IUrvFI^IB{m}3q@nU@+mzWZSs<~$ju zFJiq(upfF8X9Si69b=(hk5)z+hVbJ*(cOZB8PRnv`#CpjJTO7ejR?ycc?y;A*9>*^ zB2BwOH*M{q?XUrVf@@M3EFEfbT6OMqopV()$q)QwLTwhh_V|dS@3&A08p9H}+zD7T zNZEkrjvLMS7fnn1FhV!jhAYC6A8^Gn9`B_CkV=E{vmaZNsi`%YPED4+VojzeCoiT= ztXY!@n=V-+Ta&3Bu~D~cGJV!EvP482jTc1eAw$;0OnVi79&UM2@#2U1s6L-PkH+f- zDsLhQ_el`8F+>z`8gIwc^P}Y9=dZVv+7E9|PmbPx`1Hfc?h81VTDX7AB> zy?iOSR^%Xmc-G^6A!#(^v1b zJt|G{*cKOMn-IJZl1dP*5}+-O;ffr;KXrBQk}DEs$@jPC8V50 zBQ@Qw^A^eIilaIVi;>EI2Z=%9`)FHCshdSKK0s0*-X(@+4!x5J zPyBEc&^G7ZjD(rzcRhUpeU86BKP`84+2g~f^1KFxyud67#8^Qr2x*D98TuGGI*nP< z@|S-H5|9u1bSb;eWu%|#6kz(#KmLOUMlnW5;rIFF*KXZ6poZdbbi^w8!)N*V(9v6e zMC61Hz31QV@gckMh1BSXvs6(7!KAR{=pjBE%B4eKv(A&TaKsIl5;fwGCqv=IXZ7n1 zW=QV^^K{(e2Iz@1Zp@UfFwNq|bLxW0lMKy@ISIQ)GpP1S7ESI=mW)hSqw;l~zeRx$ zQ&cLCZa&5hmpfpd+HkmAC?dnT@mVf^D5oj(DW*P#S42PgX)+q}NFQLFok>0lfG8Kj z+eB|XfJy6?R8*z(0k6SK$jOt#E=7Ry?+j(f*^2n^S)u@FK$pLk7_vm8Qc*X2etNQs zc37JNbadpL$CwRVLjvV&B|}5U@aTn8;#4K<1xZ?Vd)o?PY5dShZO!&F+>QBu9%97a ze}E?+aun-2=WQie3IFI^zC#~m7O>fEEs>zQtpp?DsMtsyCr9DyGnUG#2JihP&n!YU z;actfQu7Yu7ojmaPzZ4N((;$(ug!&-&KFM#mb#M&h3EGXJ5|1StUeQ=eVP@SQCW>z z!+tXaGs!@JF2|=<$lFa=k&tK7PlhDreIieM!YOR9dQ5A55C^u?5TU}Wp8iY?@^r5MUYf zR8M6J*SXARbJ5o>bwBI1*ug*+(t4>h4&|@LBkuZrU)QmkCbTWqHzfaCEH~9bm0c#f zKH?)-h$}zRN0q4K8%O`_)z}Hy1gp441MYY!75j_Ro)l?fDob?%eO68QhDAYQ;A(3&R;(w?&=;$(v^@_; zp4SfEOd?$0v$GG(9e$~VO3k&mmo%+slrRKF{Xvy@$(TvkL{=c0f5r1<#<4Xftua~g z&b1YLs|JV)%@*1mO;NY`cYl*eRAoAmX;hUlRQ*)< z*;G2m%p=Q8Ze{zX-FM~d&%SQ;VHqNoFjMRTm-hm0bl2_NysbLCE!@AaI)t_0cC}8n zHpscqy*iuh<;7u9e+dBb9%I52=Px|sk_FD^RF2Su$@WB6jWb{ah5pS?DrK#gJ+oe7 z{(H(JxAc5;`{s-3ec$Yt)#@z!2@k6*wA>gbTTsB+tUek&CechcU%}aYIZZCAy&BA+ z50${c4=Tebd^N$MzMRpQwX4>&u2zXNGMe`KB*TQ}FLwi5PtyO3pm!F6c4$T4x*YSqd&k!D6;`mj#&2klYk3 z0p}8sHfkF43+96Q@XDdA$(CS?fg`z$z<>nZBmvC|{|Ce~krP7w)*cPE7&b7?bxP>! zxMDOh?n&mMf7(^iY#oi*wcfW@39U<(EaE|{h*nWt$EsLX#j+|^^9j}v6>Gc2lx8kR zKr|^Iu7m`X_KZ-cd$HpuUB|i1yGoEVfZ2UnGnj2Wk^W$Sw<*eBfW(}>SfL#ABPj-w zg;Ng#<(**^w0yJJ98(Sl%AXt`DCBIwI!ETDu{>O>e}V>d#-&IPvcA9j`BTJQZ16cs#<(3y$7A&3HlxmF4M68Ut)q>njf z>^WG~Qp&|QANbL?2-GNh_^^-@bv}_RloCWYfB1qvSlZ2}-Fbm%Y~_UJt)f+&d=wu4 zoB#~O$v3RmH{$Y}CD~#n7DIj>;NKnRM)=+XM{Q4Jy|zcqS^(X$ns0Hz;=)#Gg%Zs$ z781?UYCf$fk93r!3b3SF1v@RV77+`JQm_HP2v{6D`or`JQh$N6&C+rqE!B15gV@DO zf839Md;i{QYF1OTnp)GC(`srfZ)B`Y5&Vp&Yr%~rm(@VFgPImDEnHf-Y#MVG;W7v; z(Uu?@h_q}w1E*QgTm>}S<5`eJ#b>-?+zhn802_^@7{PA|r!-*NcdYNrI4LBt_T%gV ze*mwWgw)2dHGZl5%Q(E_-FjHaYxv}fe-Y*^hMu$0Ox+qf>W$vS30VN@;7jcw;LB-q zc->E$V%7k3OYXYxXu#qmd$K`(Yk5pKJA>u$KFJG;?)q6zV#XnI9vipauVFm&t?IG` zr-u2VDOg3&2BxebcIVTyC%nnw`WZO37H~0Nl&wX8`85z6+Q!rRSKS=mFgYNvf3Hsc z!aL*rWkhp14LVLd6lvh0?;CSo3lZ>=#GP3Z8Xc8Fpy_cJy|2eZ4#+0!rv`HE`h>{Q z!KB(ztFE<$1}*z$6YXSf_9n5asrkkozi&!KD84FYY^{Cbuutb#GpI%jX?QHsY7%f4 z>#{6~f8q?Q{c0$S(opL%!A)Que>u*6yY#ZobYIyEHDYT|i0hEa>np6W0uTG%s~?`y zs-vsrs~^67;r-*&<3}ftPM<$f&6d7$oO|V~aGySY@$~rF>5FHYV@f$%T}|eU#9ix` z)1L3GZfO?dEp1x8dPj49Io5A3U~8Q8YmmqHN%2Eeb7%P}Zw`ArcBS7_e|3ZK$AUc^ zcXIWEI)xnGF%|93?Cuz2S%EcJn@bsLQ3$E}&RA0xb@M%XC1id6SJsfv>8JACgzU2`8Ir zQt5*p&_zYB)t`fVjwVmze|)e(ohew%q42Ubs(YH+n%+R0BQ85^?P)}L{>{G6LBmz) zHy;dmasfL;L|7E8{B&oFcv9&7o+8RVpUHkvQk^-9iL%Ho0|u168QDq2fHg&8d{gp& z1HmC0V9Dyaq|rvEJ%Vpv#kwi+ju7uhH{x2wQ8QIiLsb`Q%A7rxe=yQ@H&{X+>zFqw z@t9@F?ChcTiJ(W~X1rx`5m@D-pj^1UK)Ba=?Sj6jN3~F0TfL&GdWAY=3`2k+#Wtj` z>tJc4Xy|L+X4)p2-#0N)iV^3!(!C$4dO4JpsV7oZ(l6wu@-HjUt(zK{P=sb;K_F!%gWT}&o4URw>rZp;7XtSziE*)F1Zxvj_f9T)@q@$mtAevEosORja zFa)b;t$(Fgl{!W2p>d?g;!K5lN9kv37Y4@BOiH%NEj&G zD|w-ut8#B6IM7@&wP}^Nugs-m+1vRC{}$yO6-y?xu%~krpNo3=ti-{Rg!{tD%9}B^^)}YEd3B9z|C6Y z!Fha4(WG96Ldp?-0fj!ML4XfC&i}StA)X2#&`95y4|S-+S?5*}u9GjcHjD>ICUT@F zZn%StGIPR+N(AZ+ZQVjC^fthAxIjb$+&}NdxQ?9z-L_!Q>>IQE zh@~16f0)LQ{QUwkhX3_M8c~X07CB_*gHZj{pY9Z2%&d?~#O;DJ1=_%P3H&cFOc1Jaie|yX}lPQHml`+Rok5I+DV2>qFPPL&! z-tda)Og$)L0;&6XnFhu<%0KQ0elh_#=lb5?kDM#6F6@^WRQ22F%iDJj#@Rf6_UQEa z$+JgKoL{B$>u_gV2d8|}ef)g=$uAY~Y|TgJ;tRZ?~0L-RBFdH ze+9uZ{|a-RI`tvo6#5_})@BHy1L6zjsn9ZVfvU8vf%79L%RumJ?GRc-IZw>(!e-w2ZZJW2mPZ|vXOUosJqnY?vhl*E2`-7N7+Mn-%Q85zgE_>@PM z1$@PLwoEIE-Mq>`vXF7c?8C8d%jIw|9Sm&K#w-Yn^{2zsqL^wU$zlnCj5)(PgyPXN z=3`9*@7cCwszrGef8&@oPyw#Hxgcn=fJVAEb?*&!F0@%etFvm%>GsSQ%tv29K#ST#xre+i?qtzcjUQKoH_RC_H;UgEIxk{Bpc9*?eE*)>+X278Qeza>@yZ|PSG zF{N^{6Buw*?^~qq^7NBH85mA*vC$e_2h7k1a17%je(`x)7lChHwsjFta7>X)G%xNk zAB|N8#)%miz^yyco1%_&!m_Arhc#>mM3IoWB{mc9$q3Q1Xqa|4P(TRPRcpDz@T#x_7UV$ zl!67Xf2Tk|9&&=9Xpe1JU@D>>vN4{(=ONf!Q9$%t#hYLbHSS=z%KgPIREi7SCC!bh zi0-Zs>AaxEh-z_g%ZnF16Q#{$9Elmt85ebq6^I{HUK6DCF;USZLMtX)oMGfHFXbGU z4V!p@ExM!e8thRyHKVAJ8LyH;P==$j*Uqmxf7i&}Mj~>T+BwvBxSoddwpOCh+g(h9s3(;TzwN&g9ZC}ei8jyE zr!Brytf`5cj{Y@r{saeZJ$;8V*-xVeR+7?`6)KIQhgZf8=`WUT&`y@=5_L-8#-4>Y6)JHHTjcrr&>} z#?@M&cSQ^JfQ5-wdOsooEzyNvqvFkqHxJC4f*-%{lRL|+e2R(kgqtj6LQ^t1NG=bG zmi^huYl8bQNt@kv=cuj{Mc&8rx`heH{m&FkZjleU42kw?OVw1pU008iXs@<6fB*Q^ z674TtGdzM+z1}Tk-~FnF%mB_yHwY6Yx0g_;2QF0&2+#I%O+fozSapIS&&1`fQ(l}( zD^yyc(hA#Zg%>+Ks!~Y3ztRbnPFSuJfMujgkPS*Jl~AdKN+s+@C49kcv%_lwdhMkt z0Q~6lRsxIg-cTGEH|@~DHLej(e=#@u3ioCmVf()oySVdxLzg73SshkoMDGFrew%^~ zQi0$ZfS_YwkO#lab>4sda!B0rkc}$zN}<=n2}u~wNVOk6V_!XscS8Ike%QH0E*;Y@ z1$F7mHj>}ve7>V$%$4>PCic7oFR-k#=Y@)k{3`3U1H0mJ0s*iK@}-J?e`UDrjSG{# z`l5W0FCI_%RQ{zzplTv&(KgI=_Qw}H%>G8P&!4fsTVZ!`waS(+8$QM`EHE!RLhJ!dVt7B;-9wIm3OGw-hMbky*|%z?V=MFlXx&)$B2U> zWv@B8RzSjVf3@lPaR0<}e=WItDX-x4?eS|F$7Fs?P)xbTlzc+*%XG#LF=vm8^oz7% zCi*aC&X>pyo>V$>$F!96^ucBOB$%fyzGx03A-ABD|Cu?jzzWQSRixs%CR6%sKph;S zO!b%@VirI;83Rg7gX)QTb#VUf_JsB#YrYiYkGr^T348)CJA*OYIf;KtSi!T$4G2pcBq z8ny$LSB;k_5Xnnef2_b|QDx%(G*pIDFc;mB@u~vB)HLzX9uT|X4I;gcSO0kx(;=tg z{^?WYcqq-XEjEEqF3)NUCHnDyFA%qWR}`$8Toqm= zKi8sXV>JOA6JJGfBr{r96l9MXuHn35TW#AlohiCGU5EDw^IWW|#CQSufMH3chp8Xe zK*&8xjDp&Te;{tj@kO=BaH4?!Er$^TQUw)UVdd#Mo;soZK1Wm~oA8^edB#Z|)1qLA zW8;-Z(dSfhSjcMswI*(!YvqJywsL|92jY({yrorCIiX#b&{hZ%smck9qp9}j_L(z^ zll1}>6qLx6yhxmBi94$*2)hjG%auVeQiijv5fxW$e*_eYaequD8f(gLqIZX^Q+PYP>1p{cUz|0U{vwEJ2I(mgk)6VeesayMb3TqUQ=V~9!?d{%if_xySr@{A~6 z6w#?#DwJiZaDoI)vbzkf`VKN;vS8!L`2B1Ac#tQml-^V%Ywwe0Y7RiiSxNtGa$V5-p;wxNUXLnbeDntKv0vny-#;fhESXg(W7t*5~%R z@(}=O3yk+mkUf@UwOrwB7)-Hy%6G;+2pP)#?t4Su7>}7x-LyVUZHw_5|z(r1u^GnkAoVrY~YCp&KsV8jCNG{QB+WQOkPQMz>9WDctoX~E9W%@D#1#de;^kt zevyAS!|G*^UdWHP63t`pdM+&_lPrChYi1N}ZYCu;HVq;JARk3oiE~bzZyhHi$Sd@f zIJ^`mhj{_=dydStdSi%+y(;yvR;!FiBUD;ovt11y;>o+z%rWPJ_>#lRXJULODxULZ z;Bw2IW^FvqU{a(>NbUYKOof=nf5J?j=al1^{WZn3#EX?>4731IAtCuX9rugN9qd<5 z6E8nAIX%mYeZ}s^g!AO{gW}R`Mu}C)5FXm*i7p957Ofj#aSRZ59$8vP=`G?!$w?Vs zsrz2No_qPyu`9C?^A{#<<=(f&%WS@x6_co_fmgEJgD0Bo=1h}5b3At#e_SkhEhu>= z0tKT_Flj*>jx7W28#L zpz$W>TH8mk3UUdRE90!P?&P1;XTI3s#$Q?9Dn)TYBHlg>?C-c|jEvvC?3mmsylseS z->8IXJ&aK(B9!VZEx$Q&e*;mSMJi?{Vss>nBrQKO{p1DwZeE?la22B;cn+0EfcKb1N}MHY zTwFw4c0YsQky~|ghXc1qF0)`s5&vU5&5HfcoBeSu!+-Dw74Ijke}usPo1G=&CrtwU zNIvm-dy>vk)6fAG^)k3EYT1JU^BJ!q9?lqZb0(^+{K#w0FECu!r0%&EL2MUSG!)-b zJc+4Vf|xR#fro+$d~GqLssi79vaN%v1-18biQL?%KDz$cT@}2`N-WCGPyDK-!`bBh z=TFf2K4e&s7rBpTe}@Z@sbbew0-FM?+R>i5;TCr?i3>L&q>_1pDNS@rlpdV`6!RkX zWx-l%e-s2gWFh8<-(7n$VcS&Jfp3ec!)-34#ttmhjqAnlfme1nOG_!5Y;}jEMA1_I zrQCb2^*^TL$q(ZvbFZU6zj|TFe-Zx(!o$Ce{tch{|8PxlfAzKU)pPM+i^g`RR?vSh zQ};1DL0Eqe{=3(u*)cIt3Gpi}7MQ->=h^5n@ZBCC-csVR1)Oo~I1o(pt z!%_Oa;hLjs#UO{h1iYxQKS?7-EJbn2{7yROPfJEF2_M^1Y~VRy#Pg;2#0W=o2!QOfW(Yt|j1G=svW*87fyeaQ*=PFY-&qfj3h^8H-A&$@!+fil#Ir33B zmd7}QFzP`Fm;6Z@3mXCr3|;|**Z3xfIK}9J1-zTBp-QP0W@FR(hc82RqS?x1(j`7z zT1rbpXGJ*s(WP^jmGw#ZB5f|j6r+4AY1)T0@hZ*7f0d?V`BqkzGu|ue0^}_8&Mw9@ z^5zn|Kgqw&EBlE+8X)Eu- zrCXXG*o$2_h7)yY7w%qm&SCfRzH;{xRhdvZDKJr8)I-`>(rz3uzVnwmCtu@sl`PKe1XYs!;{{+Z-6ud%Ea zHmRiUjh@R=!Bjj50F`j!$GBP$Wud1sz3`DA;AkpiUK4>?0k45*!d;BV7K{Le6w!$b zk7be_e@;#L)tj+r=3mp^0d6d0zA_p-ee1+Yf4z{0Fu3?h{GsDDM(#82fQg1EhBs#* zJP(k&b*NpIJ)Ghr9A^r1D=I4`!!CMjDzy?y#39w%*zDap*bx*+c@HmzX{I0VN1hEU z%x~Z51vWpzXj`pAJNfWbo3=U`bI~A ze~ryPfA<3V3ps{a{Lpyyrr~Gzo;jo}k)^!ZZ@{jOF`*xP<`|d+`YW@CBP^oZ08&g; zT@2_mJg4>0(i%^XjW;yV=v~SSz2a3aO(wmG7tnI%*XXHFu;%>bjp;elvHM0|^V?t$ zu<)ba()4<}4&+PzD*xmUNs$ggzhi}}*br+@e3ub;tCzJeh0zbw!E-B(bbXm1p*>u;x_ z_kCncn4(ehN~1@kw@tJ>-Joau@@5orLCu>m7tRgPSPbD$e|RH!e`f65 zX!UyQW^9l?j~?}4goXmEq1>a!w&{C;HwbH{H@@+(H#fVPdA#sthyfQEg;{7IV3Ho2w~ z2dUFH^Pv3<@V=G9`}%#ee{+A^ecUnLH#(ZuuI~fybq$`}To3PCjZRbGeW$HAy3L*8 zeWL*HJ7HluTZ{1`3mI^it^1I$~PZxHTB`PyK9u!J9WLW5R5lO zc};J3TWi9+2GXUf0_U}6yQA*TuGb~bRbJ{$}Q%483-rn(#kra3S3GznNPY&d~Bo@ zxDrK^YG8+wIP%n2RygXZZLQY8KSzY@J*{5T zCgDPGSL*~}!W;I8+2snP129}lsbm8~% zk5kfLJQM1Mq)_?OL#Hu)H%ZnT3eGpI7?lmDWVrR7#rOO z{jRxd2czDqcNQBA8=4|&OVhip^-K|6SG&^TrMEln?(Qs+R>6w1bylXx>MKqlb0a}! zTw7Hu&T7SZf2J$WVQFDLzm3$^>$eZ;V{6AK-)uG2=3aJ@TCliT3*uE+`qmqAwb^QS z+x6Xnd|QJ2C*PY+lt#Jnod!u19rk9!2|oaQ|Kv|1h#$f$>9186oIu~$orv^RGycSz z)I--_=IZU1)+u~-ORpnn^6e^BUB1-CT$68^^)9Lze=&)M^(QPD#tzIF;H{#zTCKKt z;!c;uN!(vyZM+=zOA6#Gtc^j>`WVRgI~E?1_C9rd6C3*z!^E(NS+CDPUYH2LrFx(Yb$`^1&uX$|Uol7cW8*aRxfSsb4U}sr(HCM)*$_EX3@e ztmu2@f1R)kegoQsw~jq@<+;8QF#I@vT0&m5Ov;ih^=mRhLVivBQ*tDQzXoH_F89Wy z=$u*n^Xfq+H!Cjrs3g~>&I-l(?1B#M(t{O0`A0~9=uP^gpZH@%2gmxL*3t!}si>dy z+zw4glfVWT*UH(;8DIkgz@7wbpKiPgvyOyWf9QnT0I?d{IU!c`HK&GH+F77gv)iJ$ zAb_J*y{Wbq!c{}7S8!FqRRvck2v_P^z!j`OwRS7AuR7vG6M)r*bz@~;Re)6i)`%|Vw0@>Q_CVICN0xn(aWPq(5MXGhW zf7PyVwJW^duJAT-3JtAAVUjRuU9Hj1xispnh&LOmrdPaK@#a2wGs%(dwlo4&y-wVj zV#$uCMX^d%&PK(L`{u{4){PLd)o5f9QtLE3dZoQ9jy#z5F3e-@cJ!`r^>rGJdTu9G z@2HU;Z|D`5R$O{G8?&Rfy8=PgW}}{ie^4DWF{7|pX@pkHSuy9{l)9KDT|<{*nj6!B zd`&HHV;(khEX5clos-fz{x;mr(CTO9_LE<8YHq(PBb(BcEVxxdhu}>VO1!5Wzahm{ zr;_{(Cye8*SIgnk^;#x_uU%`!>3h1C$lX)xwQdu$_e{_8Ezh^%7EtBg`nB5Bf5flY z8x2=Idi`40R7~i5204dmN)2?w0G0bMWD+k$X)ZeV0sCN$@wS*(oSxqH|AbSySD2T~)1Hj|wAe-G-jae{iaHYO0-@ zvngOwVsKY;;NEEK4*>A$uED*oX>DyU;NGmOs=i(klaAJG%7mrHF6(7>3!uH^RZMma z?Hx^TM>X%Ys^WbG>=m#d0od#L0)(1czk9gfwbkC}w$&w#NH(_G)pobOX32Xn^<^pK zhT2gZyR+Jnq&aNY&I;Stf2et1??%DX4Yl2@;-@Q|uW)%UHYT+x=a$+r21V)@V24TtD32 zuS(9HlbTvZAvLtTe~M_V&@6p3g|z%_Th&iHrZy^y7RJ_J5?6N7_N&oRvpGYsKA_Yf z8L-$*HT`O+wQfPvucX!}b*$&k+J0TMsHEG8@!;9ZGoJG8tMyL(Nqf}lyEdM*MyIux zD2;YqUAM34K5eH~+IBjx*435mRM}1^s1P_w%rosjGDP2ua0o%_4Hhn+WtZ#7kIPmZUyuCKdAzDMJ!lQy0%t08=4JXOY1 z2{ppTjgiW0Jng98e5YOHcxtTecuHuE%6K|^QK^h4zX7|Qw` zj`tXZq7}rDf2-%!#l8wcsf?@(3qskZi|)xpp(MX-5j#Avf$b8o-j57_mH($^fAta- z@QWE_Dpn+>uD}$~RxmuG_a~pda>a}_-(L~5B4|a>il7xiD}q)8tq58Xv?6Fl&`Tlc z5B3t?!Afs2nY^iQGhg}2X34Rof2B`K{In)9(hpntf5p`&@9vWiDhx^I#gjdp`b@z( zjz-^mW=b&fW`Sa)>Ns92vk`-<`shqnRK;f#p9SdeQNj`2Vq?Cl!q5+*7_JpvXY=zT zW>{Dn5|8n5HRVoRV0mL3y$pf4MN8b?s3~%A{mkH8#rAz>O-;M+u)-0>kAX+R@AzsQ zpAD}{e~siTv*8avy3zIg=tdl!;l`tD)C#;j6=YUAXnnEkd!D11FdD;lgImi2aSE=c zFodDYEMQG{s2K3;+l?9SiyegJ{C3>nppv+_b&D|KKeIOo_VfaD$hcTXfz`uh_ zf0Hb3$hy;UA0z-c2zSa9q6B9$!F6PJ0`KGH$d3Gq(4)JLE|fHyEu@mOMopoL@5mK4 zE)*hCAn@2B{y6ZxF`gkMCWMg41C#*coi7w36^CcJHGbie_yuV2$QLPdWRZZ6FP@ST z$?v&znM|;iSme!-N~t)?B9?smb|9FyfBA*6VuHYp3|Kplr%q^3qIEha!o`XlnUWxL z_tMNj;VYbjfn(u!DACamisS6FAw^r=M87YdI}F_P(HZnn`CpI9KmM9};fLJ&dkX&_ zKTWI|-?#Abb4D3342%nzBu(+{8$6h~*5YSUcaUW$h96BpMmTnk0QM2Xz6fWAf3QYz zg{YEE3mVdaaVPyzf#R|tjBVZs!Y)=$1~kJjuVV&XQ%sV$M(|o{iyg zQd8lQ$OqU$Vki{;B^N(@MO?8<1na*|fo>I~SCD>GNcWHnD_~zJsmL#P5%(-#_{`(2 zgNSx!uqP_pmn4P;T$6Vf;+7y#e>zMp6Dv_nbNAzm^sFCf3m2&>!0K5 zaHakEnDqevi#DaDPv`i%6aBd(So+b|#~(cOM*(Ai^Mq@ z#+8!i>)1(q0GT)?`7MRCqHP9qCYZ&Yj)gVnJUj9dH9Gg%ia1GpKygbLTf zhsF1K1dbv-H=iYp4=oLiqs{6AtIygNT&|#u0rE}F5L0f%1{SgUz{4_8BH9X8x@g?+ z;!Ba*1uLNl#yOl0jgmWjY zLABxd#)<7(wn-_bxFDBB|0HjWV5o*~j$R{wtq@Im00tE!&4`0|0K4&%aZQMI_)0-T z9M>N&+pO|=>g>@!WQ%X0OazyV@*%vA@()y0tFHVyS0*FJ@#0C~5bPkK2bh3_MXD!) ztT4eA#7lrSe{Og!>?5wVN??T6UeACRw)h5|Xqx*2Ti@f8Ap4F+oR_B9lAF2~+O#Rv z3YDTq4flvb&kF3%h40-QQg9 z{+4q0fA=ZMUD-*!cgZ?+5jxBSF0uyyPerq}X+{8Ia{#d=fY_&LN*$e=5mhVsJrVgW z6CE<&zn&{;P15ZuvT}FyOW(QIkH~WhHPeZBMbibhBy*|KiBxHJO4<~z^Zx5PJ}ZjL z8F*g2V>iPD7pgX5@J*9~4W1|z62HSxzW&FTe=p=B+{F2Lvo?Rt`;@qNX*lzaI+WsD z3kVr)UdHuUW%)okAwhb(6nD0Q#CR5cfaASkVu>QfTr_!Nz4bKiH7}@m9oY(w| zUg%modI7(Swo6yliTE ze^NHpQe`kM5&gNbAIiIV!n#%X=F;KJ$*lSgB51O;^BR}FZln0l<#4*AVVq%hRx#|| z0*qKJl~_f)`iTnEhO9rm32JY#(A{xlR1}zTv6&{tdDJQ8z>D5VwX$;%+85ev2`lsQ z;}U^_tWH7#goXeEaq{)EqT8etb_JR@QJ0-&(%nxrJm{55lm`<1o?y9afe8b8+2Iw1e?=7*aaOcp<54#}FEa>vvqX8xzy`Xc%XaV+4lJTY?z9mm zuST;e8WS8$1276gj~u?qo8ex}qc^xW7!yQsWQpp>(ub38eNy8Ir7K^LKl>~y-Rdi2 z5B@A5!d38AwpH;l%*b;s*?=YSg#nKh8!_7#WT02t{V9(^;x~{ie@r?22JEjX6NMKt zO)M|UhF|j>-7ov^}w1U_3jf@67y($-Y(Nz*Qum|m{bUW zw6l?Ij=1_s1F30F{mb1Urabyc0=}SjIF|U)%g;^zGCS_k&PFiu{P4i7r~VrN0RR8& zeMxiUNS5YbajWSrf0Ht)eOFk9nL-hfDeG8dk|MLps>ael!bu_n1lVvu3Z~5=uXFA> zOx@-%zhr(&{*rl%JKz8TZlWlXLRVXcNDzQ8?>&F(_m;7P1jnEQS<*y%h*xV<^qwG*egesf4NG>>tM;um`Y@?>WKB6;*}=q zm5+194sabkne%m)LcBS?e~SZq#AG!vda6AvQ3_JrjX=meVs26DZ_duSWtrT3h*Xu} zGDHNk&`Kga7yN+;Ib2B;{GxQ`;*Qn^|NIlViP}(m#$d#I^Whn+4fE<1wKl4jd7gp5 z=1%d@f1J=#CtL*FV-upY4?}SsD&>J*Nk5_f80Em)anslT=*KtxUtrV^Km6t7^yCBy zHl}rPzd1bY-&$r;Eo|AMIRS3FBGuQ_Sh(t9!erCD)r_ z9EZK?`y;Q@9r1vjp}{o$51_r7S?$9Ak?t7&fAq!)T>Xw9{Mq`{_96vljGy!Z{S9c2 z@lE((eac;?8}#*b4C#XZ7}F z>P7*3n5&i=jh;g~U!qNTuXNB>7C_bok`dlnIpCMqg9o)YSMt&`X@pI#D~RjJ85p+$?mTI$urf2fHOkufhxN!FvS|c@!I50>Ih!bAW0o{dg`(lN^QG-h8WXz9b8)RjJGsEo>rh4f7GR1 zOl!(zu_gXeEJrPa79oSKFBdO^t}kmDwEQwC2M*Ye!VZWP(2o+5IF3?b%X4BI!)S~{ zt`x|T{SCY4eOnzJ~%xV~D_+2^uK=>Wf@Kd0VnnBrTh zT1z@jdz1BCU)mOvZqF(j{x!=6f3L&@Q2@_8!{sI6atjWjm@J}I7IuCr?5#Rqenut{Zzqkj|YbfA-oQoE5%5 z5G^=7faV*IA7|U~)uW0Xkl`LY_1qBH7G)fkP{v_7Wt3KpQNnXpXLh)Ewzs>#e{^C3 zB_+3f5}Fg`2VA zOVd%Vsq%4}aCkXsDHlJ~*D-ADcpAnjcp*h}IHh07>_^+;!Z#^GVY{tl%&#HUQ8z_3 zgAOAP?8tmZQA0??4e}OWYc=#G0%uGJb3Hp5AUaEne|v`X5s;`;k5?JSuRS4fp!Q9K;VZl2qBb74WEyKL^WG{>cEX?T1 zO>A5nY@w3pb&@av>4*K{7fqo5z$0e(beYmfwY)EDGZcR!EuQxaA^KQw`yS$#gDC*IkNta}J zk(4$cV?l-se>Z%!dB^7w&EhfRM-7p8XMN7>ODAxmK{+n*TmlUryde435IngK+|BuIK$ZJup4+l~qW>uzAtoMSe$k>m6mTWAIAA^T8|s&r z&x6uGZgnNxnY-nihkfU!4lJ(fnkPzf!k5B`x>-Yof28;4AO9MieDefH!k>TqSDUtT zs~?3i!I92>By5YTw&}52z1zg(YT;_25iO56@zPlN_F~6gF`PNfsF$eNxaB!v5Sf+w zJ33$SYdGaQlys9 zvBjpRP9#&AT-$w9$e=1?u$s-rK5|m$CucjeA_)`#dWnx!1p{CN-~t$jOqc+}E9~_>f8SIqtj0mTM*h?r;M=h0{Vvz2a3Y%% zxre26SI{Rs$55*iQA|~3si#{C?ggI1JkUbtB|8aq_+*IWe6rKpLZw`1!^emO8Gel ze=%%FDN1+M{l>9Litd`i58ujOO2g4oiiehKkz&33GE1q@3kd5|oDH6G*-fuF&mKdm zbo@PpX>0IS<qwUQ!D8Yw#CPg>sSKnL7pEO-Nw7+Qrf9`Mm56K zGIGSz$o;2sx3ab`s00EjA(ce98|mqpf3X;CJZ66v_by|rM#XPbuGd3Dn6|CNa%qZj z{+?CQPM>De6>`AiEFRNxvm*nEOb81d$Ol0vQ)m$k%ZFDB%8k!W6i&Q(S$3qy0Wl=f z{vOwWmJ^*U9;VaEnKHI&9e*Yre`0lhpvxEYbtGiju|m(vc-;?-%bw1Zol}q{aku5W zx@_CFZQHihWgDl|W!qIl_H5($-ey`idG`n{@rtF*d@ottsxGOVg<%oDZc-b`m6 zsPWa2&)Epd{T#8rMVOToWkc>*^C+%A4 z8LkG-lIsfgskRZ&b(9UAB+*Sj9k?{Wq|LAbbi*qREFBb%de?CY%HZYQ`*p1hlYQ0* zs$1Rivm){PFO`6)@~HK8_zY_H&r)7#Cq9yNZqYkD;)!Rd!pY%waIcW};V5P0g_|Q()cHd3gD;ct5hSRaG2dL&2F9pVL&6M61Eg`-ni4NSHhj6Y zREw!K2;2HDfnC$!ro4Ld-d+FTW#!B1o?3^;^HqZT`_Of3%#68hhI{Q;mq@@NLD4z*MDr`(xozY4EKB1byfWUxoxJ0^SQH;GlF;RpcYbr1F z$vi@h^IRCa%3=6?2f9;r`g*AC_qova#~24DC$tsCJE+|8D^X#(jcd)pPoSAV8IGKR z_6jgPi8O-7ESbClLewBchRI7*P0*4164kdbYl=8Cj!u+i-4>E%C1DMDvOgTVt4nWc zRa#V)bI%*snc@Ydljn1McwK&QjZbE|ofkbmw<_u!c2-8EWN676^jQXD@MGz=Wv6E6 zgYz=0vuuYt%Ph0s2e~|;iu_I9lKf0d`=IE!$>i_zfNTZ;e62Igd19P!Y!>9Vb=m;la&~!2s>>Vcoq!;>ARv-THfr!K)@4NUhvmeXN_EE@xSXV+S15vTdhn z7*-a%u_Si6#ZpsC_&i8%CI(U1q10k{N70np6hA2-_>)8Y4`?$X9ufSl{7rxK7k4BG z#8(rDR(?usLxpcbVA#wDme~63RpCsHP$V{}y1>OrL-x@xaBpjm-!k-L zOzspU@C&W;_jYR@w}j48R%1B|8t2V@irsZcZQioW+z7UZq-YO3C_{V~B`XXqui*t` zp6mz!RN~)xiUfT{VqtpRw(X+s*@N}iolQs0kGt$j;!T4#EBzOVYUs{^-fj`u%m|YV zS4{d!55FyT2AOvnm$v*c(WZl!#;xRZeC0AJWV;V2SkMAiZkkAw#EEu{5W;K1rU|;G zz`DY0lOBRZ{v1=o)}=nRhp@9&R6Wz~FA~ZCSk&{f5F}#4wZqndYm`#g$?e{F(b6_& zs>H;E6AA|HcfNiVJGeO1d>a);oCPapUUA<|?j1_+UN-t^`U2g*l__PhwU_$0wK#L3 zLfUV-89B3I%nYiLxy<~%HR7BNu+e=Dw&`)0CJ8!P(yFeZJJ2pvUxec`4!ZHig{ebln;uT z3PK63#n+6ZvJetBClTBRo*Zs1IxbIsWTqcjLo=HWvMam77$(I`XCG(mL!$dc0u9aEI*bQb6n!3-`TAn#6UUAp88;9R=f z62j_E5Uc=nM_R%t^)8!LviLX?5l3+4^V^*7l}U?&5aR(Pk)7bmjmYN?)ogJ_jGDev*&XX+kdvPjy!7vf&Yp z1R4h|kko$mh*r(tC$0Vz>fvumtgd7Q%wpYKd!pJ**L#wT@~PnA+~j8sV=~;^t)Eyx zWmti|s>x&AE4>_58~;mskU{;CQu88=yGJuJ@r+_^j>%wr3&L%Rw?qgXz^68GT3T8F z9}bpk^VzbKNcmh9Y58Fq!;G6Ls3zeFdn>T%>N=S7eg6#=^VQx>YkN1pV~`jJTrHqU z+zm@*rtM|G7=Re&&wl^0`d7Fq3Gehp1NEg}AL16zg-l`LCZTg#6|cfE$~duG+Udz= z{I>Y|=rNU&Cd%F^otsS%Kz-(Ch?8s+vcpI@yb0}C_1lK0#%VDP6wFEY6Rh~qH!wf! z6RgSn#sdfZ2}14Zf$|n7b16GeQYTU$5lCdL*!RufugLJr&U>56;mn}~oKb-!qi zSEKh>r+S~Gw zsW4xVrX@_u2BWdd5vhJ^RSBF;exGuhu(Yx{k~eH$$S+~E0`fX+?t4!Z8u;6KWRH`t z!feGM$&yaDwP~643C%WQ9lN27NZK-)wa721ZAlmXi_G~el5yY|>Cn!FO$91XWfE;e z@?XN92|s^XRY@U`1wsN0{9B>f;KB*t)a_NcDAmpI7n}>M|D6Ba&sVG+32%r@Q1lmt zBRZ)R%@vCX^XloPKy~l$B-ELYCs>d)b+_yr2s%8xrTUPo!u&}_fW0M{-y@kFBv4At z>sKs>Q5XB_X=rX*b~6Z^p}d++gH*CgaqON?P4D+2WwQnET(JQ3WwQ;asvSt?RA)&@ zzCnxf+){Y2fiy*t{speVZ-#RhwLm8d(VegtA5W1Jz;v_kgq0TRBWEDC{*y$j$VC=R z*$khZcjc%-y&IbS9Cb$QsO&$u0E!EHF4pO7ymY?hv{O5c#~v_`f{c%k$iY;;IdggE z*COOj65u2OcNq)FLB7t{Aa#8)WPwNBKVu=q0n#g(Rl7t$u4=xH(UwU3_FZw@qamI; z1(tl+Jqg?OH>3_M&*JI|KxiBv-KvH~&&-+E$LF4P!3n$2?ySdFJH(7Vq`eA!vAtik zq!)?fP5x(TI-2|kq|*E7No!jbDdMWT@y;Y(ADB;gYT5x1yNZ-*r{9BAKz{Mc`AykX z-=#GVS|U1F!E(pwjEr#)fpvPSzrb>r_ou)k$+uudTEQWA!W2?1 zKef=Tc(`UByT+_5dZ(}`za#l;mPfMmQk3dz2h?Eevi{wea(S#qy-f!7gRR(9D;%{1 z^NbPZaq1ER`)LVuu z^J=-_=vES^$FeC{c9e!b#GDK%18PQWZ4^!{Cy$@Q;CV_v`+zP_2=8LwNTj5tcx;*Y zpcFqjR_Q0@G@yZX%`@Mxx$1s=GDBtxGf-D8LQn`8kE6)4CIB-;DrA)mBG;Z!$-OZM zRj_Tl&UKF&LhADG)4Ty0u&+d9vjBzFAjiicg8%j+k5Z^UaxU?wLg$CfASkt<`sqzLc== zkE{bmzcRGj`Ym2|qK%gF*8eZO*$6DgjUy;eia!vyHP@B_^d}wS6GOqLIi!P`1awC%WgyDnXH#evh0ylA7jdELIjtx$Gyy7kobh#AYUGuDwyhg;vLh zXw~5yc8@l_deijY&4<0jy}v|o%y8;We z`hS^rDpq?Kom{D6_$I$NPYzZM{5-!TRNiNjmg=h_;2HJZ6O*sxHWl1ktzyTTrS7ZK zL8RQiC>)vBSz-=aByD0=Tg?F<4)|{Q45u;nvm>0A| zj;*oWF;hFJbYY~tTdiz|$YfY2ZEe-h(mu2A#0bLEa8f*5Uglo;JX@eYK6kBmbK+c? z>F6;33i+X!QO&$E^F%1FY5X~#)`^uv_Yo#rQ-QS>5!-F zR6zH(J@0l8ndQwzrix{|C(;=Vi8>ArbS+{~iRcX<1EwMHW{EQs4U$R8?!D@3{wA=x zUeOr4`WEhKLIcx^P?3O%3aFJ1Ep=wQLJ zS|#3rd3?U&>=cWA*PlUQec_&rK6NKMZx~ujDEwdN_*H1FVpRas7+T<{&KTgJ%^6p+v7btFXN~kUfoV+ynzg%hJ=8VsvNgz=!_I!%TYu3 zYR5>U6*|3gD33`eDi3IjikNz6y(h3@S{C?IaPsi}@UBrCh9pKJj|?Rn`YT@*S@xCd zbA9OWuxP~+@&&N}84`hSx7)wiZG#fDQ=}<&`_msUG$o=^U2U3rU*L(R+=Fz?DJe6;@i(Jzjuq4$g%_srC(Zf7B~ycEz1@06WpOP$t4GWW!kMtu^v zf|hzBh}OPe&Jgwf)H8-i6-I;Y1&MajuWizq5s}gT?djw2JfFEN1@^3m0%mfyX(hwF z|AP_^fVK+FS_SK%vdGJ_*`ln8Da-)vQr7_6@LUNVkfBlZM5U8#`u9%p)8{-4@;5}< z%O<#JHw3&2UXd`xyU-ao$W~?J)6>_s1`r`SwfOWvvF7oxzPP>s&;zYbN{H;xJ<8BT zVo&p6d#P+JB)i{jx)L?osL0EksJy)DtH#ciIJySM(xEUJ?-NV-xy_R((tz?<=bZIl z#(eDanrg{*6Rl!jmL?}*+y8At6e_2dOt>^mP6BE|dF{4zJ3e2cVHBx2M~-ju>H@4K z{K?zxpo<=39iS`LpIV}O@lKUE@5(6cZTqgF1NOr74M=AupHHjeoLGwEr&xe`krxSm zocR`~Y}~r1&&S?UXMvNy1Lnm|(xo3~twjGpt=G0JJy6S9OPBY zj;mzO$k)zRWIDEFiEyb5V@_nuNZuiJI~LA@PUrK-$0k~@v`&2N0PJ&Ly5)-zhh|i= zTaUMyi?j$vE-^YP=8Q}7Z*r`r(#uxZ9KZnovbve9OpcTO(S-x`40sDXr@`B=xwfiSe5@rgGaJdR2Bujns0LY-iIH+XfATgrv}!gRk>a z5;E^&lAP+Gf<7N2EH^34g=T+t_Shq58Mbhj89^Q!aw_&_tOU+oHcsZl_HH$ksop7C0kh3++m>pSJAIBTTO#Z$RFQM{2? z4H;qe0h4cqqdhIhL&foJYW0W3xPUqCKom>lKNcrb4>oE{OQrLth34?_e_$a?o|dua z5~##kzC!Wu4i&Y}L0W3B2Xs-giZWev(y9!DAHwF}^zTKu+TdKK5!Uv6f}IGTi%F6o z8?0$U`S362P18&)o1FN@6{E)nFJFH@w7aaFbqF>lFqa5;TbJ7h@np=}t^i){PS5Nz z#wDSq!(&@^I=|hl&O_X`9zV%fJaGXTuFuPhe<-gFn)%CqUso(lapFQMyCs15&yu)6 zZn>`)7;tK;lLdL|*sd333eg+M`4Ju%$?=a(bwQNa8`$H7#7aA=ayCs(bFx#aDQe-V zE6FAAp~>df^LlWu_O3=ykpnWg2!GKmlQn@G2zlQK)ad?p5dYVm2=e{5?SkikeX-U3 zc3a+c{MCpoAHm#Fl;>{e)~tgTLu2!`0iH4ZzDd{6nT%-42TH3+uwp0~PM;-_xU@4> zPdjI%2;I`fTuv@G8#u2u#R17A42i3e+PNm}nU|wD`STVCw$2Z`Km*{Az@i*)RxAqK zl+`M_VD;Q%bVXdyO+OrVUVugYR31``&|?v&MwjKZjf|BmoR?Og<(NsP)wW#8yCDk= zdv7s}vmwp$MB;T#SDgmIU<%G3RM`-!$xD;p#i?S+aBAfCS~&#eCi1RopqS+*BWFm( z_ObC+fH^PwPReg+zyZT4nBqCy^7Jy!j3k&~VEtf+eMKWm?vYYSJk=Edbn zm?d=fU=jEkWk%X|FUy1hEE(2zP|Y2n>5F;`Xj`J#w!i8)nd3jDav6XeN**Kye)(KT z#|K<69hzyxAEfP@99`fN=L~yd^2NLyyFsVUHN4PnWesCWxBvt|&aTLDsBQv?jC)6H zO{rmYOhycH(TOs;9kar7@Fmjl>yA@8#YoIB*uizaFmRZQ_h%}VMevh-3x zcr?#AetD^QV{*0|!lyq}6Qpv-bNy4w7V{kGIa5gv&a9&Roo)<=Jp&n| z%dTY)Ol3h87z0QmTpw3szxiU0!|F~WDdhCEc9m70P#)4-@0^#q>V+U>SN0pGZk@zE z?@lQz0m_o&yLDV_#A(~28P-^2{lPOzxnv=fY;D~mvWnkp=f(fcx%4O(oJ*>T96zT& zf*Bn(fu12#g!~ySBM1<+Yh35|`rP~>E$AIVT6qDr@CIl!5P~#0&ixA3f)6rxq-e-3 zPTx;t)j~H0-&OxDFv|N=Tb+0*!p`3Ila<7i)fK%!xbA7>IfnkGLcz98uK~mgv(+Ild!j^|=!%}!!#nq34RmhWyy!Q5LTICk8SG-oF$Bec1jEs8r}$zm zPE5cVklR?-q?^JpE`ryaYJU*XnkI(Ev3B)$-_pnPQO8U$wm!!j-=a96?K=P7^9d}| zU6=eInl*Zcn@G)l-u@X5_@Am_NY;UmvX9~tHUS1%1Cfk1s#)fEiNI=V(i5ifs{x-6 zhx^rT{DwelmpHX2Uz*Rph zkx=_;!FEc5ng7}fs~{)42n^}9QgH&OO$8%`TKvIv^yH4Wq&^lLD||W9HYH8h`$K*w z-2h%isMDr8n$qv;;S=}3fY?L-{O#1kI00j8c@kS@L}Luq5Hi{pf={k>kl8~ub7{2= ztCaJUQgdF98=|XNe-_DQme+=i3A!aw|xV_j?(4> z@b^HA~!902I z{SEnpC#q|}s*(|73Ua?6{c}mpg-vHpd!biS#|!Rj6b>N-w21X{s-gMyUAm=xj&8#Q zz#Q84VU=KTtAzcO?Ry=)Z$nVcRRL=Av_mB}F~Hzc>5}cVl#W>spefcUrMlBVx_0QP z6{BGTaA07Hx|EA*7cb10Jpn1*u)zh_pL989;CfcgW}}Xnhj20&%75b3PiW5zd#?!3 zATp_ptwCzEVx%zM1Z#1?lWH4LS)8IbC)h^sIAle&L-H;5SaNq{(2E(7wE-!gK2QE? zesHnT(DNI7BLcJSaBtUDvM26>-TK#%OO@TB1XB|6D z2Le(@P&35BoLZJUgW<8gGI_$P2stJ)Ni9pn_-)OoPYgYg(QOk9pzp*>V_c$^Y%&UK zv@A9LoIOg`b)BbqJAss?D1aRqPK=r@!E1et+L3d2s-XfX-lIN>T>?Rc`Z5R=5^czT z`?p4avZ7T5AAV)PP0V8rC@eFGRk5C^%CAHoAWi*Xk55Lk|Q0b^PNpBg0 zIcL6oQaQU3iMc}uL_eCq*K%w3VD&WV(cjKquTUHlM`dD-L|?lw!~wwcp3=a@eJ3ib z0!syrWx(a8ptTUq8~=HRWAfIWRgze3Fxb$RGDohEYNh8p6Spoj^jd^_LnKK?2h<}T zhv>;UV(iIaBG!c5vNXgQ90=aV4es`x^P80_qEMU@?UNo1pqGBL!T6XGb?A>unwe%O z0xK4uzUs+%yt|Il(EzZAPJ+FQTVheu0_Hu z2T{GA+;I2teFI#Z4~kz@y4sq(v>ZDzhXlqKpT&c!6<+_xx>?g`rqtfvrbF~`3S0Bf zR~+HX+9$7We0)aU)Bg+X@+0G>_bstqhW+IH6l3o3i}6n9qaOIX&xYrzA6fZD?Ik^q z)z#5$=!2rZvo? zKmo=-(E6(ol&5dtyNKdNhNl!#&6n4D?|hni^(n(%pmiGsQNnTLhM zb`ln@$~+fPPt+ zJ=3-NA5NbP$1+hH+AK8s?Dc0X_kv#ja7FS=W00>Nqz$?GKmQX)$3peL(Z z-H6LWYQx+Z2zXNES&M2a0iO4zNd{b5P5s3Ub4 zk!0;?XnqVBS026xFZmq=qJ~n*F!WD|NU{EAFX0S)ZLY*eDo30)^pO?=eU3p_e;Y?+ z%GQ{BsEO69&iL_h?6gSY!Sb)D7Fs+E){$FGGsR;ALt$pZ?p|<5r&uZ8%*nq6m0g~n z6$+LVt&<(OXfurfKRrI6&u9vraC(V$b&s{mLnqpt96`R6V-9Q~(PO7*hWl$zB!lx+ z@k(k!+2pxUe|fJ^!!1Xjf(7w0M;uBI16TU3wl->{ixh!HHUXa@nqkcQw|rzDQ*ap5 zg|j;-@vvX-_aL|&kTQ-QiiOpGZE2lTgiemUqib{oaqBAppyy7|YGfjojE11pt*^MD z%h7N(?WVWmS~-=X=XYUC*kxB036GYN?K<&GGo*{$szv*X4KooU5E%jPNEFHYYfcK% zYoy5yE{9UImMLlrYD;MobXK?cbPqaveGA~!gmLA`^<0M)m?5fVGNplPg>@;Y)aX52 z6!zhN`{8r|YMR3bM*=PXC>Qio;9R^;FsuDkm27WaW zNO(bmeqaj;3LAd{N#9%-%CB(zb+Zs*vy2+7I7!?GY5u5LB{{%$&-xn}cmu9>O;bi7 zm>B?Mc*+B|)@NJS+3dwtHr})(T~u^J4)aIPbOZ`^EnDf%d?$>s1_9-7E1Xgqh*&MQ zaiXX*fT1T(F^LGwrAKEVSx(-BAiTVe#lE74#W)_#o4J1nXmhV|R|FHdg(=AO79%%L zT)OY|>Jz7M?=XM?)EuV)PA?~i8dG`YYRLKp%({95hw+Y+4v9Jwa(G5SR+!06&h1=pqFJGSZd~Vn3mEQEt^zlYZYJ zcOU|d)SeP!n&GOTD>D?8pIFO?`%5o0C?hW3O5|Uk3CQq*rpahqH8uKU zg{R`VO%2B-L7%U~-&$i~bm3r1C!!n92T?yrUJpC3LB|^_cU7X+MvBZ$%+h_vGt0^m z0F6IUU=8$jwH@19bal4!UrCqWHf*X|VNQwdC805kq!@DzjvPg|sZF}~7!RS`_-94q zJ_-yo1->XXA8&ON=%V&npM%a^UO4+0F_Qr;q}E?#+8kDArWL%w_ojhV>j>YJo|@YTE!(l86x6+TiWK+7EjJ{50M8`?F&mnmg%3NO8V$T6exSJc?Lyt~#QDPP zv5H+;co9W`?8O`L_*z`q7rkI%92W^=F*bw{k2gP5q~}iLFnowZ#96uTkA3}>%dqb6 zFRu@YWC0}5wptMOCCOSe+(MJ;Q|tn`O{aiQUX%5f=NpY;;kWO@#Y@suo=Unk0Ok{{ z^!U}I1&23Q{C!CL5QVu6?UM%1^2NWM2&T5@V5h2`I1i(CSkb99(i}Kmg;$<2|b2glkmR zbQd(QRic=~Mamv_G5r$_K}+_1)B$|6ToCC1pYy>(gI{_UxQJ^L`-f)1M37CvF`>th z<22}yjKT`G{gxqWear6rUnOg~mIl535Zvm&+8R zt&qXb{<`wuk*L4D%YuwyD?ep5l61SZ+Jg0X@yrRdhR{3!~ zrX5as&B61pIA0@PzJLAq8j|j(eM)nSwOVD_ zSx?#leW$mML(!MTY|H7cB>aTERjH)@U$7OuWy^)6#TKIl>X}^B`MHPAPfTgne*OM3 z=XBn@o;#ZP<-9t;-25`3!-}iSN>1JhP+Z=2ba0`%#X2nI*_PE|g=TX2(&DwodzyW8 zYkypL<|e0~eWdI36FcW9ccxp@tUPi%QR;|3bC6lMILx(&`a`t-y z$zI#QZrA~*Tu>H&iTDg>w19l>4WcVv%;mCvm?G#~k0^MF?HUa^JSkh*9eeq9M&?U2B;fDO*#TFJ1GyIN~Vpzp6Md)VE?5S$H@?~ z;Vx8wb}qTv3?Lz&{1V=|yKO;X#4kF6i51Us{c=dI}RLPmpAXqzkKz^ zX!>4I1B?yc}RhG885>( zWl%y#L0S)M(s)ByTmM!rzLl)I5=5?s7%YB>&{XT(u0PbaBDKz&^|%!n;`!25dS$&^(xB2Rr(328qm{23}_6U~inCRucdp_;lzZFK%1A#v#k zClH@-qqtjL!_v|s$ssA0o_LOs3&P0T|3p~3RK2{>SZNu?u%i=H>b;Yb<%H_BdAa+? zsaB5_>Qu=gq(ZaZhRIX|RRgW177>yFJ@SOR!Yn~YWvwJyoQx`RG$Lq3(2A1ed&`OJ zRbiTzHINb03djkN?!%wVs!po1?Q1hk;NKq~{u~YnLiwsqQr`$`m2j^MG+m~p|9GhT z_Z{kwR7o*o?XUk_eOt~XN3Xkq_cRqEM}T}#u50Ye3EdGQ-!17N=$q&%#dkoLZpB|Mgwt>Eyr7!e6bx8)*JXA*hqO&=Y1P_ z`_s`YYU2azV?etcy%{rTgWWm-5(_FbbQb^gQ)iG(y4oaI5m0U;_`jw}`R{(|4~Ivh zq-_tx^THSpKq99@lX&vI`bl7kF<{5?WRR#{Zm;GeoWrDC!`$!aL~g@|i5m7baFY*;D=-anrX0I`p*-0uPdSSP z=N?U;lD!0XMzvn4w>x*6y{T;-UBq;eUApf<@-A)HzIl`uTb2Z3mUG_hAJ#$9-k zcr&|_A)<;-&BJZIF8IR6WX(c9OpoD13 z>x&z)5*jZuOCLE>5E&#GP%!-y=mCzZ7W>=D+1WjcpwUALun-^5HA#K~HfI#>xCGO? z<`19N;CE>DHCkl!s^p0(>#c)~#`R#d1LotK@b4cvp4?TRWI7~`{3R~-cNjYVZ(VRo zRDZ?4_qi|6nF$=om5Y4TDbd}A$G_!g(B?{}RxmbEhM-$Uumj@wcGF83YgqlC&y-Yv zHFzKwLScb?!0yM|>SCb%F&|`@ffa|2}x~qXO+D$+FWM2cVa3iUAB>b{7CoH`T;Kmt(`ub=vSS&}9!{~^Ntg04? zIAu$gF{(Q7hHdDU#FKlVOU?&)C`^>m$Xwa(uY6Goh_#6n=A#a&j4)P$RS^}IWM&aM zg*Mh43Z9ifW0-_>^up1bbGXRyLOXswVi67AoLB@p630rekP! z{6+Ms1qvKqzl#ayYved~K+}^^Mi20D9sI4i zQVvA7xe&(pN{lnSf{EA5m+8(BVmBse$DQcfgp&Ukxy`C~E3XTWK>Z zyKaQEj!5%LgPk4L-eTIWonRUw=Nlo8!p4n~GqL&Vf1^2kr?Jo{R;J!f__5sUx`(Ue zOR^}kVTb5D2ZJU)9)q0yCchVYyx!cOT8*KfW||?+q=nlz^@O6cA`1-UkXzGu-`g?( z1oMA=Uc)rs%rmWvmTgdGD4rrNpRR7!L6OY|S5_cfWJ#QhBxk*hO|@m=9)=R*E5EO* zSugFI`I-%|P+zU|S(e_`jlx+KS7g<>TDpzGk;yYHBR+VT29seOY6?4prAN)Qo+caf zV{Vh|svu=EM>a6ZV~ZS9S_#Pq2NwV?7+-xYitdv!Oftbp0We37ou;{4d69g2J3f!D5=k$X>JnM}1 zuHQ!5EsqO8YE*@FS~R8Ns@u&wqL^Nxd+CHlzN+{!!{8OKd!_m2B)8ig61uYhV_s79 zB?zH<2pci>?f__0?~DEg)8`G|VEvob{mzfuE2o`~i!R?)PVV!r_-R?lEo?p6$SUs( zUQre;gX#mft#{ia^=Qi}27bluTQWMq*c2lUk~7rr3q)l5ccM8P+SOGh zJ2?&MBb~(#N|tdC^`cnr3^r2$)S#q)DdU4@@53}9o>g9B#phZmIT<30jbHQdKFGjF zYC5w3p38N%H$?V-3$JTE&nYMJ74r&&hq(P+ig@yZ$D`0zg~<89feoth(_n`;?zQWL z*cY12VR=ND8jJ)4F`WzbB?hnM+xgU%f|yW#Obe$mMT%asDW-I?H~>xhjGMUQqGc(_ zNUmY`mV4#k9`+bqL(7UTruyQAB5-+QTo>C z^En#|7=0D%R!x;-En|hs{3xr2u)l9{_?uxm-%u+r6qKH( zL!b(kivYwvsl}0dbfvegRUxw?%Sb~*ZHfz%n0res8Xmf1t_2&jbxs+HP8p8Fdl}rQ z!eW_F(*o!e;iQgc<&h~QVe9SDNu-q0-Jpbmw+QbPH(^TYbg_S^f3jn8f)!zMyulF5 z*F0B2^7V?kEJMen1qx^@LrVA!2o1{ayBfO5JOH81%YY_Lh;vISq5jZ;w3eC>;Iw_K%~y9%AuuwmXf~Mzkf%c6PWjD}QhaUc)cn!d z?*i;C7H8bwPn_T1%R7wl{>qk_88%A_Vll6KK(G(CTG(;dBJaT=H&BoM#UQr_ZcjG1 z1iJ!Piz&xXB5-;NVZ8%Wka}_mjUr}{Rk-i{drA;0QLd|3%v|2@7rPE&uk8aiKkpx$ z9@=d-z0{bZ!>!LMw~B%L==!h zA3SP>vG-JY#3i`{G;hjOjgq#U?rV$_#n% zja}94WhGwLs+6rv*1%azWR;Ue36fZ(udRcXqtkaFRP9dqTd}@%6r`~Q==RF)u3j6PCcIDC+@dwBAq^j>#+)JVv z0)ig8S>kWEhcQ_I*LT#|F?LMvT)y|hg#9aKQ^AWN^TDBG=mW43c%!(XI;))J3ZE-u z`Z}+i%Pn&&cFUOoWmXMV2?SNxxXpKK@c2bRxh7Y>AL(vNr7Z$2HRo@nE^sZja0&G% zs-ReB$#8dedz9WC=Vv`%Mhl79ICT6gtm9WZqR|tur~?AP5*gEmNU7P$sx*LcX5d+I zXBgKuzXS*`atlp)pCl5S5(6It@TWk5O6V5NM4A|*Qf~{WxTHF`)&mZ$wPItlUrbiX zpu{f<>3AeUbs^L(9MiN7ZHbzeB`)l5_^G2@ePrrGWUKr}ahDgZ;hz$+BS=N5A?kuq ziv-Y5U)}=15d)n?W+ziW<$I89J!TfFNKzd0k?S~;` zkbMZKiu!I34Zs};Y5{+6!t{Pr zJ1AAa4)G}U+N(C3xPcQ0o4A695Iz#Pzm6CjGp-6Hu#cHElB5P8fc0k@+x^hcbRQ9)kr^P%1l4H-V zq#NsI!kl$LM}1JGtDK%x9sje@As6`I-XNsZrRatH;FH*a>?2jM{={q?!W zWrm1CD2WwIhh$`Nd$Mam>x#ao80 zZ2wz{|3M)8IX)2|4U1zr07wI!Kdaewg9ZqDh}O72R2I1Z9G|P!6a>GY@N|h(;VE)S zzp5e%sgLk_@qW19#TjlesR>nz1N3#nsQRHj_AkUa!bs+)gA5+9PT$?93H>zrer)Yw zrUU>6WQ4cDfO^;R*7~t3D#I_+G)z4+Ha6qd)3}$lA0ssjU6UH zEG_i%$izrL6t|!8)-5Zca;+Oc1!S!{$UqM#_oGyux}%Cd{$EP<{}QUb)b9)~tGsUd zee^v@Ipg@(eBe{#SLZ2N_4WHr-nLRVLP*GUJu0Kk-N#lH@z;D*0hi`?7~PN?#h)gq zjT%0|i0uo*ctn60cNVjO8HnA7U$9ulVG&>NIp46O&|qrk-QTbLLAFLH`(8&GgZ;4x z8k?h}v|Q*Rb{u$pfdYc~hB-d;D5QJYDR|?o3Cvu4CSh$KffSi9d?W-t3I^M|DffH= zFJ%u>seaTcwf%MtFOvq#QL(_94;(woB-=^Zz;KN7-MxU+KHi9!p2eycqCa1-WVfmK zczdtNB6^5@^m!MQeOav>&IvL1B9|Kha^8_6+vEtW|1|z?$ zfBVf7x&*_JUu}<7_v!W6YJABtJRbW(hu!gAhywNR`}d>tpLha+zU#V2=M(%_U0)p) z*VAQ7qi`nIJrWGq0Ym|9 z%RwL}v0rpx5+o_S2 z7}#xczxmb&2Kz;Knst<3{@JHx{~IBSjK}xBO}hu$Np>!b zj45Z#;(Jm{2yJIRRC69~$;E)@l&rx`@2>ZU#t&w@8zz#dLvYLoEwIpWf>ZZvKf3ob z|3~EjT*W~WDl(JS4I^68xQiycr#5BlGI{%x5L6{DX zOv6OIh|PTX;=*hPbl)4ozy7m0by}6r2uja}x2CkBq3^a{>9Xx@NWFk+Cy4eB9de*% zNT#jCP8qUJ*5O`)dn7$r?CkCCf8CTjreAhf)lN=h7RX>emHd5_z*fw#pj$rm@*A^QEZ(iwJzHiqSd4h?waQ+g7n19*OhogxgxuG{qx75 zO2$42c%55Ih->iKFg5kbmu5-kAmpA#r7v1vG72kc{K3{+Oo0hv!q(;da0qlTADE@t ztBl_3=V{drM(rs}fjNoj*T@MR+>1ui%!G$?^lg@POnBf?qp^zla~g>spdVOPO`F@G zTsJ|nNraeyqLZK7w5xfby8WIbsND&wZ;=DZa~e&I`Sx3bB&h{G$rQF?gWwKK=z7BC zfHD(1vAA71Rb>g1@7cPrx;!33VYH<|V2@U4h1UYK`CjXxGATv)NyI1;m^vK53;R*j zCDq49YTVMZJ-Gg z-kB2F#Lm*OgiVdLW-M-aJd6Hhtm#cT z*w}7eieOb};Lde%vh%j>343rKUutZ=5vwh6*+J>TeP60iE>)d$pV4)(>1EzC6;jpq z^M+g|OsE5C#l%0}Upv7N9PvU0DG=I|C1%z+$WRQY(1p_W>hm)M_sy{lG!vQVp-9O9jY_P>|>Ryz1sXJFA zcPDJxk_|7rjP@D)GJ!__Qd3>ygcT2q|Cc1BHFherZY2gun z2g~Ox1>4vZ1IdB7G<|p@I;{vjUP~Qn*VFa#n|rpYTEVliu`vbz`E))* zScCM1Mg~Ch-Re@pFg;p0FgXC)Ck(6Gu>AG7@>?UCQ`#X1k)E6|$)T_ALlQG=HjX;C zX(`6u?eCrWY}K}tdXi42rp$IC@q!jNsJrH81iz>P5eqdYy79~7%7ClamyY}LGcYKM z(@eaWS_L<^$~k4SMCYkUI7KKlKTl(Ay>9OMviT2gheNB)khZ}@|H+s{P99u{!o~LF zs99AO_lAtIYD6m|al2NjgljkSZfDci9!#UpV};|7O7GGkjDilU(MXxMX>^%q(r5$? ze!zgC_vBj|OawAg5Xd5Y*EKtwBq)~Td1^7Vr`c^p$=$`voCSqEx8!;2EA^11$MG~j zf40hBWd>lBQ!4!U-|{1?UWDv~ndXVg@sZ=#wl0nCZP9oWCu7y8+icEJpM=#j&RHq1 z(bxFMD~z+K%2DebSk2W9bU|DWp`&_&y0ZysEdx6!HNA>~`O2vuiwbT;7a%h8TclYY z16T+BT;0FS-%x9E?fGoh0W2fc)u=k}Zq$eR{QfS5tg>mU_MnF?zTcSkX5yu3oe5Xa z82B5V7?CBMc0`48E%{;UYRI}#Ea)px26fW|kKkKO*^YqgGPL!*6r{PX8};1nuWCdpg!dG#pu z*^nuElx;39OOGQU!EvGAm&`F0;;Qjw?crK6C#7iR0Q3lwzH?DIS9q@U zxFi1ivOmTzR*iMynun}Dg%%jcgox&zr%hsMoK-7j>0Ru-o}^nJ&ZMdQ7@B&gTFv79 z%<(h8SO$@eR=Dj#%x#Et>^mUkI)9)sk_m#g-+Ruv*v~ElLe}01vAhEce+o3*aO~~p zK`NJ(bBqm+8$X0q2f6M2`Vcawv(#A{<5+`(4a^t|1JYon+pS7C@&8ix8IXU?K+c3AC}tAp)pFtgWQ)Dz?zPOd?|qzx^5rqf5{7w@>#~B3qO>f&``g;00XmhDdo+=a z(*}dHZ0qBc*=n$i!l0XqF^l6#glz+Ud;_}{4G@=Gzi63#Ni^@Q*{vEQuu(O~h8*RR zHCX-=K%|p{)646{IGu#n`|U?;H0a|V-w7@;$>H_KL%ScNSvo^@;uj}{11Zf-;EHGf zEl8ur6V7x+l0|$DZ>~nTqRlp|t?Yy~_J=LvZ!bVanb4@yF~RBQP=x(YGg=o=-nFO0 zXPB9b{QSZnitrPKhJ*hShgg)=xy$Zq$aor9ZSr*;jC)iozQ<-qEHm1%@*tsG3VOMp zqjijE>_es!nUDf>D-8MME8WrJOUaSyOF`6J`3dk#^cKVZ+;ybu>@2GUsAg~-kKK+c zA5(_bw3x(Q5r`1R#5LJsU{>w2lI(N#$5Or=tWwUa-ZDD*Oh1f%AMnLz_r1Kz>z-cc zlmd&@h#vIVezQ<9Aep)1La`_rbTo=y@H(3y! zS*YCi{a^7&{8nmezP}vdj;xUrsUTbZ95}N9N)paOXI2Yb z&1*~>Pmi2ekS@8UTJ21vbkT3%q~(FJHmWw~UdaPPa)%dSzDfcS@yb9Qg)8AGeQZvk z;DF~_EFWHqg1pF zc|Nm@4{Uke+H1Ig$+~IAE25pxw*WCk*1mSuMULlNql`s!$&)^U_6kJgGMH&}wSW); z#^%;m1hG=?!I?cTTQ0W=>#;1$2|=oi)n00|V1N$u06%60^(;keHMVuKqRI^ydx_LS zsm778d06=U31Yr7hx)1YYCA|BPZM{TiUGSt;*;_cV|%X zH~Kzb)j*M02pZ4bY{^so&rg3Vitk7EGctkL=@^Qki>V+EooR#3`w^p& zy1WREtsP)pUiX4d3e@-Jt&jUu-)Hg>cFyw!TAr< zH75$6M-k*J{iLPT6w3j5+;udF*H|f3iljShRYpDWTE;nKe|C-;eeI|Ws!;nm_oxy{ z%}!c@Z=kpUPD&~gja1ZfsQOgR((fja{p-?r7d2^l3(r*2PxYO+2%02@aaJ=biFmFIO-;6Ge!zZ* zUPXl>=T0@X%-@3sMgHKk?moI`{fTa{j9f0z)GJB0{9!wIhdoSG(s4S16 zFW9S4NG*$`*4bYwq#}=Ad0YpPe)r{wEV8{#Yg&{J`e_9C45 zulV&7hhC|xlkIP_W>ow?mE5nO+E7>Fb>m*`o1bjhw3s|T(aIhAiMz{i0u_Fisl|^@ z=v&~sS5_m$ZVg^UtwqYxSvS~ou7;O*j{vkcbaz}n6>_5mXIk4OOqJ`eR>dCjb*1+=Ep_x#+ySpQ++6kJ?)P0Ql2LA4VQc@r-n0#tIgoRw`rdIRl%k-IB z!(zIIff|2J{44liNM}A_`Ee`Hu1$xi4gmRGz=Ys5FrYIwP%qZ=S#IbKmN+WPjVh4N zlZ99#$zb8+30IZ1`nQ2o>J)9jY5Q~U`Z za&i?6vL*EGA09fdX%^h!!F(@6R!dtD^>rRSCKqn50!90uNsOh46BiqnY;DTovNuv3 z^K2%&p=K@DuNL3&yD_y*@grcc$k)J9orwZt9lU6A2o^GqpT|Q4pT<=svINkL59xv}2qgu4v zbwXM)bmxIdbB&>UyefIO=Fi{lZaXOBS%z&D<$Q1(Fv+mIjKDS3UeUD0WBrMbCOr+J>q&bvBJw0v?LiV735Qv)ZnGBEsy{F zBlWfWa(L(SCg60`=13-;LZ2+5>XvKmLqe}_!x4>kqfDsn+hTg^Qd!ZrX0k>d>|#Rn zS-NA2?a~I7wN7QnnF@O%zW%PVl6n$RER2Rt!q^WeK<;3*SlDbBVZuf9jAbOyd_=8- z1@~v>mt{8G8?U64Dm>tt3-2J%x7@Y;V!0=q#kT8Z|JFV>kecvhH`bUctqj98=*4UZRYz30dH(^^ljbonqr#R!<@20w~ zP-8MDJs*cXTdN_xR_PgK6k_tA^Sv^SO$ z09ijNR2(Wb%nDZoN8vDt>PLx;nD zqt5l7=irUV$p3S9;$wgKdJj^UnZHY;eta~6JQ{Y7aB59@;#DOc>#f5dZVeYkqmeYh z1o-@)M9iWQB6=Rzp}?4J^BV)hc;q^5&p6G}$9o5&N!h}>7#r&zf9}CwB(!okG75qF zCqpkf9mb5ZJr(jGx$av{TJqlB@jrhtnK#Gr<1d7J^k8mU`lk`=P;jHIDNMEc8uN!8 z&c<39l~LGu#L(anUe3CXVx`sZZ?tlYh1)tdty19(UK#&kN7}90B`F*XB{tLVI}mS$m6pKAT5rptV?Uv-r+v5S*TH;aBuD%yIT!lRmg0&i`t z`aV`ie}OHoLFT;&9Pc^x*|7?b)5y+$D4!1 zI*in=j1nXufQqOHg(BJYUKr)qo(s_BQS;K>xtQR+tN05lG0Jc_tr!KrdopS*jQ3dT zbBpfl;3gS(GdLo;lv0X=Vsm@=?scZ=S%^0Mht)R^(| zVe4u4rCbez1-ofRB-R4!@AXIjsUK&7cp9uMD|Nac$?~(@(@JaIyMmyt0*vFN<$~HM zW`AhR$EjTFoBP#ey!OiEyC6&5!>N$H{3C}29N!1&1IfDrfDqk*-rB)}TF%Wc1JlE6 zAb-UKR1XD}3uLO#HF`Q67mxhjF?+a0MEBKaH@r1?Tf9$M>Z3Z;s=M`%prYjiyVjf^3&MU`g~F+4;JiYa{Q*vX;zb&iko~) ztS=Ii!PaWDqefvI_C+HA5j4UzZCPe47$56+wP-#$yVLk%o$fX~z}>^_#q9blRRYAt z@u`Lzz_n)q|D1bZ+Q0APo!bfH9Cn{`OvMQrY8 z>r47e9*we0W{G}|>ify@uO5@yt!20-CFAM1n>%byMR#mk8e2&qEO)VkRl%Y-qtz3T zbe}+95w2^m)`@zh#V`KH-xi{_ILHa=cp+s20a6`_u3gP*B3?3w^%h;OD0R7MOT^XQ zpgd{Qi2f()0N(3ASH5(!MilYiF*O=?NJoT= zYm@Dknf=c+1HT0kpE!RK<0MXUi6$WRI;*Qoq*P&BVsT%CGnE%nS$`J%K7e68qk+0_ zAj0lMJ<(BUHlPPC*Fins#YV-{tBXcxoxbROpGGvCnp)!;)83TDBndtO&8Y-*4FnTN zM?zLfA6=5khnHJZC=mrt26iVzvtn)ke)2(?L%Ci&D_N9=*O%Ez+A&kU)Yz|B3p=nd_!d~G>F{+93| zW)^?Qx- zpJC&jrCNxBc*5_S#^wG2>Dv+nT)0{|2UAnm-vw&D)7;v0fH3hp)&2Qs3AQEIR2B%u zX&%`&=7t%WFU`mR)4K?EPT^ij?apNqyE$II5v|KUweyhCGa_ih@#e3f1+1dq2HVpS zCbFJMuXVx4^d1NGIk-z4OK=&!NQ-47+N`=BRXa=iOF{~O=D5K}B#(vJoz|K`3~x6T zz9r$$C9rdW&x{E$$5<%up;a8pcsBYE;Lt9sYpkl zZcqrR$3F41iXXuG30YbO88@;(YOv=vf6ADm7q$R?t$vAUZ(fy(;BPr*`pYhz61+iZ zZlbt4fpQ^3c9FL(SDj`C6$`7$;*pp(%oHn614PP3R5uKnco@}A`gulTGR8BR+#)K! zxHT+oA-fHUi(O$L!s8dTuRna?%7nJixt0T8+<>;8#R4tg4$2jH@?W9UL^ip~ z|AE(TQPO5v!^yrdBbL&RRreQ%ns4x1U+>FtSZ;yy#Y&t?&l4k~CzbK3f+^_vRjq%$ z2(3pb66eKn`t=S8^dfJ(%eR6Xpqsd13=Rm%Bc>taLsi?{e=|1U$Uw!rWyCM+gnwfq0Z1+4Er`tu`i-KS&2 z`mlotDv9h!$E2$5{<3NG+*5M{G{^aKd~9!cAOEiiPZ>N2L~>Q1zh?^G_$8G^28D)7 zqnnP0ie&0mGDb2eJ&>V+EU3eC_5rq}m{1sIcfwTlXzbJ)Gqt1M*u;*==ToF--%2>h z;zmiBUo6r&B`EpRnRd=xFgJ;oS(h@r?RIfPbX1zZy{6!a5<~JebYBV6@BS|_uMaOK z6(JEv$Xv?QAY9rXTY;8TQ}&{awI@p0y^7WH=zOK>HO(2B%>v1t;e^*%bnmBS$m6Xg znW>-&*U{z>UrEOSh$l{?JvzyUyb9to5>B?%-0V0CsRL>D0LBZtqm!|I6*2uI_JjNzuHU0^csLq zun|{aER62Celum`3?~Ac!XRmsa(7^)`4$Bgvi90*PAB)~B~eq<01W>Fy`1(Mgz)eM zQn)$*Qfvs%BbiYvb^FLP$LmR%*;Wo&_f?4gNIj$cc>}XtFt@9nU%>C#Kz3Pooc#xo zI@u_HwI?njQ)*4?_*Wp^CkwGT#E)3U6Vfs=PUt-coV`D~A2ltQKOQr5{`@^L(Gy%I z-d<7~oW?s8S!Ny2)Xf^MLOOhPt8srl@0;cG26}iY7@bKP-IAM2{zhaIRp0%g)WU;e z@ay`PS~@o=n?$@2pPkVnZg)WjqN*&bK95=jA8ysfd%i9~W!U@k*aLhVkv;~*4gPdf zvA9zumG`2Sd5cyv2nX|s%;U_mO-$Jg8D+dwSn6@rL%bJ^;4{VJN;-?%GJYA|4Is8~ zqnJdhpsJ^jUWT5@I1!UH=G*#b(1#@atdp>7XN&6+E$*nz{t*;X) zLuPxydD0aXKSJYm6WAgjKnXYnf5`{*19HIf1ps-Drnlo{m2d%An2_=$?IK6|ZN zt%45+-_Whss&tgA1qv{-3DEyUV2ghi`O0hg$_MT%0FcWiYq_JxElAutLzm||)(15j z@pwUwZ7#ynHoFCbn)1Fvs2vR)ZJwEv*7(U6#Uok~0?{~Xvk;vRXI9q^eb8^=?bL~P zy1s(x3jrpefJq0gn*?M0lJ35xKHGB^8;_F#E{FN6HD0FD*~lOQ%^XOiKk-b57mZld zXr9Eb=Zd&L5hl&7kxLQJ9E zE(<&CUcHZ8U_|iQ=vJb!X|Gs!6g$Tt&ls&psf`lI(x*PQy$_Uy_rlD+9{bx;Igll! zk9O^;KY%C3h?-jeNc67EZY(tIQI*&?rohF0C93Q4Y<=>xe{K`2kgi!2p)BW@T}*7c_bJ=I}u?=Lu2EWkgpM9pfG_g!A*tZ-piLND_tlIfb%=ycM>JjiA zg)ea`iSfAjjm_&~_(3a|LF{I2O;g!hoYbT@RS7ts7h^&0)`!#hg{6n?I2duZS%pI- z+u_EcLHe!mFyy*>%Y(>OZO4C}ttEsny(9F!Ai2vSZfh6ifcnGIdnTitpx8X5>`^|A z3_+vzdYET4LUb2#6#-qFg!ffI^f6JqxR7Ok%dWXoHp6#9xsmRWiaE{Zxyc4{NMHY& z2T?b%(aiYeK&scQv{f*MS1?+Hem>L|znzG>E&?`D+RrUaKg?^xC*rE=(5FOOK6f&q3~qokcRC z!7mk9rRA=4f_zTpLmmyh;9Lm^1xvyF~Qchwdm861je(N>?DNYX$G zwt+jE*Q5PuC|DqM`|!j&+lAu5p2fpn9GrqbEc)UU!Bb@BVS z9hUypiFDW-^%W7^b*Qj*sqMgqE8=YFQ|Q{iH@4a|ZI~j5b^V`@D2Hs#ljZkUL3kL0 z>#i4JU0R!Tn2r+5b2mz7X90dhVHNq=T^*exrYw1Lm)}`)86C*sHwqt*r*{c>R}OH2 z&O-&tKhBRU=g3{~LLiq-6^>C?OP)VB2hE3W>NupnANC}$z9L*{>1x6G!^FV(qGC5M z|ESu$)#x|*11}a!VU1sB(v*=i0cz&>+f^?=F&m#7E^p-d5rLZPqRh@MOBEAWszQAC zjl#ho#Zv;8?SS#NP(9=|yB|)!ALdY6qVlt(=EwOPZ^OfOSS~T~dB_@XmzfwXQ!EEc z$d?Snu@JZgk0mWFr^H7JzStO!RF;wH-U9=K2E036J8IW#L9WyHa0yd93sC&8ZxU7{ zLtE4Rg^l{|wPEQU`ecifV)MEl)Xo0w+K=2((7&!3py{YR&WKj|vGp`U%TcCfL>GYD zohlw(nIXkE(^Yhn`0Uw@$JqRbC`xW`&JH45-lbq&(?w9rhJv`k>g9!%gOcifk}gwwG1ftY6fPk-*P6>j$00B#BtI9cc>0r5EDSD>S>A+7=h{zgiP zsH=;LLs9!zCdAC(LCs2v^3ig%7^UJ&#MganEny<&%lLhM+{Z~N8TkkFsTcY@_}`_J zw|=9{3SMlbI=lqX5lp{-9)AMF>8E9+kIAAKU@OdA=7>stF3hKHniKHkUHO%gc?ZMu z$hdu#lr}Dt^TNX}NC0XY4Vy+J3N?aD*$apNfPq2$0W76)N37V%7eQ$)N=3+v$%5WV~M3MiWC0 zn|GQjd#Im*N=-NdKUgBG%!Wc`)hs$Kg&aTS!$z@rE1FvGM8&1lpE)k9ytKro6c%OM z7-cFIp+x2L6DPV$&dtE#>z@?)R}~*Un-v?u35y3R1z;#;CK;cmAGva7AiEhl5xOsi zw8^fXJi=ig&I5?Nn=i#*L7pvL)ud`~0ydA=sbIgivzTfdU++XLnjZUvGn2P{uhsPZ zyF4zAf-|!Bq7DOdm+qnq+2%^dQl0$x*i|S>!K<)UIHqh!AZMCe$*+VhN|&(g^Ajuu zkxBc47JLr{(f+EXNF}DkQC_F;y$vBFyo9}d7fs0sdjRy5LCs4LgF%Mj^SgfNNgQ!F z0?bSQmkiS!2iD{dG3sT=He0fG16Zn_qug2Ip}1%a4(mpSBA5s7>MV>d%fl7566a&6 zcWCVze6I`uSQN+qokE69wPcey&IE7xkiQa%rK=R0D<0Smw*f|zV2#oDG6+XXV{1f?ep6BSi`WtU3UW3qp`A{ZyDdiR-1iFT7Lm;P+oc66W zGSyE{TTk;cWdz~;)0)IZmhi?1AA44gdcj7LAnNkvYbA%hGx29U8U56y6h<&-Uz;Tf z#tk5orhJ|xC}A0!$c4nwvsfdZ?1My1O*Tg$P9fe4!%1U+@mF^t#~95&p$~;i>WBRO zmRV>FCy27&MX*CkV)IGL$G?PnVZcml4C^Mkb~_!IQiNml-n8mPb!|s;L_z?*8%#5o1OK zUA~pv6lEmQx3DF^1xvy<_WWo2Bnf%+znI^iSrWnA>ettQu4Zrq6A8W zK(+OrwC|Sj6?1wQmYSG|lVl{<%t1;js_n0eMYxkJq2TBX6raU44CBB!PYHG)6cf|W zVn3tXrQn^o@zPlH5e^Vrur&s%GDzCi zPFf>^WS3Grv*xfiAz$3UG8sYnM<#vlgu@KeVB!>i4IuOi50-45|8)+BEoiZnTRe(1 zgEXp6J&h;2lv_dCX7QY|^M@N3$KW6wR!$tcQwnmR2UkXpfb2?J(S_2$Yw&fAg0c&5 ztQPNwWaG|qZyK?ypODCvH3`4al^O+R90fPlJ)nm6-T>~tm#<|9aT2d!@e23)udMt$ zTkeOj(g1{g;yEi7bHB!0T~PK1{)~eOXTrmnu^E_hTapBeAe4K>16C7f1PkAQ=zImn zJ-P|r=7g0t*omA&5tLRJDn(FQ!wS=Wo9ZV1zVsflK~`(jjg^aH1h+}BHPeM&*0bsW zH-)QPx#%c!5#{RId-*Hg(k11@CD6OVn12+0wi`Sca+9>WkfZ~xF2(*SJZfxrRMqfc z4_$=WQ~u4}VP*yh?X+N!cTT_{B(Bx-F~qYc`SVRhBU;(JBev=)?21Jcwfrh&7PiFj z6|0vk%~Hj@3bn1jab4Zdukv?UqVMkfPTx*f*p(dc-A|b*Hydedr|bo1E~>db^!}bA zI(zJ=Vw}KTVMlS1VB-7D&O6b>UH7-o%*jpa%RP9K46GlT3Vf3D%eB)n8`xECcUap4 z%YHjGa^rTYPoik--9OZfC3;L ztoaQ<15(Qo+tSdkci<=vK*FyLdc|eo#^2#By!3+9)S+gJbZurSbQdSwME?XjB4sQ za3gxcTDih9@+i$jRws-cXoad=#z%>P;G$7xqjgj$IoSQvfk`;9x_2G`qY9sj0<8jY z18Ip*&|3|{PN*@ox$q0QXb)&K>d@$&lF!2VvU9r`Ymnm6RkOC z9BNR#ei3UcB`3vOO_XilZzm|Md)%t`fgFayEs-bll8Q8-QZ0#wS2oWqF3U|gmTnPm zg64`6>0g2^^f`R=2g@}j5g2H@Hqw?P$92h7lOJ@spH)j`jHZvC&Rv$+PbtM4w2dMuR*v?|=O8U-( zM}&gH`ETm`RTS7o0h)^ZpC-tgv6Z6Vo0vz2f+G1JMhD;q1?Z3eAsxJ>08IpF2R|u5 zlm81KQ+x-~zygZ@2^jqYbb-AUp~?Q6!jQ}a1?BDRX31vl?CfFX#{K`2*?;u@3rJFi z#-njy{IqBU|Z$?d~e)87WLrr{{qJU z0hYo0%Fs0bqM)g~1J_^%m4EB~zXuf7|LE{0u(b*_#s9@B0hj(K3#?<1HW?2EHIfVk zh5J8Pmf&5L|7;6I^}Q{3FrDgu>Q(v&AOlnhxGa{(S^N{U4T%t*ih5 delta 95336 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

Dc>)dW%SpRGQ1X3-ZJsLop_hGjLZs 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�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 a&XkD?0AT$aE;q=80u&8gjMTdw!2ba&)u>MZ diff --git a/dyninstAPI/doc/dyninstAPI.pdf b/dyninstAPI/doc/dyninstAPI.pdf index a66196a4a53fe14dd3e8e8da08e326a6ebf931b4..b087221280ffba306c8bc32a9762ac6138ccb3a1 100644 GIT binary patch delta 109539 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%0DfF8 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

GMAF3Z!z1r|A`AO%u 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 D01|O! diff --git a/parseAPI/doc/parseAPI.pdf b/parseAPI/doc/parseAPI.pdf index 105cb75ea94356523a5052e81aa7d3fcdbc00898..898bacec74abfaa5d2f4b995c1f416111eca5170 100644 GIT binary patch delta 14534 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 delta 14458 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 delta 14948 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 diff --git a/proccontrol/doc/proccontrol.docx b/proccontrol/doc/proccontrol.docx index 5c22a948516e3e673b4f13fe59c54ae757eed99d..ba91713573133306b91f726db79238e3a4620fe7 100644 GIT binary patch delta 78931 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 a!DLWu0pK+XCIlwLI1~hgU<%mwApQ^MmX*f< diff --git a/proccontrol/doc/proccontrol.pdf b/proccontrol/doc/proccontrol.pdf index 998285a72ca38d6060c75f2aa6ecd5b0b1c6a0e0..b6fcd136bf114c648e89c2f214fa3dee98735dc3 100644 GIT binary patch delta 59414 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 Q#+#(W-RswK88VySAPRWlr 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 diff --git a/stackwalk/doc/stackwalk.pdf b/stackwalk/doc/stackwalk.pdf index e6df66670fba79c1d21dbd66d1a3d4fc4e502313..374b2ef421afe260f406a05aeca1acd9ed0da4c8 100644 GIT binary patch delta 13949 zcmai*Q*15_5Tiv5ZHjxxGBtJDHCS)>Tpzn{d5j07fDkA5CUSuasEVOKRd0 zqdkcZQA!%1pMc+M-4+%!xVwXi-k&0-8dx~dNn$A9o(IT20-SNl-V&3E0jt4;L^2(Q zXffWlRZUZxZ?VpSu{QTe^k~_)Y!~#c=7GkpI-(;rZTFxHORBlBweOaF`l;@@YHvfr z)lE)BN4OGTN^Rt9Lj-5uI~hR!+Wl(!ZV^22##lFYJvO?71P6h*ld^R%R4H3{vwRrf?F)(wk!pMoJ0M}zW&u!VD`$L1z`7Vonp5D4Lq}mo8uyDJVy5@ zO?u#JjGI78F_)kQ=k6j85I<^(#Kz=CGm;h~he;~u#Uss$D8|)uT0sjYzdy<(spB7| zk;%wKIi+}~2xQfov*>VoYO|p}=}$R(#aZR%D)&1PcOT_vbOYT+YrpkHUiI}q9XD4t zozw&|0B*a!SF7bG3TGk#R4Hxu3{{iH(gDPG;UJKWp1@q-(&HlFT#zM0;NaN_w09U+ z8lygo*WfCe^8XN+#SI}NJ+;Y&?ktIGj1F^>u(d7N^sWR|FGa_Y-+-+M^fx8m2FlQw z`6ck`^k(+Gi=u}8tkB#0c?{D;XvY;0#)H8L?ylbH_=-|S+47% zUfsH|(-TMIYCqR%yT|BxR*(8?&cJ;2j=*e+f5G>V#Xc;+^NG^Y{nwx85`b`;iyM#Q zWLr^?o%2wRakfYKW?nER*NkUV$6H+wXC~+@n+oj)-nc*cEB2RNgrLTFwtL!TzL^TT z0327vw|qV=QQJ?O!;*1wkGj9D>wKouhm)L=6FyC>37v1aX`}0GE>8sAg77)Lx!op< zLd_6=NOYvZs6HFqK7GL>nS-o+J;PpnPmun>+t@h;)=n(ve81fiFaR_9rIo#7T)#Y# zUjTf`a|qoXm`D|7T`zYy}fE2^uyD3jAMy{1>2Ylb~QhIUww8X~^NAXkeTi z%pCt~N?p}lHJ3I!ON-I}l7-#O6cl&yh5$ogVPP4crQSdYcXsJ?;tB&NK$M^%#bdO$ zziwOXHqCa-e%bQPmdfzUxZ2RAu8J3xaj5g}mM)ou_;pu5r6 z$KdWEA3+)|EM5xjDc%9*;)0uDvB1Lm@yvwo022D6EAaU+PQZ5#!0jEu9l^ox9fYg8 z-2m_b-C$rG1|-OIP9ab@$Sxt`*tlf4sfB6aE2vdBXQx1sesyg_jr6Q2@-;Oq!*9)X zfH}D2V0O1I5l5>7P*QEG04pu+<}MT`5)_!G$M-OhX@4yet_0BF;Q&5d2>18Q6BRKc zzzwX655xAESA7tN%o;r4*ABDa6gG?(+S!RmE2uvXE3Aq=j1+5T{7bXEx+sNhYQN2& z_T)BWTu8S+HBQdc@yFTjC6)&@VJMm?IM;iRjX$~3+ z`qtsm?yt)SRL=@@_4n`OJ8wyB8tNM&An}tE&Z+s~(J_!4xLR0Iqn>aG=j-j?lOuRX z5U>L#XMNu6FZqve*!VPjeW2z5Fot2)sP&u9H!_6IZ-)l>KRu#cAQJ`z1_nEz)!W@Z z_0l*@D{$vvuW$TX2qz#=u4gp#=4W)R-}TSF!s24XxWuciKp!AC0^%QuGCmp*z`N&f zMLBTbm;E1I0HL}|b11Ms0ON@xbux z^I6;|;wylCw(tITS>$($_!J`KXI^kIF9wu=*B!hZ$nO;ayyHuPYYZ6V`GXPi2fG~c zXYuqmE|vrjEJRb9XG7?hog%ynfH#C{Qvw{Iv+?scTF_BXqDoL7PZRV6=Kb3o_-gBG z>vzw^hB);l)=**1qZz0P4Z6V^>b$!$iR{tvmuH%nDBt^jPkcBG8}`o@;6&&`gS3H> z@^DfRQ+hgeKD{2jj#*s&k2stRQBn;0Q$3`#t7HEDe%JvqwOFFxsU?~k>c~&P%+pV> zwLcqkC>g)I!G^WwetPG_K)k-L7mNZgoH&+{qgiv;X?3i$xR#b?OhIp3KO9-7r*CmB z(DN#q_&3)I{h-+^4nQ`;6&wS(Hv)x(`)Q8P^#p~eAXn{`CX+A1f@cKp=&Y$P>eTF zb=I}4R1OgHyGbzylqtuQK3Ron%bv75-dY(Dx*SL4F>+^(%@ix>LBU(XnOD8w3>E?4j6)3H#LkStM z=*E}JrnB!)71YiYhnORgwW4N0ZiMqkX@7-sPG~(|Y2jt2%~$20w(KVsyLl$ancd#{ zcwg2t%OJS}$ajk*?EXalZXIVNx?HBPprtk1e~&%Y=`;Z9SH z2NeYcM+s)tH}v?yuTOT358`?xo0fUP+1jIT#+-~n+sp65uXkzaR2<$ui9mlCmhF*z zJ<0Gs4|a*FXJvQ!ZNi7@zuC5BWI%Oz ztp42r&>RULVUmikZrp&05hktadU_7m4w`s2rm&BJMK~IsE3zCRBNw-~b%m*~2TYMv z`0Y>8r(eh;3+@(#TH37@L|CVh6SOL*LvB4pH8}=YJThI%B)rLYgiU4s*;%oFc9KeU z26{XGY0lJMu~5JY7<^@i+Wi|4NnWRYSvWA5l%NN}R z>|DymstMJ}=5#B&Vy4No1_D;mxJORVeA%MqhG4Tg6DHx(oL<_kd+3JmUpR zy<4^?Re5q|;+;Rn!+#ec@$)HDs_^6L`5?NqWocwdzLl;%~6J5obRam^zIxI$~6 z4s~$_G_+VgrvUxy>ZXq__PCY?6eZ2Z5J6OOrPk0rh@G!sJ;*+Bs^(_ISGI848_b-( zGoaGDa?UqxM#n#4Vq3L8gAZ>iIp`s4<*fK{lxJ`^$3$M+#xF_C&d>TsKaUMjUIPYw zOM|KG`%p2nzk9b_HPhtohQTZVmxlbD=T2UA3IW|w>MNYn?sT(e+To#5*13wuGsw!| zob@}SyrIZ$y}KD563%g0KoVlgfcZg|X!R^29?Q*Ow7g=@YRtskvvTYTNxi6B!@d%o zX!=2?bFsEq(8O9{Yu!T<`zow%uXxlj2b?Yz!9!+_^ARgA`}KoPh22I#Eb5~$u&H{o zwSdIEpwr}KFiaC+04J&>cbg$kC|@KMbFBir>pgi{cJ5d4;;g5W z`olV2Tkv>$ych4nmBKQog}b$<0Bm-pF*4to^eAkqXqj@(Mo6`?SbFJD&DcBILDS6k z1de!WV0FPKy{;la%1YDK!;TnxzjZr>X|ce6m{Isch1qwp6) zJLtLiXJT){UHZ-uLeNWhF+}(lnS=#+DsuDEJ693xN{%8mGi!Rv_4)&nZ1$y%fo%cD zr1TDx4XKb@GL6iRm99Z>>-d{}SNdEUUCuSEL=kM!afb%LQcKjRnSShyoa$@?;!JO$ z8rKtTr?hn)z@ESXfvWKye_SY2$gQa*5sjlaxZ^g2X;q+F9T>dXrjSFLROKkF{%N|e z+*;>oq1aI9RUDt1VE6LL_O0-VYhv-I$Y5 zwQoOc9S{e7{q*V}oiwog_OnrT)fIt7v$OReO^E^Yt;qn;k(Z)ydlo?f+K{XHx%|!Z zZJxHq7!3~Mf795&>#EryI~de)4R+HSXo7<~YY9W;n@TKR#(EED_ z5z^92&lEE_*amepKR#7ezkHxgLCBc|I2X0|X?n%vtrxZ)vima&vY#n`l~ddy{6O+E zLnHxxru|m1EH!bIw;(uB+PG5v=g@9%wa*tzwizlap!5ol)$^N8@ z>xyF(^2W?pJKOu8Kgr@b1&mWIYo4ExNXi6hPjfo+(xUqj#Xr6;gw%nQkw} z=j)CG1ZpA;B-KW|tx5kX1v?9uxdQes^t=I%A3%|xy?uOLyiI&+C%W>iB*XXY@Sut5 zjycy%zHFGQ6LVcQU|EK0IB63kd1LU~`A^XC^wt1(e_ZXysQYivXe$Kdul{z35Fn`8 z7H6v6LjnH}+NxeGhB!8P)e40#>?$SZZbSI1mc51W3Uxom?jetb2@`%?(D``M| zo31P0lSqCIVm>R4ziSZ^VAGU$0Y_$xcRt@Jc4{%#niaOz1uY zyR|zQ*ai|^|}po`7RM+6J(7mwQU<_O?oUM+2>O| zN8>u|ID{qBAm=5Ncym`{ak575#+bv3=#RX@0X7N`^oV}761h8S>3Zpr1|;A`o{b{! zp{E2PZbb80CY3iqWCCYFjd0-?V=71PZi1dgd96!9N6U%!(&NY6#(lj0po7kaG!!wT zU4si9b}cNVjyr!zK&^nbkyka=O;(9MndU~xepTNVQOMG6(L={4JLx#c$?kI^(y&6G z8YabEnNddmd`8fEn~D-MLUkGbeWjW}sConVV#Q6<)P zs!6gVU@&&QxH##wim{fslGV-rJAs9@JHMeh^?Vrl?~S6H>h9n_1u3%>D_ff$lDKZR z$a}1&?;`z&=Aw9TXc7Rw6ATr8d`TvN0oj0F6(8X8gKZOFrJAY?%0x6j;PXH}rZIRx z6wMYLa@-380A2*APGuF|U1fPD$*|aqBXXGzBn+#28c7yaKbf3oqYR z4S};>%Wa@-q`3mFhiA@=o5r^1It%if>yxTxc3Y%dZ}dyn zBW1dp%A!Wq8SM)OIorxOp#r3l@K;*17?zg|TPGTA>|;dLxSHOcDfvMEbJ`JVvY%RV zI$(KNm)5Hj%pjRARTr`J_!iou0JXTkt&P;jDoHR^pj_k{+45m;+SJN(5`Ahn=rbr3 zBN6xgp1(IK*$K-%HPFqYVN82?3tpEF0>9bzf<#1kY^v)RO6S6noQsw#P><4Fk&Ju+ z$@M^eW7z?Lyvs$;)7u@QuT3V~um#c33xIs;VcvByZ8!y@rP7+(5zcektsSWv&8=aM zJfr*VdL6GO0olpd!=6)j+ZA!y-Lm;=DRq+KRe zK4vIuk?mS++jyqg{=xdmN zKo(XZkJZUsTVvjx?_b^?{FdE_RFVhpo;3oaf2k+Ho}rV=4{ZKy;r1@XZ{Y$|(XJCn zWQDwtk-T7AK8F*Jdh~8|j-Ikk4p3H%QP!7Df%uUuWv<*OZY%)_Sads$t}VZw>5rO- zMpiy6h4w9QypHH?tpj>(xtJuz*m^zlDWN7#QN=0T7`E*CA<& zM<8FRW-;`=h%*I=&-88bx~HXhAUjfU=*|2HHTs%0W}(A)K?QeW6p16ht3!SS! zESnQI*c)Dn8}D7D5i;qqFYso$QFg0O6j7V(9U|hegacs4eC0eM^g6O8)ydcB8OPIH z)Ao3f@z(*XGR?a)hrkNU0+`|(ZV}ulTxwB>sZthvUN3F0cGk@snz;SQapA;Is*qhW z@CyS8HbK~obX;T9<_-?2-&!#AD2YDGe0ra0ZVjs>3Efjx2P_an6z{0fIuY5b&$5Tr zUt6p$uw@9pc80J-8epOWDQKVr2#$^5s59tdZQwlOSbC)_JHw-J0ll~iqh#LjgH#1% zZ(dmaHB$vOO2Op*jMEE{p+oz>4r?+)7R0PX}ku z*;Ah?qQ$ieGkLaTl+nL|1^ z!{+rz8$q)VpI&X!0Fb}jzpJ^uT!C46BOe$dyM5a0pSn%>PHxq4D4#yh{}i7otWmb* z?9yna2nBH*t{bwSImC`~S4|e23i3;{_fFxZHOBQ;j$0Z|c`qs(eDGeD(Hd7<)pQq$ zER@Amj4<_?#%VcCGq1e5EQ>|F-bCA+4M+SZCc}OZgSZD&0LI_;R|}39qc3*lEaVeu zd9v{CgSO6XjS2}NFey?VQ8x%dba=g;r`8Iio)w)pQ6xY0cRg1T@jePjQjK?&5?Pn0Z8nHSa3Nfdj)OsZ zMqZy_R~NyLWrEShAcb#NW*;*uHAf%`)SCPAi2HUTz+|+bedhoa7~?m*Odw$W;!&F@ z$GazqOi+C5NKB{;tP_4zRlea^jpW@m!;hTZNGFeq!&S_qvB2qRQv5VGF)UD>_-VXX80k5F^Ub zN21}9z4FqHWPKE&x2g030Y1hcr&=0SOg;lpX49=p263n#M!}V4=)pX^?wA}5zaDK! zKuf5hKUl7MoVq#Mo2a;?m^iV@z=_zE>BUzE=T=sORFv zK^N91Qvos+`nF_cCc4C1MFM^bT^jA|(ZMjiKU;NViKY8-Qlx^X!mQKQux1FyE^Wx) zFYuEu_}s1Q$FBtlHyf^y)&^9F!@2i>#rfD-N?R((tL;!!teR1r=;QCiP7iE02GDjt zC+*#wP=Kbh+*W#Ju>}?@Vw@%vUHmp1b;0|)K$pHC%iy<1B(Uo;kU`6Bra6N@%|N}nWg>g-+Nvv7^5TrJSM4` zjLnD(PC-Le8*(t>2u9!ZYRx?Vw%-PWiFR@_S3{O-Q4s#`E(CG86f5 z>#(xM`TL4(NlaO)e!gs#BOJL*`5(XIAS!wIeu3@+7?be1((1aG;auQR^0XDr8s=kQ zzrbL_q7RV99)I1=Bpb*5HXRIr9-vh#TbZmRY3;&2e~AKSZh+~(~)&$pXI3H3d!x7>uGB?ikg!!cPCs;FRYa|tG*9#3itW7k(ofZ z99(`Z-~R4tU-;;w7O^QGunc3p;7G}K_wK_!gLFgCy;)ad6%(Q?ev2L(miwS(J?A`_ zqt{Nmq06Naw+_4=SoI-cYcSdMg=v zb7hz3PniL-U~Hz~%QTN!%mchm)2mZ%)95Bb=zoyQPMIyR-OZZEvh)+K<*!bR#ET+E zmg!J8KH{CHD_nZz)IqNxU5j~Nq$c2^w@8D^G^9Nf@|Uaaufq~RwxX^ek-TWdHE8h$ zjoc}ZOEhO%(P=e^)c(N?ou-m~Bn?tbAgXhy=!0N$F1g^;gTdu*ozfjcw(llpp|C4! z8yXs27wQmoTt{*zDr^tU?eZKThi-gctFt;Rbg{7yG_t7Es$I_#!}K4HWYY~n&mmI} zBP$ZMmEtAig$SukGkI=!DEN{R-Uv2n%#IM%j521LKjm8!Ddtt!r)RjsLk%0Jsq8NAp-@+O3^Uvwh9% zccbI?%ShIHwSFH$xI?DvtCIP=`?&izAURvbt&4v`r zaYJt~oT7reJ7@y!Y=EM)#z3Vs)pfxi;kJ7sM4k3skztDReuu1lgTYa3#OQ+MKSW^9 z&6sm|(I^mo@hN|5gyoKdS8#L!=Nd#Dk!g`>q_EKJ*yU;0@S`GmL5qYURhXQsj8b<% zQ8r)V@Xu|cW}}x=QZbQTY0 z;!G+cV)P^?bQ2EYDk3$=8^uaGXKE1si@E;uT%to0;4MYS%HZFCL?Wbt z+8x1)!qfTi#{M`{7(|@mf+g zz_hE$@s8;}qyR!e+Wqr^<`CCl3k?_r#mLC!2+sc6%6}!O@n9YDVfKtK)2!I9(FKHGyV*Mam1B1nZ!61YC7kZ_{R|7CD9 zfus}Cz?kmiWs5`sH!SXvK=996rcc!6<&dY}9$Bo;|jjjy`WBIb>F%G(J zgZaR83IKW$H%QqS+rf-;l%UQ)QV+{EUXIF)L)i6#Txbu?Kg~!nC=XAMa{nQ$3;a2Y z#&XIi?rIO5UQ&bA$Mfr}!d#W~{8G&4W6O5VZ?c*Ce?g0(#k0aw4iF~eW#KpDrYzv< z7HDybn9&k%JtUcDZb#$SUEq3xgmQkn3EqqAW&nOtxWRNSGSL(^sSI+wGpO-r(uoK^H&#g9$_s|A#uEuQ?%_ z76j7|Wg^_oUGOmkdQj-iN1_fFO6~AZ&^4_a5owvp9Xasyul|p)7PG$%kn3=%AxIA= z7vIxY7dc$ku8EM(qw{~hKP+$Yv~sv@Apuf8w7>R~k2$P}lTt>hd~+SL^YF?H_#TX= zWdwiQ^;<2ZV|v6#fsgvd{>pq5Vm=fGjJw`^XR7h8~c@%FRrlHybrVnFr)U!*UJmKw1rMN<)}8zE(RJqb+^iPs=!(r5+( zVIYOkYZ(7?wPRFr#^4Xp8f+*)4_XQ10&`?HMcB%9+x6t|m`~$)qZ$a-6BR0a@eP2P*5%dpx3Q6ohesT#o-O z_P?Gmyv6o#Y*-i39_h^!5Y*EZQq`f#ytY21zehzGy)b5 z%%6rg3g!$LBm`xO*UCAZYy;cZ(X#o$Dde@8_=-q3JY+yQ$LYI2%{c{2TL1u!voX7SPUIIWYObgSiOH83+1%0Z1~p9(`4Qn!1*IA zUg4l4fgg|XagTdkCyyjt@MDhmkl(Yz>Y*ky!M0)V4$GK*M;_!9f$?9~3+Dy;^tceuZ-t692U)HU0+ z0oGv6_Ja~77^m|QW9}EgS>PMU{5hCq@qBh6+AAit)>egb$E^=HS`7Dx z_yqv~U5&MQ!W}{P9}GH#w&@U#Q#vUSjFmko3ZyX})4prxj^!OI>W@YJw=@&d8dGnN zz29)hX}J^oCL6j_QMpq%A0Td{<1SxeYp3J;vd24g$8PGoS z2a%~Dl-o*GdgIYwdZRr4P zSHdZTID?ztw`k@jH&k;Pj&yGL^M1i-Y!WwF`88qad9Be<%)h{rm~hU7On&@4YrpU& z8~5iY=_mMx0ke{OqQVWR3&|IT0crFYNO@hFS2UYZp%v0>2>m)p;6p%qCaxEc_YOY= z;CmP#OOc%I-ZlBBkP?iDK>n+Y9H4;w#L@iNSpqejTY7rrvp11_=w-dFeBOKWb3S?! zREB&rmk;dJdEEEZJx@+t{V#n+s-x~M{J6_MxUCGOtE-{|aYtibP7(3!yufwc_bj=- zZ$6K}fs4L_8`E!Y48QS!EqTmmr_c1&RZ?|OOuJRhZXXSfG=+zzFPR^;*;0TW>yCZe z`~7j!Vw>s6bXRm_`=q50!q|H)wy!L{#K`0)!$n=g3B_W=^q8f4n z-yuv0_(b}?c8zC=ag5Ooogtvsd340=YxLTI?ot8saG(9UU=sexN*z)7rc)vM^8HI5 z7AN51L;MgMv7`LD$L(VAy9l$dmpE@Nkw?8<#oNb+dG9*%ZT4eGz(e#9xZNcz3NLE) zN{1rh+W2Q8zRNRZXP(R&qC=zgZt}hvuN_UL-usDWa%b^mijvs&ISJdhm8RECa8@P)03woT|bsWgXwhs^OZdv zE61&SXFZw`MP% z7KP~SRhwstOMb5Oz9ZQxSMuzQN=uVrC0DYhBt@^b@IkDqEjV9SS$tcYD2-UK@Dbpt zM&4DKC|4p)gGQARrug@Jt+O)GK!qA$BQ`D&zQ2NySVdFQ)wXfAb1%H*eXZDBm{@bu zd(i9!m9nzOdP*&jFA2W4BAr|PUqxBCu` z>y46m_SG&=jNs|}YEcCs1V&H$?U~E$^Ug**qoA86XA);pAYS*~+7>5NJHjk&SUs{#h6p66datq3=hW?+8RIud?W zl9Z`Nl_$J?dPPr|lT0?!MqCb1gEtg#yZfcPPH(*5IdE-C;(iuIp1hTw6~&&9#DeU7 zF>Q`Dpk^U1>UajuCh-6kDjM3ETa;=hU(YTq(MYb@T*k)SvsaQ6*i_5S0MfDNJNoV~ zJJcI#-RUMd&rd)0D#3+Mr{jgOpei?qrt}ZUQ=fB6A2x%(i-R0fVOa-1w#cmSE;_OCB<~JX4VmmS!Psq)J0<){aHg4ckft7wk>PH zltIduN?4!%{;oEO8~nc9KY^!qb(?9Vfz*VOwow8LMEbRVHbyF5UU?h^>_G}y>u(Db z1*7A>ux;)=HXZ=eIKnp!$z5>eG??~S!Z&%#i;rR*qus*m0gM;&jb2FG)xzs3bB@;R z>Pz9x7RybBjn=_Zi{}jt!%HuT#wh}STiE(-kb3Gv2~fx)TbbsjVEC$mR?94U%gco< z8^n#$KbzJ0dg3&TtXhj8)hf4=iGRKLH2*s(R;zg8uHFCz)Q2ICoAFw93ADVXoCL0J zr4%TQOnRCB?BR!oQ#aT}2XoDyZPh37m!4vezDwK*?Sp<(-&54jM)cK2+*>J|-!>l5KMs1b4Z>?y9o(3@$f8C&{&RTln}{y;DM_)yTdFSPg& zydRocU=14_8E+o8P}3&>gW-QR|JR_MhT8=KomM>u24G-eVrAlH=3r%K;iPBcpk!jA zq=sRXvo{qpaxo*K660ZEV)=hc+O+1u9>JCWh_NtnGBGiWFmrJ*iEwZ-iHeB)Vdoa* zW)~3?7Gq-;AmaP~mgvDS%9`0(xL6V~GjsfJBRF}gjE$NaTIgygVtz=kC2Vs^YOkIB zZ7CX6vV`|!QAvnM00vBmh>Q-Z#K>8HMXZYpgcXlrDX3gF7Nob~0TAgrC_XZ(iLpzm zqhTRv=*Zdkk9_ad^R4siy2Ul1#&>$^XEMX$dJl*zos~9I$2x6U+!1pFl?{@+S-#nI z0Ki9;-xJs>t_jvP=QT%wdIRA-_c2d^yb|Em4BV_X&|^rrL9`({05KQt26GK;glZ|y z8`mnb2J%uQm%mME18!@XHh+WM8U$+DHlGUpJRdekP_#{c1(ainYv~Tv)xWQe6=^9G zyzM`W_-q*!%)bY?)ZjkG~O0PyQSg*?8X*e9YYP@BVm3KPPn&)+7(gWyAn zEz+Ze+oRgxZ}uEOc8FHA@QiUlJG1Eer#67PN477(B*6ud{9?`|6+UidmY|*bZ z@NF1+hc|cM9QbztnhCnn?)}z5({W=uldTiXMe)>sWs$M8`-G3*30N1*tB#{M2XKM< zWcy)hCi++TCt1@>SE7J*VgFp!b?YGjj^uPq`5{x5%6+2sp((l-S`~-YE@paTm&cm` zl(L^|1A{=BSxH2Ry=i~tp{hB1QzOqRSj*&JjkPebD;jlndsvC2W3hRmRj71CCE5jP zr9gRPd1XFEp%rkOLc9FTG z$`WmrA&g;YI5x>lL^|gHA*J-kM9*iI|or0muS2H0r;lEb2b_xb5p;`ZBRd$58cn_o) z%cFax?Kdy$Gaw37#-IpJM2IdYI(7!#RqG)6^`I$u_0r|ex1Taia{deO@OHBt#q1yx zY;(7wxR#EeKNi!GQlzp;jvg5daC-Au{%j@M`hHY*x+F#s7gDBF2?b)(DC|k)8DdT- zS~9wO5#409{bB0jJc~X4=VFN okic}*od0)g{-3uNXBQ(U7Y`>ha~M`;PG&A{7;^GI3gR&T1AAK{WB>pF delta 13865 zcmaiaQ*b5>4{mMSwr$(k+Q!!1ns3dmZQI6M+t${$?Vj&HSLg0zCNs%1xyU4w$t3e6 zb)bK?qsLQ$agwBoa)8nT(iB~?SWv=lzA-zOr;=NGLcPzW*A@7ZlomS|#W#Y@l9D3> zm*Oq&Z|F%)%<*qIh&BR-8-cS`7N|H|WPfL>RzKH9EGOMg_!+v#6ts!&GFJKySLj^h$Fpr*5UytMa}@R~K|v z0Y+|11%(I628FGEUJ~WF%&QuYw%^Y8{yo!0J} z<{~9RF_~&BD{8adyEVE+VVNp@vA6P_O4!RNX1j0ktYdzFY*l!YPYEeYd{p6qH9XG0 zd2)I^0CJa`(l@tG=PnF2HW2)f)4(edDHGmO5gcK}R4M{AS#fPK5qMGXwUzQfKds{z zWHfzKgwB`QsnkfLU(W^Cka*8kwgFTN8`d^jOZ1~hQM&6>@5QoMJ7sh~{3^<6GlOM@Wl z{`z-IO{EtZ(V-l9A9L;3Gq!>?xwhYzI$r8#W@WL`s-wDmw=d+=UA;T+DiSfqVIcS_ zKga@T=;d->;78uM>g4Vg!aMUY*wL!9Y}%;){>`WXr2jpuh$kKk%eONfY;lFYZ1f z9$sZZ6>`!fuKgkt`S;VZA&jo_7gzm)o~OBvYXipL*gXN=Ra2??k0x$qIZVYGPVD94j$HK(^f0m=EP4F0a_!v0oe+u@Wg13!wNVei!k1orM!rnG9#O|)v5aME_qjzCio#E7DjtSTm$ z(wP$QRyXj?;2;uxOG`l*Ft~5z_uP07&|nl49t8ksNc+jtS=NYgCtM((g9mj6eUWhOejwMz z(T@=#h_tr{e))bg-`()*8yW_14#9!eLu_mt4ep%3u&f==ez~9wK<>k`K>h&_>;l=n z+3D3he!;du3>WSGMp^~o4FVPL*2SZff+G02{4!Gg^XJw_mdVfr6a+gjVz*oE8WSK1 z`Sw#$4jJ_6DB0JGT-9f{3oPO0zPI8K+gkqy2VAAeo&GAgot#1PX+>@ z@Pd9G-+qdUfTI8nhgWj-Zt}xT- z_oa~!{+M5&aXs}KoQFS@10|8E5%z-nlV<8fu zfg0|49b?#=SG_o>^$(o@B0#yN>Gyu7#xg|R*#@Po27klwqe2})pmE;`3#GoqRsv;; zb4I=Ps5SKtGSHnfBNo~qTQb3`dZSE$+_Q~7_%iQ~l{OL08tV?0mS!XfVwrIGq^7=t zt?a>PgL)0>PV%_j+yv_*m6He|L4MnU*Xu8a!@0H`y{%DQru1u=6=36Jm#eJxc%GD4 zb|cfLjvdjGU>uuzI=pT32*|&rxhkzhQ*(kfqxPN!4vivy?&I7zSTIKX*cFs|^)CQvu_u>H>A!jQN%x*lrTAjJJ(fJvbuW7Atsr-wMb zBUwHj$?zgMtX|uNMIr7Nv&p3F!gdR&xEqnB*l!)gngrHRYomwc6!)^#!di#;PI=TA zP;bh`=+=O~u2UF}PhU;MR}VaY%a5B8mpTd*-38o~>mB$4P0(uQT&zKFVWj7p^j#n-8Vhr3mJX6k0?G4Uh~?{O{%IUpC2jzE0I-OpBd!WHPz95 zy-#2t0Z=2mJJ&hU$^o{f@`v`l5KCK{iFEzvhw%7Iw#3J&+IXGW?Ik_lpKRHBL!2!s zB5G25ucA!8(6+SgddlP`TG)FM_W1uzqPgJh6m-_xCD-jLC+p>O!aK+A+fFpy4v0m4~bM&h>p8L^E^V-;%ChkT7Ci zbyLjo^g@Psd-FpG2lqlikb<@kl&wMO!5s#Iu41Zui`NbY8KK(9#>7h$OR+ z5b>JLEy7jp_PyLcnkU%h+6_7*d+zTgK-Jfpqq5N*e7(uyUUoxsTTCSxMcYt!uo_dk zUg)tbhhzMB7;n4%T2w6in=0+F#BUlnX?BlQFZ550W4P5tj=>B_%bHCDA{`2Nx^YV^ zzI}s20vu0Twkt|}WpjA{o}>N|ibDd4R=I>`95=?SC5mixb3XMoc~1()pi?^`K;LO} z!+O}xC>$b_Yqyw#*)4cUK0=QVMTY$`F5`=c<*Y zl9NwRczL3qCvz@a5c~@Y5c=w54$;55ShRWhnBp9=U_mXBy z=6Q0oF?>b+k3Z@4QTWqmNa-MXR&egka;V~<1i>|Vns}Bw5LFsWAs_LTAIM8TU1XilvG2;I zI4vreaDXL@hX2b}IYUtE>ELnoSMDsrtjjozklpeiZdDI@2iF!D5-*#+%e{xSqjfP= zHvdwyLUjnQm`7FsKt;#fQ^V5%bos#TgPye&oOCj8V2V01?0A}3H04+B;-$Cff#p|v zUv+l((a?3&Zq!R<1SyuVCD}uU;Z2;mx>)-W_iCGO0nKZb-Q}{dCVQHj?Tw0{o*|HB z%oZ_|JeNgejEeNCQ6lCx-0= zHBI}vk}ym6Ovw3DZlnsh^xvH!w5K)RQo!9{(>EWEgxzDW2Hbc7E8j%O(>$%TrGuJW z=`Ie2Y?avosQO9Cp~|eon?A=L^QKs?6k6uar%zIr%&e&nTKFLXn=YcLHxnWHySx5z z7mIE_jkRV4Eey88*Vl%_O-~bW%Fm->&TWY+>+s18WRn4*10kL_zhf&2Ign z8pIT>5LJSvyw^Vrl3tV>)!z}sS$FL=rlUvW8`p+_wYne0q}@|kjWYtNTiy!z(QY2xt ze7Ve?mJ6#`Ffi=*ZL6X+C}At73YtgJ+EeHf#NbPwPJXb>db~V@E2RT<=jbGekri5K zk=NQBamdNb?3tLD0QJHHz(s?3$ks&r;>s=0`uoPnT%G zc>i{khVvYJ!7(yOHz;Wr@q{xsqC0qy%E-c_?%V4SmZn%PdPpf2Ycaq%Zxy#4ya z!20|TVkai^!!lIUgHfdcR&04!S;9EAtHd3EI;1<| zDs>J_S1EGbfX<`*FM(9?>GQ?aOZH9V<7q0ty)cO=FTk8elEEZj_BU(0priixDXuT2 zE=Ww5JOiZiBREl{dz{Urbw|&uyAkdRsbY#uRI+r9pL_~9NJ)dvh1Tp z!kg~0jKVi+FoWc>5m(qiWB&zUz=17V>8O^V`FM?P!5;Fh--D;BNX_(X8u3&ZpgNPv za;zSd>6}vZS2re>SiH8Z65>?Tk#_7L$qHJknn39F9M_%xL{)#QzqEtWkb1afqPz~s zbW`u~g_e}i=bWb}BTGH-(&PZ-mzd2p5NjhqyP`~U3fAah$BBKH>y`$XM{%4+ue?X? zRz94O22o02#az=GZiQ_i z4@(vhBzrf%wk31k1EnirwPBky}M8k zt1LROrEo`P{Pkqnf-i#b2GJc)ZBzav46V96aUcgLjFhC?ai@vNWg`BTZxxhh2GB1Kg#v)Y0VjcO2se5O!|9_Zdgn5 z#v1~2kkpJtHL$>y-D$)tJscnDUW9iqOt$I3NEo?e^F&N z2^EGE@{@B;e-psYhH`@lc9WpqD4y{-sr(k^_S=7NB^f+>lyIWO;WE>#Llw+A$aGYr zSDl*Afzf7!^bmnl>{z~{WVpqD9ntg&m+`#_z-D@)L>x8yk!QP?-*@Ui5OdPekS#Cu z46$=ET+$|tt(Kf4%{6fCRacr}rG~<%`dI6Vd{9G`l3)NinJWK6xR%){Q&xXV-6F+N z2v$2CcML}sN@1U~xC-}@8@m_1tFlc|AV7Nx_tAK zhdUP-Nv&OSTi!^@?ZbI+nqU+dDOwN9@Jt}0ro#YcU)N;=C!RDZ-5&qU4&5|I=~N!j8u^VRmC>BqTk zql^Gyxp4zg>dzkJZd($`cuorDl{(<6nv7I&ehu5mG$>{wTSm<`=66JT`Pw4-xew_L zKK!`sV^D`m(&sX4?SClA=EN=6FyDEtWK~T^>>r^Vm4H{dhP$&$khI?ZRqdCvr2H^e z`c*hodSCi0|Hgg+)ytqK;GuZRk9%Gv|26_hBe)}F(i2YI>Z;0zmufDw1pi8mrDz(xcB5=WHbkbHi}8@8w_`vA{33}rI5GShKvq0b z{ENlc>cG@fG&WW0V88(vwe~1#eN8fpQ6X$$bW@c^o&uiJegFJT&|a7aYweXy&3H{j zFnEDm%m+ZQCBK;4q$7mV1tiQb&*T9J)61TWE7u?Hu2Wh6NRPz52(|)a3Ce0rY82S; zxsU4Fn%{Kj2U4JS@^S15orKY7zvQWLUy=T{?jZxY%!1d$#J#Be1TdScM-{!{KcM?`y^|Y6mN>3QbqI|tx0-uCq z=~O(JpU5hSCI9xXJ7~S0IJHt>fd6>?lEq;So1L;91?8JyFHgI;BI}-J{4#oQRL)}v z%)}>Hzk9%o`G-QsX~ptSr3QdxA}gPcwN)~y9gfPew*b9t!}A z(VK3D-VybFbWbGm)7(=wPoF}qS=z!b2(FLTS~%!k-df_=mggms`(#)KL!l>QQ#ys16BaMZ~&pROd` zb)S`CX(&*6RXte%Z_}D$UR+j8QmVD?_JzNsJ=4`uo{HTHh0s?ma*&%~mR{9A`fPMC zVxM$ULOHv&D~z<+LuZLobsIsT2^oR-Z~*7(U)a4~!93Yy?h8P$xw}QQ<6x*yEVM$f z6+xS|-YXrs2Ts(=`J4R__e07cEmcihd2NYlc13VGVlZ#MN>#>>2;p)RJdO%0U8;AqL^EnZ+H&m}cd* z^b@S=oTPB_2N^IeJNv>DEFbfPK;(H!PD}dA_M*~gWA|rb$}>bn%>@ppqM7ZqDcxo} z1gz*iOjcP+zqlKa|7*Q0>sK*R*}Hb`iObgo+k=F%7Wfu>;+p(?*8Xx?RH~g&^Fq}2 z_Ep2Fo3Z*QsTBUf6%-l%I!BTxK_9nVN zBRZOnRoA}^9eFi=_9rBCTVC2JM&=~m{7>pQKdh;q1bE0QUQ0{+);39wQcb4{-mJVK zW}2Bq_c8##ev@yUqZ-sM`=pZU-@_&jFbq=!MJ--lS-iE#dU@C{mg9Q=Rb~yAqP}hw z={SO1F{D;V#Zf%F)X1=papyIvF1{))4@xKB&eLBI%bq5iZ;&EonC0^&GFZ=+a@8J5 zFgBfdQI^9t5%3S^^Jq5-HkIynTpAZ$`m>3)kGO|^Dl7yLFk)NePLU0ujS zSvgpzLxfkPc7Z6#$Y89)U+cNZL+kuq*zprSp@%+fWqRi_#XgdP1}rtJ5VqrcR5&%c z+3Ht1o9vXHB)qK7vhWW}Fw2~azEjCsfH9AQoN6?LT4Nu)&4sIhOX@@?F-IS~!dnS( z=tKfMMxrqBicufeQJBN}35$a9*Mx>1!FBz`xl?}GmddVM%h8hAQ8n&EYTCF#^D`5| zJXRo$NxMfH$Teu2)IR|M$G&Q57CRCCO5EHpnYi!9_ZQoz8}b;66^rd=;kNQLA>xKE zVK{0|&=kO$@+ap|QKBT{=d~38^Dx}}BTE3Vi_KFpnR%fms{(*WnS88!Vko0{OZzBZ zQdIsylTPu1r%_~HRhFWH{sV0`qioh?%m9rgjs_P8VJY_Fr&^hkeqRg5`8euj&q>NB z5H`FbE#7HWk-a537^GcD<$PlP`H9RgyPYpiR!{7#Q!JO}rc5aiIkEmZcgDHO5Yh%< zpx@0-`xsHwY&#S6{~4BEM0fwlJCllzo4Q1s$LbitEK3KMs`)!MT%&49WgbpJ+>hv3zusP6tQCPj7VMk2F&w;Y5)?9V6hy)F}$64U3D4nP`aw--`kC!s=@N zUCuxmE{Q_5tII~PLMM686p162VLi5psnCBe7T5~?GKrg=)#ZVdh`yXwo<15nVks5s z&W*PwRlVh8;4%5DW*qN?XJg#k^wC(MU=VhZMxMTW-cSjCr{wqw4_vu+mcJ?>&c8;>ZA4hF@*$ocr4<7vs z{nt?0Z_qL}q-aZ_38#$aQuOt)zweo<)fS^Jm2FmaR8)`4aR<&@yHU407D&L;ed$^h zj9-T-G8i&KVuzvdFma!6KWUYzMHXCyQ0S`u!Z-d}_0G;OCaBX(NJO!qyh{wLSNsi& zekUB5T?wDGw~3x+)C*w>uyw?5Tll^<>W_m(B4fItP$3{`HKVq7h}fd4*+Y)%c7D`M z)t6OD`hI7}zK)`=QRj7r?-D_Y-cKCN*kd2ub85j)>M9SBmC~lSD+z%EWh!F9)6s3QymAG}7)ik6CzCyMB8#XXV?P=`{5TiAKt)eSv4#$Gr z8VMG#+w+IV%*qEFv=8z}B(@S@3Dd+5L|Ixi6memZ!}%1`#A<=!OhMPRwSyHKg&UTv zmMEt%QE6Z1sWEYg{R1COMd` zN>dL*Yg6ut+M?zISdl;_glkEOfW_5iM4Q3sSAa!riTK+Lh0! z&LwLN7JQY$P6E!s0wVNi3LMduNWv}06+yRdNEM+!Aecb~bogW^K-w#^j4c}@mMlg@ z2*SNl+CL``G|(0_K|BTqJcJ|TaDXYO%p1Q#Jc9V3&`jW!LEbmfFq1VjK_P%(B6A_g zTn2B8H`@g;#SNkAL!dUGvN+3R=M!2T)74`IqU6Bqq;l$5} z1w8EI1BJfihd?6$dIg?Dc1A-mj1YeZVchJ?_lHq2=Djgr?u?Q{7&d1$6yCjeyY^BO zY&B}9@4c6^ZzB$qjW+*UJ#}1ZQt0a*G-+HlnIkEnlRN-)D};HD8r%g$_WsGv+xZvs z5N^G&0NQ=?cNaQ#&YUt-fB<09_pQ?hqJ58!d$iV{8H?vBkOkI zFNT@={=rTd*}UNNJ%o`&Wz?;MadWup85*JjCY-oiA4!h+tMR0b7x+$pq0G-7>X)*n zNpC3t*;0ouUEX*wySaW&(JyQk{EKA~>iS5{U^sA*C2&OfX*^C9qA?9-Q7oMzI8&(g%Yt{1)L=h z=TbLa$!4sQ;NEL7+rPxxEDKD{>%*dK&q9QN&Vxb1n=s4>6Luql zw2X|vEI5|8z^516$pzDwMqCDX(!=TH@T`B!KF%xW6v!9KMbYomci+5?d@k!qiLZu$ z?_S2)ml**D>QJ3~krOsaZkZ0(-R^h^ui`!Lf4Q`r&v=B;@!;qsjAzk?W6@Als~snqn!siDNgKtsiOZYA9u*`Uq0^6jB*ZnA_Vc+#2wl9# zI25R&P$7rt5KPtLh-7ew$~nc;~Ui{@VyednQ8(lpGe(Tyz%v?#T^W2<{*Habt(<1=r#=z6!G*Aht z3O9x#?#7^{tB_LdCnV-|A4!N4Fqez^O%ROx(9t6DB^3)X2~6|^+aFOI=o|i*Yk5B_ z9t4Xm4_CA4+&fA*Np09v;C}_#%tc@_ZE4md(wk$CapUljcWX5IH(BnSGx2caHU4t% zz#AWZS~sIgQOt%H46sd>d$vOy4T`_8;9muQd{+n_{YjTEJ$nS}K6Cm=O?-12|244y zwRMhVY=5Ar5=D>a=)X_*h$3w)$Qy%EZ_uF-?&1EhB3I<{sgccGV!o%bjBRxj^6 z^UFuRin%SYUB4zXSQK&cQWm!N+H6eck|0VuTX*h=?Um;0@=}Yr8hsy%+QV9*fn$>k z-QYV9aGi_W`H##L1OxZPeQ;ZLAW-^-0}kR1_?7~pdtbFSK7~FN3vC5`a%7$W)VLAE z@G(2^9Zb&+di%5DZ!wgz_wc^|@r)4^?%~}O{+=D5{|3@&V7kVHYq^+YSms>|2`^AZ zNQe374Cjq9eo3+S_GQfp^`{5#O)q-8KCv1VQe65JquqM7;>1d0$5Cq?=!%?-7xsJu zAVJoWZtii$&;y1?_YfT0gyQ3ldIXY{4-M#nA3m+LFd&NqV zs~{8_dNF_9sC?YLj#|~_q1#x8A(o#3Aj|D_7AFSkM?J2NxsTH z7a+N}AU8*auZeSdjGdk=ofM%~siQrJe+ZpW*Rby?MWXw@69cb8U7L}t0ylR6rj|CoU?2+)(VxEU-BpQ$>`q4mra{UNS<4Taq*F$G_+4T8+qm|VJWx0e!as|*wX4vtg@y7K1qhc?_L#QB@Q zRz*AiFK+E}rWV}_&hZQY?3mBPPJaZji8R{y?aNAJxJcBwDN<+ogmPH>G1Q(r>!CXb zqrS?GH`_idX@AqKmPbU;`})NAHk7*5Fpz_X1ig#y2_*Y&5^@IFp7R7@+S(%<-RJyB zl{E*Z_p%;37?$v7nopB>OkgP)_4+@-i=3LLT3fcV#mfwiRDc_ZX~ez(tuWXe?7i<9$*aK{4gw*^q>2T2N6 zRG5v%6t)PXSJjdA39m`sG|9tB-yG<=8RfaRN9Jwy194 z2@#?_n6$3HX6Zlgv|?|0H}97sl!@BHB>?H{LRt*H#=6NSf;+!!St7>wmUbv8%{GsB zRkk78slH***I%0vnnHEFSLN};Xj2>R9x^Axjxd|>3%$M;{(G)PO-~fTOcwA;o9r=$ zg|>W&L-cNn!GSyBk^F+xleJPiy(FG~29dAO{%7m1$Dh01$7H05Fy|L!VVs`Qi4!;~f8T2h+vF;@_ zU=o@+`{!S1pIkh8g) zrJTD4WtLouI*kh3OTohXyqgAPZ>hqswTQ%S?7XWuRu3ESJ>iC(cgDMAvUr>@3!*6~; zn5A_N*k&@QC;uKKSJ1xyO3?i$%T4^13>a3oqy{&5X@w}Xt zksPqpes;5&yN5;}Qn&=G?-$55E%E6!8qb&I&QdiV5~Y}{j<3?ECZ6g6mHUY)8zU30 z+7&{Y^7&Q%`Cd+#?@(eNigUbR){&Yrwot*N`B2}~H?QeE`qjic$o({*o=h`&HxXU~69k4T?$oVhO z)&ERbMT0z7`b)iLgSCMkiH(>1E8XUte^Vo=Np6DHKrH(W$qo0l$7;h3Fgt@Anbd#a z_4c5xdLUdDpVqs^&GwP*sr4orYgqP8koE@NNmrs9&DL3%&65Bb3vVi0-2k_9LRmJ& zIOq#3<125ClLSIx4vQ`p2Yj|k#y=L}mm@_pGfNU;Sf%ppuQh?~YrlY&)@x1GJ<~QF z!I|3$UA>Rj2llr+Y`qI`TWeJlYqhPT+babhlt+loOQ?<@;z5tQPTqH?=B(L_MEgHb zBI9$x$VF8fIx&D7LEG)T4Jt&%PI-&^$fhdj16~S+2T1d;U}+Xz$<;+eK@6&6S9u{~ zgE%aD@9M<7x^w;KU@5w%2 zIfz7f*8eLUY`mPjX-e}DIR7uu<~$Ga0I4d*DkjP)#?8$l$-&La#>U1jDJdq!CCb4m z$|k|WAu29JBJlqWF@R%MuyC+)wI*R@>e$>^u+q_>lh&PZ|F6w;$< zW#VvV;%G753ORBsA9p=$y&dyEpHZ%$Ot5*>VZ|}m z=}fqHAH*5g;r2|NAnb|P-3Ex}qTNyKGXV9-w{M~yol-m?Q1eoAsW9OpsEqjrlmt)$ zXt4zbqzJ|s|23R!4~Ivtys1lp2kEiN#wqfaheuQ!8ViOxU|}2L7?!#p!-TzE#uF}^ z$_~_GfL&yC5$+hKte;oq&m0RQnz(8%)}hv#l4tQ~pT9r@l3=an37_IxUkPvOBk7)-)d6v^xjbu&mtk#nMJu&c|dm#7e{ zK8b2bXh620Xu!7%PF#5knC`9}1GrvgZsLzvy#>IKIuw2LBOMIAg63ISV7xcw9Br_$ ztq9BrK*b#%lsQx(aM+0;`|T-zn_}z^MNAiJj>tG~+CMZ9_1mf%dExD*@f+o1%~^^ zNj|Z*(>iqcbprdqqt*g~3C6&4-eNaSZme5DXf8!4p{vnsHhq3p?8x(7#k)6}2!A66 zupvHv%t2*t^>`KN*l@ZA0NmS%T^5i)+`5(8uz%z(Ob4eFU0AqiE z*GCx`O<5hF;RL=3VY|zv4eilqP!Gx?z6%DI6<~;VD_WX!&60@Qy2amPES}-D_peLJ zlY9_C2XU+eS$IB#iOwzFTjj$4j|6&W2G3V@e>VpmVy}58y{q(I@ZV;u&U?4xR}wX! zxs*B|czAO`V}!>}K-xvKVcy4qPR#q(&%0<5=&YiaEyrnxbP^t-*L9UpOjItiMNF9B z&$c68jAwy|RMBpzaul9P=HJ0dSCiAIZKz^ejr;pAVu3Un?Lu!fTsd=^ghYvH3LC0~ zY>5>#Y)>-gNP3opdWjB-`^561p`5hxT!|8j`?S}GWSUY5%o2)UX)*@qj{_dc^geHA a${)ndUi4|dHz7!2xj5k{DJ7Mq;QkMaw5*x{ diff --git a/symtabAPI/doc/symtabAPI.pdf b/symtabAPI/doc/symtabAPI.pdf index 97e1e64242d59cc370cf3c898c46589de95ed8fc..9a948d6d1cc939c7ce0c784d8ce35e0400f10cf2 100644 GIT binary patch delta 30172 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
  • -U5)p|o%L1Tmp>Zwnr5IQ55w)@(S2H~MJTrgcjCgf4j)z;6HR3X2MXnNPBjgey0T3JGx#rSn zCDma%3$Kf~UDSJ0*IojbMR{)nCWVV9oy1E{p~?7s!QrWtvnGQEn4>X5*pZ`N4V+;O zUg)G6K9Emxq20Jqn=X2vayyR9S25SWWht0#KcHS^R%fZ@?+}DA?Cgv%WMpCr;xPXM D=)-)% delta 30551 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 From 4a6a846e6e6035530510f606bedaa62725c301f3 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 10 Mar 2022 10:58:32 -0600 Subject: [PATCH 087/505] Update dependency versions in base container config This should have been part of #1211 --- .github/workflows/base-containers.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/base-containers.yaml b/.github/workflows/base-containers.yaml index 74522bbf18..c7a51814b2 100644 --- a/.github/workflows/base-containers.yaml +++ b/.github/workflows/base-containers.yaml @@ -28,10 +28,11 @@ jobs: # 2. Generate matrix programatically and pipe in (recommended) # perl is 5.30.0 provided by 20.04 container base ubuntu: ["20.04"] - boost: ["1.73.0"] + boost: ["1.71.0"] elfutils: ["0.186"] libiberty: ["2.33.1"] - inteltbb: ["2020.2"] + inteltbb: ["2020.3"] + cmake: ["3.16.3"] runs-on: ubuntu-latest name: Build @@ -65,6 +66,7 @@ jobs: --build-arg ELFUTILS_VERSION=${{ matrix.elfutils }} \ --build-arg LIBIBERTY_VERSION=${{ matrix.libiberty }} \ --build-arg INTELTBB_VERSION=${{ matrix.inteltbb }} \ + --build-arg CMAKE_VERSION=${{ matrix.cmake }} \ -f Dockerfile \ -t ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest ../ From 7690abf3ddfbbf5e324a3906c4c3878bf8e40428 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Fri, 11 Mar 2022 16:52:45 -0700 Subject: [PATCH 088/505] Docker: adding a workflow for release (#1219) Currently we do the entire build from scratch for release, and this strategy was chosen for the cleanest build. However we can use the same strategy as we do for testing and take advantage of the base container. This PR adds a workflow to do that Signed-off-by: vsoch Co-authored-by: vsoch --- .github/workflows/base-containers.yaml | 12 ------- .github/workflows/release.yaml | 48 ++++++++++++++++++++++++++ docker/Dockerfile.release | 37 ++++++++++++++++++++ 3 files changed, 85 insertions(+), 12 deletions(-) create mode 100644 .github/workflows/release.yaml create mode 100644 docker/Dockerfile.release diff --git a/.github/workflows/base-containers.yaml b/.github/workflows/base-containers.yaml index c7a51814b2..9579d11bd9 100644 --- a/.github/workflows/base-containers.yaml +++ b/.github/workflows/base-containers.yaml @@ -6,10 +6,6 @@ on: schedule: - cron: 0 3 * * * - # Publish packages on release - release: - types: [published] - # On push to main we build and deploy images push: branches: @@ -78,14 +74,6 @@ jobs: username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - - name: Tag and Push Release Image - if: (github.event_name == 'release') - run: | - tag=${GITHUB_REF#refs/tags/} - echo "Tagging and releasing ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:${tag}" - docker tag ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:${tag} - docker push ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:${tag} - - name: Deploy if: (github.event_name != 'pull_request') run: docker push ghcr.io/${org}/dyninst-ubuntu-${{ matrix.ubuntu }}:latest diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml new file mode 100644 index 0000000000..94f89e127b --- /dev/null +++ b/.github/workflows/release.yaml @@ -0,0 +1,48 @@ +name: Build Container on Release + +on: + + # Publish packages on release + release: + types: [published] + +jobs: + build: + permissions: + packages: write + + # Note this inherits the arguments for dependencies from the base container + # If you move this release trigger to the base-containers workflow you + # can tweak this, however the release will take longer. + runs-on: ubuntu-latest + name: Build + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Make Space For Build + run: | + sudo rm -rf /usr/share/dotnet + sudo rm -rf /opt/ghc + + - name: Build Dyninst Release Container + run: | + cd docker/ + docker build -f Dockerfile.release -t ghcr.io/dyninst/dyninst-ubuntu-20.04:latest ../ + + - name: GHCR Login + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Tag and Push Release Image + run: | + tag=${GITHUB_REF#refs/tags/} + echo "Tagging and releasing ghcr.io/dyninst/dyninst-ubuntu-20.04:${tag}" + docker tag ghcr.io/dyninst/dyninst-ubuntu-20.04:latest ghcr.io/dyninst/dyninst-ubuntu-20.04:${tag} + docker push ghcr.io/dyninst/dyninst-ubuntu-20.04:${tag} + + - name: Deploy + run: docker push ghcr.io/dyninst/dyninst-ubuntu-20.04:latest diff --git a/docker/Dockerfile.release b/docker/Dockerfile.release new file mode 100644 index 0000000000..32d4b0cb6b --- /dev/null +++ b/docker/Dockerfile.release @@ -0,0 +1,37 @@ +ARG dyninst_base=ghcr.io/dyninst/dyninst-ubuntu-20.04:latest +FROM ${dyninst_base} as builder + +# docker build -f Dockerfile.release -t ghcr.io/dyninst/dyninst-ubuntu-20.04:${tag} ../ + +# Add updated Dyninst code +COPY . /code + +# Add testing and build script to run +COPY ./docker/build.sh /opt/dyninst-env/build.sh + +# Previous WORKDIR, just to be careful - reinstall dyninst at release +WORKDIR /opt/dyninst-env +RUN /bin/bash build.sh && \ + spack gc -y + +# Strip all the binaries +RUN find -L /opt/dyninst-env/* -type f -exec readlink -f '{}' \; | \ + xargs file -i | \ + grep 'charset=binary' | \ + grep 'x-executable\|x-archive\|x-sharedlib' | \ + awk -F: '{print $1}' | xargs strip -s + +# Modifications to the environment that are necessary to run +RUN cd /opt/dyninst-env && \ + spack env activate --sh -d . >> /etc/profile.d/z10_spack_environment.sh + +# Bare OS image to run the installed executables +FROM ubuntu:20.04 + +ENV PATH=/opt/dyninst-env/.spack-env/bin:/opt/spack/bin:$PATH + +COPY --from=builder /opt/dyninst-env /opt/dyninst-env +COPY --from=builder /opt/spack /opt/spack +COPY --from=builder /etc/profile.d/z10_spack_environment.sh /etc/profile.d/z10_spack_environment.sh + +ENTRYPOINT ["/bin/bash", "--rcfile", "/etc/profile", "-l", "-c"] From 72b45571777aa0a44a03155409c979fb8b7df443 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sat, 12 Mar 2022 21:56:29 -0600 Subject: [PATCH 089/505] Remove usage of DW_AT_MIPS_linkage_name (#1223) This isn't part of DWARF4 or DWARF5. Co-authored-by: Tim Haines --- symtabAPI/src/dwarfWalker.C | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 14376ebe36..8b908cd466 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -1634,10 +1634,8 @@ bool DwarfWalker::findFuncName() { Dwarf_Attribute linkageNameAttr; Dwarf_Die e = entry(); - auto status = dwarf_attr_integrate(&e, DW_AT_MIPS_linkage_name, &linkageNameAttr); - if (status == 0) - status = dwarf_attr_integrate(&e, DW_AT_linkage_name, &linkageNameAttr); + auto status = dwarf_attr_integrate(&e, DW_AT_linkage_name, &linkageNameAttr); if ( status != 0 ) { // previously ==1 const char *dwarfName = dwarf_formstring(&linkageNameAttr); //DWARF_FAIL_RET(dwarfName); From 0a0ff0923b0ab50ff6d73baab613ed4df9b232f9 Mon Sep 17 00:00:00 2001 From: Vanessasaurus <814322+vsoch@users.noreply.github.com> Date: Sun, 13 Mar 2022 18:52:43 -0600 Subject: [PATCH 090/505] Docker: testing workflow to run libabigail (#1220) Run libabigail's abidiff to detect ABI breakages between the current PR and the last successful build as well as the current PR and the last release. * testing workflow to run libabigail! I am not sure if the artifact is extracted relative or not, so will need to update the workflow to account for that. This is also a new strategy that will try to do the new build/retrieval of artifacts from previous containers - have not tried this yet! Signed-off-by: vsoch Co-authored-by: vsoch Co-authored-by: Tim Haines --- .github/workflows/libabigail.yaml | 95 +++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 .github/workflows/libabigail.yaml diff --git a/.github/workflows/libabigail.yaml b/.github/workflows/libabigail.yaml new file mode 100644 index 0000000000..36ab118611 --- /dev/null +++ b/.github/workflows/libabigail.yaml @@ -0,0 +1,95 @@ +name: Libabigail ABI Checks +on: + pull_request: [] + +jobs: + get-release: + container: ghcr.io/dyninst/dyninst-ubuntu-20.04:v12.1.0 + runs-on: ubuntu-latest + steps: + - name: Upload Libs + uses: actions/upload-artifact@v2-preview + with: + name: release-libs + path: /opt/dyninst-env/install/dyninst/lib + + get-latest: + container: ghcr.io/dyninst/dyninst-ubuntu-20.04:latest + runs-on: ubuntu-latest + steps: + - name: Upload Libs + uses: actions/upload-artifact@v2-preview + with: + name: latest-libs + path: /opt/dyninst-env/install/dyninst/lib + + get-pr: + container: ghcr.io/dyninst/dyninst-ubuntu-20.04:latest + runs-on: ubuntu-latest + steps: + - name: Build Pull Request + uses: actions/checkout@v3 + - name: Build + run: | + rm -rf /code + cp -R $PWD /code + ls /code + cd /opt/dyninst-env + /bin/bash build.sh + + - name: Upload results + uses: actions/upload-artifact@v2-preview + with: + name: pr-libs + path: /opt/dyninst-env/install/dyninst/lib + + abi: + runs-on: ubuntu-latest + needs: [get-latest, get-release, get-pr] + strategy: + fail-fast: false + matrix: + + # Testing every paired library for release vs pr and main vs. pr + libs: ["libcommon.so", + "libdynC_API.so", + "libdynDwarf.so", + "libdynElf.so", + "libdyninstAPI_RT.so", + "libdyninstAPI.so", + "libinstructionAPI.so", + "libparseAPI.so", + "libpatchAPI.so", + "libpcontrol.so", + "libstackwalk.so", + "libsymLite.so", + "libsymtabAPI.so"] + + # Artifact pairs (named) for comparison) + artifacts: [["pr-libs", "latest-libs"], + ["pr-libs", "release-libs"]] + + steps: + - name: Download Previous Version + uses: actions/download-artifact@v2 + with: + name: ${{ matrix.artifacts[1] }} + path: previous/ + + - name: Download Pull Request Version + uses: actions/download-artifact@v2 + with: + name: ${{ matrix.artifacts[0] }} + path: current/ + + - name: Show Files + run: | + ls current/ + ls previous/ + + - name: Run Libabigail + uses: buildsi/libabigail-action@main + env: + lib: ${{ matrix.libs }} + with: + abidiff: previous/${{ env.lib }} current/${{ env.lib }} From 8454ff504cc96c64768aba741b66e3bc681bc64b Mon Sep 17 00:00:00 2001 From: kupsch Date: Mon, 21 Mar 2022 06:54:26 -0500 Subject: [PATCH 091/505] Correctly propagate pc ranges for blocks and local variables (#1226) - fix valid pc address ranges for local variables that are declared in a sub-block (brace, try and catch blocks) of their function - fix Context class's constructors so they correctly initialize and copy all member (use in-class initialize and default constructors) --- symtabAPI/src/dwarfWalker.C | 16 +++++++++++++ symtabAPI/src/dwarfWalker.h | 45 ++++++++++++------------------------- 2 files changed, 30 insertions(+), 31 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 8b908cd466..d3070fcf13 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -381,6 +381,12 @@ bool DwarfWalker::parse_int(Dwarf_Die e, bool parseSib, bool dissociate_context) case DW_TAG_lexical_block: ret = parseLexicalBlock(); break; + case DW_TAG_try_block: + ret = parseTryBlock(); + break; + case DW_TAG_catch_block: + ret = parseCatchBlock(); + break; case DW_TAG_common_block: ret = parseCommonBlock(); break; @@ -859,6 +865,16 @@ bool DwarfWalker::parseLexicalBlock() { return parseRangeTypes(dbg(), entry()); } +bool DwarfWalker::parseTryBlock() { + dwarf_printf("(0x%lx) Parsing try block ranges\n", id()); + return parseRangeTypes(dbg(), entry()); +} + +bool DwarfWalker::parseCatchBlock() { + dwarf_printf("(0x%lx) Parsing catch block ranges\n", id()); + return parseRangeTypes(dbg(), entry()); +} + bool DwarfWalker::parseCommonBlock() { dwarf_printf("(0x%lx) Parsing common block\n", id()); diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index 705896fb26..f8e54493eb 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -98,37 +98,18 @@ class DwarfParseActions { typedef boost::shared_ptr > > range_set_ptr; private: struct Context { - FunctionBase *func; - boost::shared_ptr commonBlock; - boost::shared_ptr enumType; - boost::shared_ptr enclosure; - bool parseSibling; - bool parseChild; - Dwarf_Die offset; - Dwarf_Die specEntry; - Dwarf_Die abstractEntry; - unsigned int tag; - Address base; - range_set_ptr ranges; - Context() : - func(NULL), commonBlock(NULL), - enumType(NULL), enclosure(NULL), - parseSibling(true), parseChild(true), - tag(0), base(0) { - } - Context(const Context& o) noexcept : - func(o.func), - commonBlock(o.commonBlock), - enumType(o.enumType), - enclosure(o.enclosure), - parseSibling(o.parseSibling), - parseChild(o.parseChild), - offset(o.offset), - specEntry(o.specEntry), - abstractEntry(o.specEntry), - tag(o.tag), - base(o.base) - {} + FunctionBase *func{}; + boost::shared_ptr commonBlock{}; + boost::shared_ptr enumType{}; + boost::shared_ptr enclosure{}; + bool parseSibling{true}; + bool parseChild{true}; + Dwarf_Die offset{}; + Dwarf_Die specEntry{}; + Dwarf_Die abstractEntry{}; + unsigned int tag{}; + Address base{}; + range_set_ptr ranges{}; }; std::stack c; @@ -290,6 +271,8 @@ class DwarfWalker : public DwarfParseActions { bool parseSubprogram(inline_t func_type); bool parseLexicalBlock(); + bool parseTryBlock(); + bool parseCatchBlock(); bool parseRangeTypes(Dwarf* dbg, Dwarf_Die die); bool parseCommonBlock(); bool parseConstant(); From 474ab1e480147fc2583e192e77a2a7526b88514f Mon Sep 17 00:00:00 2001 From: kupsch Date: Sun, 27 Mar 2022 13:56:27 -0500 Subject: [PATCH 092/505] Fix warnings with cmake's MINSIZEREL build type (#1235) - Explicitly define optimization flags for cmake's MINSIZEREL build type. Cmake by default includes -DNDEBUG. This results in assert being defined to do nothing. Dyninst use asserts as a fatal error reporting mechanism and expects assert to not return if the condition is always false. If assert can return then many warnings are produced due to this unexpect path. - Remove defining NDEBUG for REL build types if using the MSC compiler --- cmake/optimization.cmake | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cmake/optimization.cmake b/cmake/optimization.cmake index 1308bbcc31..a15f24084a 100644 --- a/cmake/optimization.cmake +++ b/cmake/optimization.cmake @@ -18,6 +18,9 @@ set (CMAKE_CXX_FLAGS_RELEASE "-O2 ${LTO_FLAGS}") set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}") set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}") +set (CMAKE_C_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}") +set (CMAKE_CXX_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}") + set (FORCE_FRAME_POINTER "-fno-omit-frame-pointer") # Ensure each library is fully linked set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") @@ -35,11 +38,14 @@ endif() set (CMAKE_C_FLAGS_DEBUG "/MP /Od /Zi /MDd /D_DEBUG") set (CMAKE_CXX_FLAGS_DEBUG "/MP /Od /Zi /MDd /D_DEBUG") -set (CMAKE_C_FLAGS_RELEASE "/MP /O2 /MD /D NDEBUG ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_RELEASE "/MP /O2 /MD /D NDEBUG ${LTO_FLAGS}") +set (CMAKE_C_FLAGS_RELEASE "/MP /O2 /MD ${LTO_FLAGS}") +set (CMAKE_CXX_FLAGS_RELEASE "/MP /O2 /MD ${LTO_FLAGS}") + +set (CMAKE_C_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD ${LTO_FLAGS}") +set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD ${LTO_FLAGS}") -set (CMAKE_C_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD /D NDEBUG ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD /D NDEBUG ${LTO_FLAGS}") +set (CMAKE_C_FLAGS_MINSIZEREL "/MP /O1 /MD ${LTO_FLAGS}") +set (CMAKE_CXX_FLAGS_MINSIZEREL "/MP /O1 /MD ${LTO_FLAGS}") set (FORCE_FRAME_POINTER "/Oy-") From 908b7c1d1279ada1312a03c14bf25ec19026582f Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 29 Mar 2022 15:19:51 -0500 Subject: [PATCH 093/505] Remove BUILD_RT option (#1238) When not enabled, the dyninstAPI_RT/cmake_install.cmake isn't present. This has been broken since it was implemented by e1afc6918 in 2016. --- CMakeLists.txt | 4 ---- cmake/options.cmake | 1 - 2 files changed, 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4c6d7d76e..eacbb0b793 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -106,7 +106,6 @@ if(${SYMREADER} MATCHES symtabAPI) add_subdirectory (parseThat) endif() -if(BUILD_RTLIB) # Build the RT library as a separate project so we can change compilers message(STATUS "Configuring DyninstAPI_RT in ${RT_BINARY_DIR}") file(REMOVE_RECURSE ${RT_BINARY_DIR}/CMakeCache.txt ${RT_BINARY_DIR}/CMakeFiles ${RT_BINARY_DIR}/Makefile) @@ -156,9 +155,6 @@ if(BUILD_RTLIB) install(SCRIPT "${RT_BINARY_DIR}/cmake_install.cmake") -else() - message(STATUS "Skipping DyninstAPI_RT. Be sure to build this library if you're using instrumentation.") -endif() set (VERSION_STRING "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}.${DYNINST_PATCH_VERSION}") set (DYNINST_NAME "DyninstAPI-${VERSION_STRING}") diff --git a/cmake/options.cmake b/cmake/options.cmake index 1f46d90df2..39e046a237 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -10,7 +10,6 @@ option (SW_ANALYSIS_STEPPER "Use ParseAPI-based analysis stepper in Stackwalker" option (BUILD_TARBALLS "Build Dyninst package tarballs. Requires git archive, tar, gzip." OFF) option (BUILD_RTLIB_32 "Build 32-bit runtime library on mixed 32/64 systems" OFF) -option(BUILD_RTLIB "Building runtime library (can be disabled safely for component-level builds)" ON) option(BUILD_DOCS "Build manuals from LaTeX sources" ON) option (ENABLE_LTO "Enable Link-Time Optimization" OFF) From cbd35bd28beea489a2d286c5fe95136ae2115954 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 29 Mar 2022 15:21:52 -0500 Subject: [PATCH 094/505] Add parsing of names for inlined functions in DWARF (#1237) * Clean up and enhance debug messages * Add parsing of names for inlined functions Co-authored-by: Tim Haines --- symtabAPI/src/dwarfWalker.C | 61 ++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 14 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index d3070fcf13..6459910a46 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -1645,26 +1645,59 @@ std::string DwarfWalker::die_name() { bool DwarfWalker::findFuncName() { - dwarf_printf("(0x%lx) Checking for linkage name\n", id()); - /* Prefer linkage names. */ + dwarf_printf("(0x%lx) Checking for function name\n", id()); - Dwarf_Attribute linkageNameAttr; Dwarf_Die e = entry(); - auto status = dwarf_attr_integrate(&e, DW_AT_linkage_name, &linkageNameAttr); - if ( status != 0 ) { // previously ==1 - const char *dwarfName = dwarf_formstring(&linkageNameAttr); - //DWARF_FAIL_RET(dwarfName); - if(dwarfName==NULL) return false; - curName() = dwarfName; - setMangledName(true); - dwarf_printf("(0x%lx) Found DW_AT_linkage_name of %s, using\n", id(), curName().c_str()); - return true; + // Does this function have a linkage name? + { + Dwarf_Attribute linkageNameAttr{}; + Dwarf_Attribute *attr = dwarf_attr_integrate(&e, DW_AT_linkage_name, &linkageNameAttr); + if (attr) { + char const* dwarfName = dwarf_formstring(attr); + if(!dwarfName) { + dwarf_printf("(0x%lx) Found 'DW_AT_linkage_name', but formstring is empty\n", id()); + return false; + } + curName() = dwarfName; + setMangledName(true); + dwarf_printf("(0x%lx) Found DW_AT_linkage_name of %s\n", id(), curName().c_str()); + return true; + } } - dwarf_printf("(0x%lx) DW_AT_linkage_name name not found\n", id()); - setMangledName(false); + // Is this an inlined function? + { + int const is_inline = dwarf_hasattr(&e, DW_AT_inline); + if(is_inline != -1) { + // Find the 'DW_AT_name' for this DIE. Do not traverse this as an abstract + // instance root (if it is one)- i.e., don't use dwarf_attr_integrate here. + Dwarf_Attribute nameAttr{}; + Dwarf_Attribute *res = dwarf_attr(&e, DW_AT_name, &nameAttr); + if(!res) { + dwarf_printf("(0x%lx) Found an inlined subroutine, but has no 'DW_AT_name'\n", id()); + return false; + } + char const* dwarfName = dwarf_formstring(&nameAttr); + if(!dwarfName) { + dwarf_printf("(0x%lx) Found an inlined subroutine, but formstring is empty\n", id()); + return false; + } + curName() = dwarfName; + + // Section 2.15 of the DWARF5 spec suggests that DW_AT_name should be the name as it + // appears in the source- not mangled. + setMangledName(false); + + dwarf_printf("(0x%lx) Found inline DW_AT_name '%s'\n", id(), curName().c_str()); + return true; + } + } + + // Assume the name is the unmangled name associated with the current DIE, if any curName() = std::move(die_name(entry())); + setMangledName(false); + dwarf_printf("(0x%lx) No explicit function name found; using most-recently found name '%s'\n", id(), curName().c_str()); return true; } From 10e1cebcf413b1d47f260aa7e3e115fe5f4c779f Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 29 Mar 2022 15:24:43 -0500 Subject: [PATCH 095/505] Remove void pointer arithmetic when using Valgrind annotations (#1236) gcc allows this as an extension by considering sizeof(void) to be 1 (http://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html). --- common/src/concurrent.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/common/src/concurrent.C b/common/src/concurrent.C index da959985b5..c3037ce69c 100644 --- a/common/src/concurrent.C +++ b/common/src/concurrent.C @@ -75,18 +75,18 @@ void dyn_c_annotations::rwdeinit(void* ptr) { } void dyn_c_annotations::wlock(void* ptr) { ANNOTATE_RWLOCK_ACQUIRED(ptr, 1 /* writer mode */); - ANNOTATE_HAPPENS_AFTER(ptr + 1); // After all the readers + ANNOTATE_HAPPENS_AFTER(static_cast(ptr) + 1); // After all the readers } void dyn_c_annotations::wunlock(void* ptr) { - ANNOTATE_HAPPENS_BEFORE(ptr + 2); + ANNOTATE_HAPPENS_BEFORE(static_cast(ptr) + 2); ANNOTATE_RWLOCK_RELEASED(ptr, 1 /* writer mode */); } void dyn_c_annotations::rlock(void* ptr) { ANNOTATE_RWLOCK_ACQUIRED(ptr, 0 /* reader mode */); - ANNOTATE_HAPPENS_AFTER(ptr + 2); // After the last writer + ANNOTATE_HAPPENS_AFTER(static_cast(ptr) + 2); // After the last writer } void dyn_c_annotations::runlock(void* ptr) { - ANNOTATE_HAPPENS_BEFORE(ptr + 1); + ANNOTATE_HAPPENS_BEFORE(static_cast(ptr) + 1); ANNOTATE_RWLOCK_RELEASED(ptr, 0 /* reader mode */); } #endif From ba15a859243898e5c84dc2c316d7d7fe78edd4c4 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 30 Mar 2022 17:19:21 -0500 Subject: [PATCH 096/505] Docker: use more OS packages for dependencies (#1221) * Docker: use more OS packages for dependencies This should have been part of #1211. --- docker/Dockerfile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4483cc77d7..299f16d99b 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -52,7 +52,10 @@ RUN apt-get -qq update && \ xsltproc \ cmake \ libboost1.71-all-dev \ - libtbb-dev + libtbb-dev \ + libxml2-dev \ + m4 \ + libncurses-dev # Install Clingo for Spack RUN python3 -m pip install --upgrade pip && \ @@ -80,7 +83,7 @@ RUN python3 -m pip install botocore boto3 && \ spack gpg trust key.pub # Find packages already installed on system, e.g. autoconf -RUN spack external find --not-buildable gcc@11.0.1 autoconf bzip2 git tar xz perl cmake && \ +RUN spack external find --not-buildable gcc@11.0.1 autoconf bzip2 git tar xz perl cmake m4 ncurses && \ spack config add 'packages:all:target:[x86_64]' # 'spack external find' doesn't work on libraries @@ -95,6 +98,11 @@ RUN printf "\n\ - spec: intel-tbb@${INTELTBB_VERSION}\n\ prefix: /usr\n\ buildable: false\n\ + libxml2:\n\ + externals:\n\ + - spec: libxml2@2.19.10\n\ + prefix: /usr\n\ + buildable: false\n\ " >> ~/.spack/packages.yaml # Add Dyninst source code here (e.g., from PR or master) From ceeffa67b5e7e06e76bee70c19ccf30b9ae54328 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sat, 2 Apr 2022 21:00:42 -0500 Subject: [PATCH 097/505] Docker: don't build Dyninst through spack for the environment (#1222) This results in two installations: one in /opt/dyninst-dev/.spack/include and one in /opt/dyninst-dev/install/dyninst. The former is not updated when testing a PR, so causes public header conflicts. --- docker/Dockerfile | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 299f16d99b..9c42954c24 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -118,19 +118,11 @@ RUN . /opt/spack/share/spack/setup-env.sh && \ spack env create -d . && \ echo " concretization: together" >> spack.yaml && \ spack env activate . && \ - - # This adds metadata for dyninst to spack.yaml - spack develop --path /code dyninst@${DYNINST_BRANCH} && \ - - # ...but we need spack add to add to the install list! - spack add dyninst@${DYNINST_BRANCH} && \ - - # Add our hard coded versions here. spack add cmake@${CMAKE_VERSION} && \ spack add perl@${PERL_VERSION} && \ spack add boost@${BOOST_VERSION} && \ spack add elfutils@${ELFUTILS_VERSION} && \ - spack add libiberty@${LIBIBERTY_VERSION} && \ + spack add libiberty@${LIBIBERTY_VERSION}+pic && \ spack add intel-tbb@${INTELTBB_VERSION} && \ spack install --reuse From 7a3964e2f64a8882b36a705af02f09c177826860 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Sun, 3 Apr 2022 23:21:21 -0500 Subject: [PATCH 098/505] Docker: use external-tests instead of testsuite in base image (#1209) This is in preparation for using -Werror when building Dyninst in the Github workflow. The test suite does not currently build cleanly, so we need a different set of tests. --- docker/Dockerfile | 5 +---- docker/Dockerfile.test | 18 +++++++++++++----- docker/build.sh | 26 +------------------------- docker/test.sh | 28 +++++++++++++++++----------- 4 files changed, 32 insertions(+), 45 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 9c42954c24..4339aba4bc 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -109,9 +109,6 @@ RUN printf "\n\ WORKDIR /code COPY . /code -# Add test code to base container so we can build tests here -RUN git clone https://github.com/dyninst/testsuite /opt/testsuite - # Install Dyninst to its own view WORKDIR /opt/dyninst-env RUN . /opt/spack/share/spack/setup-env.sh && \ @@ -126,6 +123,6 @@ RUN . /opt/spack/share/spack/setup-env.sh && \ spack add intel-tbb@${INTELTBB_VERSION} && \ spack install --reuse -# Build tests (but don't run) +# Build Dyninst COPY ./docker/build.sh build.sh RUN /bin/bash build.sh diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test index fb1ed8c763..3ebb608b0c 100644 --- a/docker/Dockerfile.test +++ b/docker/Dockerfile.test @@ -6,12 +6,20 @@ FROM ${dyninst_base} # Add updated Dyninst code COPY . /code -# Add testing and build script to run +# Add external tests code +#------ +# A key element of these tests is to be able to _build_ against a Dyninst installation +# As such, we don't need to keep them in the base image +RUN git clone --depth=1 https://github.com/dyninst/external-tests /opt/external-tests + +# Add build scripts to run COPY ./docker/build.sh /opt/dyninst-env/build.sh COPY ./docker/test.sh /opt/dyninst-env/test.sh -# Previous WORKDIR, just to be careful - reinstall dyninst if needed -# Thenbuild and run the test suite WORKDIR /opt/dyninst-env -RUN /bin/bash build.sh && \ - /bin/bash test.sh + +# Build Dyninst +RUN /bin/bash build.sh + +# Run the tests +RUN /bin/bash test.sh diff --git a/docker/build.sh b/docker/build.sh index b002397089..58dd67a23e 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -1,8 +1,6 @@ #!/bin/bash set -euo pipefail -# This script builds dyninst and the test suite (but does not run tests) - printf "⭐️ Setting up spack environment for Dyninst\n" . /opt/spack/share/spack/setup-env.sh spack env activate . @@ -17,30 +15,8 @@ mkdir -p $DYNINST_BUILD_DIR DYNINST_INSTALL_DIR=/opt/dyninst-env/install/dyninst mkdir -p $DYNINST_INSTALL_DIR -cmake -S /code -B $DYNINST_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$DYNINST_INSTALL_DIR +cmake -S /code -B $DYNINST_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$DYNINST_INSTALL_DIR cmake --build $DYNINST_BUILD_DIR -- -j2 cmake --install $DYNINST_BUILD_DIR echo "::endgroup::" - -# 2. Update the test suite -printf "⭐️ Updating the testsuite\n" -echo "::group::update testsuite" -git -C /opt/testsuite pull origin master -echo "::endgroup::" - -# 3. Build the test suite -printf "⭐️ Preparing to build the testsuite\n" -echo "::group::build tests" - -TESTSUITE_BUILD_DIR=/opt/dyninst-env/build/testsuite -mkdir -p $TESTSUITE_BUILD_DIR - -TESTSUITE_INSTALL_DIR=/opt/dyninst-env/install/testsuite -mkdir -p $TESTSUITE_INSTALL_DIR - -cmake -S /opt/testsuite -B $TESTSUITE_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$TESTSUITE_INSTALL_DIR -DDyninst_DIR=$DYNINST_INSTALL_DIR/lib/cmake/Dyninst -cmake --build $TESTSUITE_BUILD_DIR -- -j2 -cmake --install $TESTSUITE_BUILD_DIR --prefix $TESTSUITE_INSTALL_DIR -mv $TESTSUITE_INSTALL_DIR/bin/testsuite/* $TESTSUITE_INSTALL_DIR -echo "::endgroup::" diff --git a/docker/test.sh b/docker/test.sh index 9a749b96d3..e4bdde02d1 100755 --- a/docker/test.sh +++ b/docker/test.sh @@ -5,15 +5,21 @@ printf "⭐️ Setting up spack environment for Dyninst\n" . /opt/spack/share/spack/setup-env.sh spack env activate . -# 3. Run the tests -printf "⭐️ Running tests...\n" -cd /opt/dyninst-env/install/testsuite -export DYNINSTAPI_RT_LIB=/opt/dyninst-env/install/dyninst/lib/libdyninstAPI_RT.so -export OMP_NUM_THREADS=2 -export LD_LIBRARY_PATH=/opt/dyninst-env/install/dyninst/lib:$PWD:$LD_LIBRARY_PATH -./runTests -64 -all -log test.log -j1 > >(tee stdout.log) 2> >(tee stderr.log >&2) +# Build the tests +# NB: There are no tests to execute (yet), so building is the actual test +printf "⭐️ Building external-tests\n" +echo "::group::build external-tests" -# TODO will update here to upload given merge to master -# Run the build script to collect and process the logs then upload them -# cd /opt/dyninst-env && \ -# perl /opt/testsuite/scripts/build/build.pl --hostname=ci-github --quiet --restart=build --no-run-tests --upload --auth-token=xxxxxxxxxxxxxxxxxxx +DYNINST_INSTALL_DIR=/opt/dyninst-env/install/dyninst + +TESTS_BUILD_DIR=/opt/dyninst-env/build/external-tests +mkdir -p $TESTS_BUILD_DIR + +TESTS_INSTALL_DIR=/opt/dyninst-env/install/external-tests +mkdir -p $TESTS_INSTALL_DIR + +cmake -S /opt/external-tests -B $TESTS_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$TESTS_INSTALL_DIR -DDyninst_DIR=$DYNINST_INSTALL_DIR/lib/cmake/Dyninst +cmake --build $TESTS_BUILD_DIR +cmake --install $TESTS_BUILD_DIR + +echo "::endgroup::" From 8f8497e56108d6e7228756d317197a4dda8819c5 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 4 Apr 2022 11:15:00 -0500 Subject: [PATCH 099/505] Docker: make compile warnings fatal (#1242) --- docker/build.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker/build.sh b/docker/build.sh index 58dd67a23e..804aa60215 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -15,7 +15,8 @@ mkdir -p $DYNINST_BUILD_DIR DYNINST_INSTALL_DIR=/opt/dyninst-env/install/dyninst mkdir -p $DYNINST_INSTALL_DIR -cmake -S /code -B $DYNINST_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$DYNINST_INSTALL_DIR +CMAKE_WERROR_FLAGS='-DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror"' +cmake -S /code -B $DYNINST_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$DYNINST_INSTALL_DIR $CMAKE_WERROR_FLAGS cmake --build $DYNINST_BUILD_DIR -- -j2 cmake --install $DYNINST_BUILD_DIR From 74320b0184de52f91dbf6c1dba2d0f54aa2475c6 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 4 Apr 2022 13:05:59 -0500 Subject: [PATCH 100/505] Remove unused git files (#1244) .gitmodules hasn't been used since the test suite was moved to its own repository. .github_changelog_generate hasn't been used since v10.0.0 --- .github_changelog_generator | 3 --- .gitmodules | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 .github_changelog_generator delete mode 100644 .gitmodules diff --git a/.github_changelog_generator b/.github_changelog_generator deleted file mode 100644 index 913f54fa8f..0000000000 --- a/.github_changelog_generator +++ /dev/null @@ -1,3 +0,0 @@ -unreleased=true -future-release=10.1.0 -since-tag=10.0.0 diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index d6a81b84ba..0000000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "testsuite"] - path = testsuite - url = https://github.com/dyninst/testsuite From 0d9b8e4c5ba6dfa5d5666956aca4404d49f2160a Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 29 Mar 2022 22:51:18 -0500 Subject: [PATCH 101/505] Improve compiler diagnostic suppression handling (#1239) - Create compiler specific diagnostic suppression macros to suppress a type of warning for a region of code that are consistently defined based on the build environment. - Replace current multi-line preprocessor #if and #pragma statements with one macro. - Add suppression for warnings in instructionAPI/src/Register.C when using gcc 6-8. --- common/h/compiler_diagnostics.h | 146 ++++++++++++++++++++++++++++++++ dyninstAPI/src/inst-x86.C | 36 +++----- dyninstAPI_RT/h/dyninstAPI_RT.h | 19 ++--- instructionAPI/src/Register.C | 9 ++ 4 files changed, 176 insertions(+), 34 deletions(-) create mode 100644 common/h/compiler_diagnostics.h diff --git a/common/h/compiler_diagnostics.h b/common/h/compiler_diagnostics.h new file mode 100644 index 0000000000..0bafeb4f64 --- /dev/null +++ b/common/h/compiler_diagnostics.h @@ -0,0 +1,146 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef COMPILER_DIAGNOSTICS_H +#define COMPILER_DIAGNOSTICS_H + +// This file defines macros to suppress compiler diagnostics for a region of +// code. They are used to suppress diagnostic that are due to 1) non-standard +// code and 2) the compiler produced false positives. They expand to nothing +// if not applicable with the current compiler. +// +// The macros to begin and end the region take the form: +// +// DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_ +// DYNINST_DIAGNOSTIC_END_SUPPRESS_ +// +// They should be place on a lines of their own without trailing '()' or ';'. +// +// Currently defined value for are +// +// FLEX_ARRAY +// warning about C flexible arrays in C++ +// LOGICAL_OP +// warning about duplicate subexpressions in a logical expression +// Is a false positive due compiler checks after macro/constant +// propagation (eg. (x == a && x == b) if a and b are distinct +// constants with the same physical value. Only gcc 6-8. +// DUPLICATED_BRANCHES +// similar to LOGICAL_OP except the expressions are the +// conditionals of a chain of if/then/else's. Only gcc 7-8. +// +// Define DYNINST_DIAGNOSTIC_NO_SUPPRESSIONS to prevents suppressions. + + +// Define compiler specific suppression codes, an undefined value represents no +// suppression required. Suppression code macro names have the form +// +// DYNINST_SUPPRESS_CODE_ +// +#if defined(__GNUC__) && !defined(__clang__) + #define DYNINST_SUPPRESS_CODE_FLEX_ARRAY "-Wpedantic" + #if __GNUC__ < 9 + #define DYNINST_SUPPRESS_CODE_LOGICAL_OP "-Wlogical-op" + #endif + #if __GNUC__ >= 7 && __GNUC__ < 9 + #define DYNINST_SUPPRESS_CODE_DUPLICATED_BRANCHES "-Wduplicated-branches" + #endif +#elif defined(__clang__) + #define DYNINST_SUPPRESS_CODE_FLEX_ARRAY "-Wpedantic" +#elif defined(_MSC_VER) + #define DYNINST_SUPPRESS_CODE_FLEX_ARRAY 4200 +#endif + +// Define DYNISNT_DIAGNOSTIC_BEGIN/END macros, expands to nothing if code undefined +#ifdef DYNINST_SUPPRESS_CODE_FLEX_ARRAY + #define DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_FLEX_ARRAY DYNINST_DIAGNOSTIC_PUSH_SUPPRESS_CODE(FLEX_ARRAY) + #define DYNINST_DIAGNOSTIC_END_SUPPRESS_FLEX_ARRAY DYNINST_DIAGNOSTIC_POP +#else + #define DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_FLEX_ARRAY + #define DYNINST_DIAGNOSTIC_END_SUPPRESS_FLEX_ARRAY +#endif + +#ifdef DYNINST_SUPPRESS_CODE_LOGICAL_OP + #define DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_LOGICAL_OP DYNINST_DIAGNOSTIC_PUSH_SUPPRESS_CODE(LOGICAL_OP) + #define DYNINST_DIAGNOSTIC_END_SUPPRESS_LOGICAL_OP DYNINST_DIAGNOSTIC_POP +#else + #define DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_LOGICAL_OP + #define DYNINST_DIAGNOSTIC_END_SUPPRESS_LOGICAL_OP +#endif + +#ifdef DYNINST_SUPPRESS_CODE_DUPLICATED_BRANCHES + #define DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_DUPLICATED_BRANCHES DYNINST_DIAGNOSTIC_PUSH_SUPPRESS_CODE(DUPLICATED_BRANCHES) + #define DYNINST_DIAGNOSTIC_END_SUPPRESS_DUPLICATED_BRANCHES DYNINST_DIAGNOSTIC_POP +#else + #define DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_DUPLICATED_BRANCHES + #define DYNINST_DIAGNOSTIC_END_SUPPRESS_DUPLICATED_BRANCHES +#endif + + +// Create pragma from parameters +#define DYNINST_Pragma(x) _Pragma(#x) + +// Create compiler specific macros +// +// DYNINST_DIAGNOSTIC_Pragma(x) - diagnostic pragma for x which is unquoted +// DYNINST_DIAGNOSTIC_SUPPRESS(x) - diagnostic pragma to suppress warning x: +// quoted string (gcc), number (MSVC) + +#ifndef DYNINST_DIAGNOSTIC_NO_SUPPRESSIONS + #if defined(__GNUC__) + #define DYNINST_DIAGNOSTIC_Pragma(x) DYNINST_Pragma(GCC diagnostic x) + #define DYNINST_DIAGNOSTIC_SUPPRESS(x) DYNINST_DIAGNOSTIC_Pragma(ignored x) + #elif defined(_MSC_VER) + #define DYNINST_DIAGNOSTIC_Pragma(x) DYNINST_Pragma(warning(x)) + #define DYNINST_DIAGNOSTIC_SUPPRESS(x) DYNINST_DIAGNOSTIC_Pragma(disable:x) + #endif +#endif + +// if not defined, expand to nothing +#ifndef DYNINST_DIAGNOSTIC_Pragma + #define DYNINST_DIAGNOSTIC_Pragma(x) +#endif +#ifndef DYNINST_DIAGNOSTIC_SUPPRESS + #define DYNINST_DIAGNOSTIC_SUPPRESS(x) +#endif + +// Define macros in terms of compiler specific macros +// +// DYNINST_DIAGNOSTIC_POP - pop stack of pushed diagnostic state +// DYNINST_DIAGNOSTIC_PUSH - push current diagnostic state on stack +// DYNINST_DIAGNOSTIC_PUSH_SUPPRESS(x) - push diagnostic state and add suppression x + +#define DYNINST_DIAGNOSTIC_POP DYNINST_DIAGNOSTIC_Pragma(pop) +#define DYNINST_DIAGNOSTIC_PUSH DYNINST_DIAGNOSTIC_Pragma(push) +#define DYNINST_DIAGNOSTIC_PUSH_SUPPRESS(x) DYNINST_DIAGNOSTIC_PUSH \ + DYNINST_DIAGNOSTIC_SUPPRESS(x) +#define DYNINST_DIAGNOSTIC_PUSH_SUPPRESS_CODE(x) DYNINST_DIAGNOSTIC_PUSH_SUPPRESS(DYNINST_SUPPRESS_CODE_##x) + +#endif /* COMPILER_DIAGNOSTICS_H */ diff --git a/dyninstAPI/src/inst-x86.C b/dyninstAPI/src/inst-x86.C index ead580f940..1ccda1aa98 100644 --- a/dyninstAPI/src/inst-x86.C +++ b/dyninstAPI/src/inst-x86.C @@ -37,6 +37,7 @@ #include #include "common/src/headers.h" #include "compiler_annotations.h" +#include "compiler_diagnostics.h" #include #include "dyninstAPI/src/image.h" #include "dyninstAPI/src/inst.h" @@ -1532,19 +1533,15 @@ stackItemLocation getHeightOf(stackItem sitem, codeGen &gen) RealRegister reg; int addr_width = gen.addrSpace()->getAddressWidth(); -#if defined(__GNUC__) - #pragma GCC diagnostic push - #if __GNUC__ >= 7 - // disable warning as the registers numbers are identical for 32-bit - // and 64-bit but use semantically distinct names - #pragma GCC diagnostic ignored "-Wduplicated-branches" - #endif -#endif + + // Suppress warning (for compilers where it is a false positive) + // The value of REGNUM_EBP and REGNUM_RBP are identical + DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_DUPLICATED_BRANCHES + RealRegister plat_bp(addr_width == 4 ? REGNUM_EBP : REGNUM_RBP); RealRegister plat_sp(addr_width == 4 ? REGNUM_ESP : REGNUM_RSP); -#if defined(__GNUC__) - #pragma GCC diagnostic pop -#endif + + DYNINST_DIAGNOSTIC_END_SUPPRESS_DUPLICATED_BRANCHES if (sitem.item == stackItem::reg_item && sitem.reg.reg() == plat_sp.reg()) { @@ -2382,18 +2379,13 @@ Emitter *AddressSpace::getEmitter() #if defined(arch_x86_64) int registerSpace::framePointer() { -#if defined(__GNUC__) - #pragma GCC diagnostic push - #if __GNUC__ >= 7 - // disable warning as the registers numbers are identical for 32-bit - // and 64-bit but use semantically distinct names - #pragma GCC diagnostic ignored "-Wduplicated-branches" - #endif -#endif + // Suppress warning (for compilers where it is a false positive) + // The value of REGNUM_EBP and REGNUM_RBP are identical + DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_DUPLICATED_BRANCHES + return addr_width == 8 ? REGNUM_RBP : REGNUM_EBP; -#if defined(__GNUC__) - #pragma GCC diagnostic pop -#endif + + DYNINST_DIAGNOSTIC_END_SUPPRESS_DUPLICATED_BRANCHES } #elif defined(arch_x86) int registerSpace::framePointer() { diff --git a/dyninstAPI_RT/h/dyninstAPI_RT.h b/dyninstAPI_RT/h/dyninstAPI_RT.h index f5f8cda93e..0229ad5321 100644 --- a/dyninstAPI_RT/h/dyninstAPI_RT.h +++ b/dyninstAPI_RT/h/dyninstAPI_RT.h @@ -56,6 +56,7 @@ #include #include "dyninstRTExport.h" #include "common/src/Types.h" +#include "common/h/compiler_diagnostics.h" /* If we must make up a boolean type, we should make it unique */ typedef unsigned char RT_Boolean; @@ -166,15 +167,10 @@ typedef struct { #define TRAP_HEADER_SIG 0x759191D6 #define DT_DYNINST 0x6D191957 -#if defined(_MSC_VER) -#pragma warning(disable:4200) -#endif -#if defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wpedantic" -// Disable warning about flexible array members in C++ -// FIXME: Flexible array member, traps[], in structure below -#endif +// Suppress warning about flexible array members not valid in C++ +// FIXME: invalid flexible array member, traps[], in structure below +DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_FLEX_ARRAY + struct trap_mapping_header { uint32_t signature; uint32_t num_entries; @@ -184,9 +180,8 @@ struct trap_mapping_header { uint64_t high_entry; trapMapping_t traps[]; //Don't change this to a pointer, despite any compiler warnings }; -#if defined(__GNUC__) -#pragma GCC diagnostic pop -#endif + +DYNINST_DIAGNOSTIC_END_SUPPRESS_FLEX_ARRAY #define MAX_MEMORY_MAPPER_ELEMENTS 1024 diff --git a/instructionAPI/src/Register.C b/instructionAPI/src/Register.C index beaea43b0a..f70ebcf9c7 100644 --- a/instructionAPI/src/Register.C +++ b/instructionAPI/src/Register.C @@ -38,6 +38,7 @@ #include "InstructionDecoder-power.h" #include "dyn_regs.h" #include "ArchSpecificFormatters.h" +#include "../../common/h/compiler_diagnostics.h" using namespace std; @@ -110,6 +111,12 @@ namespace Dyninst uint32_t id = m_Reg & 0xff ; uint32_t regClass = m_Reg.regClass(); uint32_t size = (m_High - m_Low ) / 32; + + // Suppress warning (for compilers where it is a false positive) + // The values of the two *::SGPR constants are identical, as + // are the two *::VGPR constants + DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_LOGICAL_OP + if( regClass == amdgpu_cdna2::SGPR || regClass == amdgpu_vega::SGPR){ return "S["+to_string(id) + ":" + to_string(id+size-1)+"]"; } @@ -118,6 +125,8 @@ namespace Dyninst return "V["+to_string(id) + ":" + to_string(id+size-1)+"]"; } + DYNINST_DIAGNOSTIC_END_SUPPRESS_LOGICAL_OP + if(regClass == amdgpu_cdna2::ACC_VGPR){ return "ACC["+to_string(id) + ":" + to_string(id+size-1)+"]"; } From c004b33915051bd1eed99edc81b49956dc8a1f8c Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 29 Mar 2022 22:53:24 -0500 Subject: [PATCH 102/505] Remove MSC compiler warning suppressions (#1239) Likely no longer needed with current MSC compiler and will hide problems if MSC is used. - Removed diagnostic suppressing pragmas - Removed compiler command line suppression options --- cmake/warnings.cmake | 2 -- common/h/Annotatable.h | 6 ------ common/h/Graph.h | 3 --- common/h/Node.h | 3 --- common/h/util.h | 4 ---- common/src/arch-x86.h | 5 ----- common/src/debug_common.C | 10 ---------- common/src/ntHeaders.h | 2 -- dataflowAPI/src/debug_dataflow.C | 8 -------- dyninstAPI/h/BPatch.h | 8 -------- dyninstAPI/h/BPatch_dll.h | 12 ------------ dyninstAPI/h/BPatch_function.h | 9 --------- dyninstAPI/h/BPatch_image.h | 7 ------- dyninstAPI/h/BPatch_point.h | 9 --------- instructionAPI/h/BinaryFunction.h | 4 ---- instructionAPI/h/InstructionAST.h | 9 --------- instructionAPI/h/InstructionDecoder.h | 4 ---- parseAPI/src/debug_parse.C | 9 --------- proccontrol/src/handler.C | 4 ---- proccontrol/src/irpc.C | 4 ---- proccontrol/src/process.C | 4 ---- proccontrol/src/processplat.C | 4 ---- proccontrol/src/procset.C | 3 --- proccontrol/src/windows_process.h | 1 - proccontrol/src/x86_process.C | 4 ---- symtabAPI/src/debug.C | 10 ---------- 26 files changed, 148 deletions(-) diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index 6927782b16..e9e7c10e6a 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -132,8 +132,6 @@ unset(CMAKE_REQUIRED_FLAGS) if (MSVC) message(STATUS "TODO: Set up custom warning flags for MSVC") - string(APPEND CMAKE_C_FLAGS "/wd4251 /wd4091 /wd4503") - string(APPEND CMAKE_CXX_FLAGS "/wd4251 /wd4091 /wd4503") endif() message(STATUS "Using C warning flags: ${SUPPORTED_C_WARNING_FLAGS}") diff --git a/common/h/Annotatable.h b/common/h/Annotatable.h index 1f4f4b9d36..8d3d5a111f 100644 --- a/common/h/Annotatable.h +++ b/common/h/Annotatable.h @@ -351,8 +351,6 @@ class COMMON_EXPORT AnnotatableSparse #if defined (_MSC_VER) typedef dyn_hash_map annos_by_type_t; -#pragma warning (push) -#pragma warning (disable:4251) #else typedef dyn_hash_map annos_by_type_t; #endif @@ -748,8 +746,4 @@ class COMMON_EXPORT AnnotatableSparse } // namespace -#ifdef _MSC_VER -#pragma warning(pop) -#endif - #endif diff --git a/common/h/Graph.h b/common/h/Graph.h index d6c94c5a79..815a726b8c 100644 --- a/common/h/Graph.h +++ b/common/h/Graph.h @@ -46,9 +46,6 @@ #include "Annotatable.h" #include "Node.h" -#if defined(_MSC_VER) -#pragma warning(disable:4251) -#endif namespace Dyninst { class Edge; diff --git a/common/h/Node.h b/common/h/Node.h index 6b0dbb595c..f2ceb9c0e5 100644 --- a/common/h/Node.h +++ b/common/h/Node.h @@ -39,9 +39,6 @@ #include "dyntypes.h" #include "boost/shared_ptr.hpp" -#if defined(_MSC_VER) -#pragma warning(disable:4251) -#endif class BPatch_function; class BPatch_basicBlock; diff --git a/common/h/util.h b/common/h/util.h index eb0a1dc912..a76885e0a3 100644 --- a/common/h/util.h +++ b/common/h/util.h @@ -204,10 +204,6 @@ #include #include "dyntypes.h" -#if defined(_MSC_VER) -#pragma warning(disable: 4251 4275 4396 4996) -#endif - namespace Dyninst { diff --git a/common/src/arch-x86.h b/common/src/arch-x86.h index 21a168dd7d..e78f0844aa 100644 --- a/common/src/arch-x86.h +++ b/common/src/arch-x86.h @@ -44,11 +44,6 @@ #include "common/src/ia32_locations.h" -#if defined(i386_unknown_nt4_0) -// disable VC++ warning C4800: (performance warning) -// forcing 'unsigned int' value to bool 'true' or 'false' -#pragma warning (disable : 4800) -#endif namespace NS_x86 { diff --git a/common/src/debug_common.C b/common/src/debug_common.C index ee5b69e800..b2bbed4b47 100644 --- a/common/src/debug_common.C +++ b/common/src/debug_common.C @@ -40,11 +40,6 @@ int common_debug_lineinfo = 0; int common_debug_parsing = 0; int common_debug_initialized = 0; -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4996) -#endif - bool init_debug_common() { if (common_debug_initialized) return true; common_debug_initialized = 1; @@ -125,8 +120,3 @@ int common_parsing_printf_int(const char *format, ...) return ret; } - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif - diff --git a/common/src/ntHeaders.h b/common/src/ntHeaders.h index 55e0228bcc..4bcd626875 100644 --- a/common/src/ntHeaders.h +++ b/common/src/ntHeaders.h @@ -34,8 +34,6 @@ #if !defined(pd_nt_headers_h) #define pd_nt_headers_h -#pragma warning( disable : 4996 ) - #include #include diff --git a/dataflowAPI/src/debug_dataflow.C b/dataflowAPI/src/debug_dataflow.C index 35a17b4c80..dbfd47f143 100644 --- a/dataflowAPI/src/debug_dataflow.C +++ b/dataflowAPI/src/debug_dataflow.C @@ -57,10 +57,6 @@ static int check_debug_flag(int &flag) { static std::once_flag initialized; -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4996) -#endif std::call_once(initialized, []() { @@ -91,10 +87,6 @@ static int check_debug_flag(int &flag) }); -#if defined(_MSC_VER) -#pragma warning(pop) -#endif - return flag; } diff --git a/dyninstAPI/h/BPatch.h b/dyninstAPI/h/BPatch.h index afceef77fd..acbadb34f2 100644 --- a/dyninstAPI/h/BPatch.h +++ b/dyninstAPI/h/BPatch.h @@ -73,10 +73,6 @@ class func_instance; #define DYNINST_MINOR DYNINST_MINOR_VERSION #define DYNINST_SUBMINOR DYNINST_PATCH_VERSION -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable:4251) -#endif // BPatch_stats is a collection of instrumentation statistics. // Introduced to export this information to paradyn, which @@ -679,9 +675,5 @@ class BPATCH_DLL_EXPORT BPatch { void addNonReturningFunc(std::string name); }; -#ifdef _MSC_VER -#pragma warning(pop) -#endif - #endif /* _BPatch_h_ */ diff --git a/dyninstAPI/h/BPatch_dll.h b/dyninstAPI/h/BPatch_dll.h index 1621c7d7ff..0c350567d0 100644 --- a/dyninstAPI/h/BPatch_dll.h +++ b/dyninstAPI/h/BPatch_dll.h @@ -28,10 +28,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#if defined(_MSC_VER) -#pragma warning(disable:4251) -#endif - #ifndef _BPatch_dll_h_ #define _BPatch_dll_h_ @@ -44,14 +40,6 @@ #define BPATCH_DLL_EXPORT #else #if defined(_MSC_VER) -// we get numerous spurious warnings about having some template classes -// needing to have a dll-interface if instances of these classes are -// to be used by classes whose public interfaces are exported from a DLL. -// Specifing the template classes with a DLL export interface doesn't -// satisfy the compiler. Until the compiler handles instantiated -// templates exported from DLLs better, we disable the warning when building -// or using the dyninstAPI DLL. -#pragma warning(disable:4251) #ifdef BPATCH_DLL_BUILD // we are building the dyninstAPI DLL diff --git a/dyninstAPI/h/BPatch_function.h b/dyninstAPI/h/BPatch_function.h index dccfd47070..5ec5cb2e32 100644 --- a/dyninstAPI/h/BPatch_function.h +++ b/dyninstAPI/h/BPatch_function.h @@ -102,17 +102,8 @@ class BPATCH_DLL_EXPORT BPatch_function : void identifyParamDependencies(BPatch_function* callee, void* calleeAddress); -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4251) -#endif - // Disable warning that these vectors cannot be used externally, - // which is irrelevant since the vectors are private std::map local_vars; BPatch_Vector params; -#if defined(_MSC_VER) -#pragma warning(pop) -#endif public: //dynC internal use only diff --git a/dyninstAPI/h/BPatch_image.h b/dyninstAPI/h/BPatch_image.h index e1aaca42a7..15b2a7bbd6 100644 --- a/dyninstAPI/h/BPatch_image.h +++ b/dyninstAPI/h/BPatch_image.h @@ -300,10 +300,6 @@ class BPATCH_DLL_EXPORT BPatch_image: public BPatch_sourceObj { void removeObject(BPatch_object *obj); void removeAllModules(); -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4251) -#endif typedef std::map ModMap; typedef std::map ObjMap; @@ -315,9 +311,6 @@ class BPATCH_DLL_EXPORT BPatch_image: public BPatch_sourceObj { BPatch_Vector removed_list; BPatch_Vector unresolvedCF; -#if defined(_MSC_VER) -#pragma warning(pop) -#endif // These private "find" functions convert from internal func_instance // representation to the exported BPatch_Function type diff --git a/dyninstAPI/h/BPatch_point.h b/dyninstAPI/h/BPatch_point.h index 70075720d4..db63f68e13 100644 --- a/dyninstAPI/h/BPatch_point.h +++ b/dyninstAPI/h/BPatch_point.h @@ -147,18 +147,9 @@ class BPATCH_DLL_EXPORT BPatch_point { AddressSpace *getAS(); private: -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4251) -#endif - // Disable warning that these vectors cannot be used externally, - // which is irrelevant since the vectors are private BPatch_Vector preSnippets; BPatch_Vector postSnippets; BPatch_Vector allSnippets; -#if defined(_MSC_VER) -#pragma warning(pop) -#endif public: //~BPatch_point() { delete memacc; }; diff --git a/instructionAPI/h/BinaryFunction.h b/instructionAPI/h/BinaryFunction.h index 34fdaa42c2..e3a217af1d 100644 --- a/instructionAPI/h/BinaryFunction.h +++ b/instructionAPI/h/BinaryFunction.h @@ -37,10 +37,6 @@ #include "ArchSpecificFormatters.h" #include -#if defined(_MSC_VER) -#pragma warning(disable:4251) -#endif - namespace Dyninst { namespace InstructionAPI diff --git a/instructionAPI/h/InstructionAST.h b/instructionAPI/h/InstructionAST.h index 93a7b63b05..206e8b8a26 100644 --- a/instructionAPI/h/InstructionAST.h +++ b/instructionAPI/h/InstructionAST.h @@ -31,12 +31,6 @@ #if !defined(INSTRUCTIONAST_H) #define INSTRUCTIONAST_H -#if defined(_MSC_VER) -// Exported class inheriting from non-exported class. This is by design; don't -// use the shared_from_this externally! -#pragma warning(push) -#pragma warning(disable:4251) -#endif #include "util.h" #include @@ -126,9 +120,6 @@ namespace Dyninst }; } } -#if defined(_MSC_VER) -#pragma warning(pop) -#endif #endif //!defined(INSTRUCTIONAST_H) diff --git a/instructionAPI/h/InstructionDecoder.h b/instructionAPI/h/InstructionDecoder.h index 7dc4b93bd4..d3d125296a 100644 --- a/instructionAPI/h/InstructionDecoder.h +++ b/instructionAPI/h/InstructionDecoder.h @@ -33,10 +33,6 @@ #include "Instruction.h" -#if defined(_MSC_VER) -#pragma warning(disable:4251) -#endif - namespace Dyninst { namespace InstructionAPI diff --git a/parseAPI/src/debug_parse.C b/parseAPI/src/debug_parse.C index 498dc5f5e5..eea6b94019 100644 --- a/parseAPI/src/debug_parse.C +++ b/parseAPI/src/debug_parse.C @@ -40,11 +40,6 @@ int Dyninst::ParseAPI::dyn_debug_malware = 0; int Dyninst::ParseAPI::dyn_debug_indirect_collect = 0; int Dyninst::ParseAPI::dyn_debug_initialized = 0; -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4996) -#endif - #if defined(_OPENMP) #include #endif @@ -139,7 +134,3 @@ const std::string PARSE_TAILCALL_FAIL("isTailcallFail"); const std::string PARSE_TOTAL_TIME("parseTotalTime"); const std::string PARSE_JUMPTABLE_TIME("parseJumpTableTime"); - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif diff --git a/proccontrol/src/handler.C b/proccontrol/src/handler.C index 9f7d667057..c7efb1d64b 100644 --- a/proccontrol/src/handler.C +++ b/proccontrol/src/handler.C @@ -53,10 +53,6 @@ using namespace std; #include #include -#ifdef _MSC_VER -#pragma warning(disable:4477) -#endif - Handler::Handler(std::string name_) : name(name_) { diff --git a/proccontrol/src/irpc.C b/proccontrol/src/irpc.C index 8be07974a2..cb40eeb65c 100644 --- a/proccontrol/src/irpc.C +++ b/proccontrol/src/irpc.C @@ -48,10 +48,6 @@ #include #include -#ifdef _MSC_VER -#pragma warning(disable:4477) -#endif - using namespace std; unsigned long int_iRPC::next_id; diff --git a/proccontrol/src/process.C b/proccontrol/src/process.C index 1fb3da15ee..8b68f265ea 100644 --- a/proccontrol/src/process.C +++ b/proccontrol/src/process.C @@ -59,10 +59,6 @@ #include #include -#if defined(os_windows) -#pragma warning(disable:4355 4477) -#endif - using namespace Dyninst; using namespace ProcControlAPI; using namespace std; diff --git a/proccontrol/src/processplat.C b/proccontrol/src/processplat.C index fd411ce9da..a8f7895038 100644 --- a/proccontrol/src/processplat.C +++ b/proccontrol/src/processplat.C @@ -35,10 +35,6 @@ #include "processplat.h" #include "int_event.h" -#ifdef _MSC_VER -#pragma warning(disable:4477) -#endif - using namespace Dyninst; using namespace ProcControlAPI; using namespace std; diff --git a/proccontrol/src/procset.C b/proccontrol/src/procset.C index b4b1b353d2..9e5f0c3a81 100644 --- a/proccontrol/src/procset.C +++ b/proccontrol/src/procset.C @@ -52,9 +52,6 @@ #include #include -#ifdef _MSC_VER -#pragma warning(disable:4477) -#endif using namespace Dyninst; using namespace ProcControlAPI; diff --git a/proccontrol/src/windows_process.h b/proccontrol/src/windows_process.h index 6a46144415..d815cffd67 100644 --- a/proccontrol/src/windows_process.h +++ b/proccontrol/src/windows_process.h @@ -36,7 +36,6 @@ class windows_thread; -#pragma warning (disable: 4250) class windows_process : virtual public x86_process, virtual public hybrid_lwp_control_process { public: diff --git a/proccontrol/src/x86_process.C b/proccontrol/src/x86_process.C index bcf4a73e3e..ac0d162c63 100644 --- a/proccontrol/src/x86_process.C +++ b/proccontrol/src/x86_process.C @@ -32,10 +32,6 @@ #include "int_event.h" #include "Event.h" -#ifdef _MSC_VER -#pragma warning(disable:4477) -#endif - x86_process::x86_process(Dyninst::PID p, std::string e, std::vector a, std::vector envp, std::map f) : int_process(p, e, a, envp, f) { diff --git a/symtabAPI/src/debug.C b/symtabAPI/src/debug.C index 98e9a0bff9..376b9b5f4d 100644 --- a/symtabAPI/src/debug.C +++ b/symtabAPI/src/debug.C @@ -42,11 +42,6 @@ int sym_debug_types = 0; int sym_debug_translate = 0; int sym_debug_rewrite = 0; -#if defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable:4996) -#endif - bool init_debug_symtabAPI() { static bool initialized = false; if (initialized) return true; @@ -154,8 +149,3 @@ int rewrite_printf(const char *format, ...) return ret; } - - -#if defined(_MSC_VER) -#pragma warning(pop) -#endif From 59f82f2ba4c3ba2c2416e461fc45b1e8b5f48b58 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Tue, 22 Mar 2022 23:20:05 -0500 Subject: [PATCH 103/505] Fix frame-larger-than warning (#1239) - Increase frame size max when using gcc 6 for non-debug builds and for all debug builds (needed for rhel's gcc) to compile instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C --- cmake/warnings.cmake | 11 +++++++++-- instructionAPI/CMakeLists.txt | 15 +++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index e9e7c10e6a..0776612248 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -103,10 +103,12 @@ if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$") endif() # If -Wframe-larger-than is available adjust the value to allow for larger -# frames based on compiler version and build type for the following two files: +# frames based on compiler version and build type for the following 3 files: # # instructionAPI/src/InstructionDecoder-power.C -# (includes instructionAPI/src/InstructionDecoder-power.C) +# (includes instructionAPI/src/power-opcode-table.C) +# instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +# (includes instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C) # common/src/MachSyscall.C # (includes common/src/SyscallInformation.C) # @@ -126,6 +128,11 @@ if (HAS_CPP_FLAG_Wframe_larger_than) if (${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[7](\.|$)") set(nonDebugMaxFrameSizeOverridePowerOpcodeTable 38912) endif() + # most gcc's are under the default using -Og, but rhel's requires 30000 + set(debugMaxFrameSizeOverrideFinalizeOperands 30000) + if (${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[6](\.|$)") + set(nonDebugMaxFrameSizeOverrideFinalizeOperands 30000) + endif() endif() unset(CMAKE_REQUIRED_FLAGS) diff --git a/instructionAPI/CMakeLists.txt b/instructionAPI/CMakeLists.txt index baf647eb03..f780902f1f 100644 --- a/instructionAPI/CMakeLists.txt +++ b/instructionAPI/CMakeLists.txt @@ -58,6 +58,21 @@ if (NOT instructionDecoderPowerExtraFlags STREQUAL "") PROPERTIES COMPILE_FLAGS "${instructionDecoderPowerExtraFlags}") endif() +set(finalizeOperandsExtraFlags "") +if (debugMaxFrameSizeOverrideFinalizeOperands) + string(APPEND finalizeOperandsExtraFlags + " $<$:-Wframe-larger-than=${debugMaxFrameSizeOverrideFinalizeOperands}>") +endif() +if (nonDebugMaxFrameSizeOverrideFinalizeOperands) + string(APPEND finalizeOperandsExtraFlags + " $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverrideFinalizeOperands}>") +endif() + +if (NOT finalizeOperandsExtraFlags STREQUAL "") + SET_SOURCE_FILES_PROPERTIES(src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C + PROPERTIES COMPILE_FLAGS "${finalizeOperandsExtraFlags}") +endif() + ADD_DEFINITIONS(-DINSTRUCTION_LIB) dyninst_library(instructionAPI common) From d333a836c48a02afb31de58b9068f1f844a88244 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Thu, 31 Mar 2022 13:58:27 -0500 Subject: [PATCH 104/505] Add cmake option to disable diagnostic suppressions (#1239) - DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS option: if set, disable all warning suppressions and frame size limit overrides --- CMakeLists.txt | 25 +++++++++++++------------ cmake/warnings.cmake | 15 ++++++++++++++- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eacbb0b793..66c65c6a76 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,18 +116,19 @@ endif() execute_process(WORKING_DIRECTORY ${RT_BINARY_DIR} COMMAND ${CMAKE_COMMAND} - -DCMAKE_C_COMPILER=${RT_C_COMPILER} - -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX} - -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} - -DINSTALL_LIB_DIR=${INSTALL_LIB_DIR} - -DINSTALL_INCLUDE_DIR=${INSTALL_INCLUDE_DIR} - -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} - -DBUILD_RTLIB_32=${BUILD_RTLIB_32} - -DPLATFORM=${PLATFORM} - -G ${CMAKE_GENERATOR} - -B ${RT_BINARY_DIR} - -S ${RT_SOURCE_DIR}) + "-DCMAKE_C_COMPILER=${RT_C_COMPILER}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" + "-DINSTALL_LIB_DIR=${INSTALL_LIB_DIR}" + "-DINSTALL_INCLUDE_DIR=${INSTALL_INCLUDE_DIR}" + "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}" + "-DBUILD_RTLIB_32=${BUILD_RTLIB_32}" + "-DPLATFORM=${PLATFORM}" + "-DDYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS=${DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS}" + -G "${CMAKE_GENERATOR}" + -B "${RT_BINARY_DIR}" + -S "${RT_SOURCE_DIR}") find_file(${RT_MAKEFILE} Makefile PATHS ${RT_BINARY_DIR} NO_DEFAULT_PATH) message(STATUS "RTlib Makefile: ${RT_MAKEFILE}") if(MSVC) diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index 0776612248..a940b0ace3 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -1,3 +1,16 @@ +# +# cmake warning options +# + +option(DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS "Disable all warning suppressions and frame size overrides." OFF) + + +if (DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) + add_definitions(-DDYNINST_DIAGNOSTIC_NO_SUPPRESSIONS) + message(STATUS "DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS set: disabling all dyninst warning suppressions and frame size overrides") +endif() + + # Frame sizes are larger for debug build, so adjust based on build type # files with functions containing large frames are adjust below # (the value could be made significantly maller if more files are adjusted). @@ -112,7 +125,7 @@ endif() # common/src/MachSyscall.C # (includes common/src/SyscallInformation.C) # -if (HAS_CPP_FLAG_Wframe_larger_than) +if (HAS_CPP_FLAG_Wframe_larger_than AND NOT DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) # Override the default frame size maximum for DEBUG (-O0) build types # as there stack frames are larger: # From 2a16fb4a46579e5b83a4289e7ecea0559400b70e Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Mon, 4 Apr 2022 09:43:15 -0500 Subject: [PATCH 105/505] Add compiler warning related cmake options (#1239) - DYNINST_WARNINGS_AS_ERRORS option: if set, treat warnings as errors - DYNINST_EXTRA_WARNINGS option: additional warning options to test for and use if valid with the current compiler --- CMakeLists.txt | 2 ++ cmake/warnings.cmake | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 66c65c6a76..e184bdb5f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,8 @@ endif() "-DBUILD_RTLIB_32=${BUILD_RTLIB_32}" "-DPLATFORM=${PLATFORM}" "-DDYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS=${DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS}" + "-DDYNINST_EXTRA_WARNINGS=${DYNINST_EXTRA_WARNINGS}" + "-DDYNINST_WARNINGS_AS_ERRORS=${DYNINST_WARNINGS_AS_ERRORS}" -G "${CMAKE_GENERATOR}" -B "${RT_BINARY_DIR}" -S "${RT_SOURCE_DIR}") diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index a940b0ace3..f9f5c7f827 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -4,6 +4,10 @@ option(DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS "Disable all warning suppressions and frame size overrides." OFF) +set(DYNINST_EXTRA_WARNINGS "" CACHE STRING "Additional warning options to enable if available. ;-separated without leading '-' (Wopt1[;Wopt2]...).") + +option(DYNINST_WARNINGS_AS_ERRORS "Treat compilation warnings as errors" OFF) + if (DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) add_definitions(-DDYNINST_DIAGNOSTIC_NO_SUPPRESSIONS) @@ -79,6 +83,16 @@ list(APPEND REQUESTED_WARNING_FLAGS #list(APPEND REQUESTED_WARNING_FLAGS Wold-style-cast) #list(APPEND REQUESTED_WARNING_FLAGS Walloc-zero) +if (DYNINST_EXTRA_WARNINGS) + list(APPEND REQUESTED_WARNING_FLAGS ${DYNINST_EXTRA_WARNINGS}) + message(STATUS "DYNINST_EXTRA_WARNINGS set, adding extra warnings: ${DYNINST_EXTRA_WARNINGS}") +endif() + +if (DYNINST_WARNINGS_AS_ERRORS) + list(APPEND REQUESTED_WARNING_FLAGS "Werror") + message(STATUS "DYNINST_WARNINGS_AS_ERRORS set: treating warnings as errors") +endif() + if (CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang)$") include(CheckCCompilerFlag) foreach (f IN LISTS REQUESTED_WARNING_FLAGS) From d0e2f3e2b02c3e61a9dd5457bbb618417469ade6 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Thu, 31 Mar 2022 09:02:15 -0500 Subject: [PATCH 106/505] Remove unneeded #pragma's (#1240) - Remove once and interface pragmas - Replace use of "external/stdint-win.h" and "external/inttypes.h" with and --- common/src/Pair.h | 4 ---- dataflowAPI/rose/SgAsmExpression.h | 9 --------- dataflowAPI/rose/semanticsModule.h | 6 ------ dataflowAPI/rose/typedefs.h | 4 ---- dataflowAPI/rose/util/StringUtility.h | 4 ---- dataflowAPI/src/ExpressionConversionVisitor.h | 5 ----- dataflowAPI/src/RoseInsnFactory.h | 6 ------ dataflowAPI/src/SymEvalPolicy.h | 4 ---- dyninstAPI/h/BPatch_Set.h | 4 ---- proccontrol/src/procset.C | 4 ---- 10 files changed, 50 deletions(-) diff --git a/common/src/Pair.h b/common/src/Pair.h index 4e02316d7f..891196eff2 100644 --- a/common/src/Pair.h +++ b/common/src/Pair.h @@ -32,10 +32,6 @@ * Pair.h: definition of pairs for dictionaries and sets. ************************************************************************/ -#if defined(external_templates) -#pragma interface -#endif - #if !defined(_Pair_h_) #define _Pair_h_ diff --git a/dataflowAPI/rose/SgAsmExpression.h b/dataflowAPI/rose/SgAsmExpression.h index f52d2dd6d6..98a4933c6e 100644 --- a/dataflowAPI/rose/SgAsmExpression.h +++ b/dataflowAPI/rose/SgAsmExpression.h @@ -7,17 +7,8 @@ #include "SgAsmType.h" #include "external/rose/powerpcInstructionEnum.h" - -#if defined(_MSC_VER) -#include "external/stdint-win.h" -#include "external/inttypes-win.h" -#else - -#include #include -#endif - class SgAsmExpression : public SgAsmNode { public: diff --git a/dataflowAPI/rose/semanticsModule.h b/dataflowAPI/rose/semanticsModule.h index 93bd7497a8..d31fcdaffb 100644 --- a/dataflowAPI/rose/semanticsModule.h +++ b/dataflowAPI/rose/semanticsModule.h @@ -4,13 +4,7 @@ #include "SgAsmType.h" //#include "rose.h" -#if defined(_MSC_VER) -#include "external/stdint-win.h" -#include "external/inttypes-win.h" -#else -#include #include -#endif #ifndef __STDC_FORMAT_MACROS #define __STDC_FORMAT_MACROS diff --git a/dataflowAPI/rose/typedefs.h b/dataflowAPI/rose/typedefs.h index 65ecf0fe57..b56ad5799e 100644 --- a/dataflowAPI/rose/typedefs.h +++ b/dataflowAPI/rose/typedefs.h @@ -2,11 +2,7 @@ #define ROSE_TYPEDEFS_H #include -#if defined(_MSC_VER) -#include "external/stdint-win.h" -#else #include -#endif typedef std::vector SgUnsignedCharList; diff --git a/dataflowAPI/rose/util/StringUtility.h b/dataflowAPI/rose/util/StringUtility.h index 23e81ddd57..0d9b75153c 100644 --- a/dataflowAPI/rose/util/StringUtility.h +++ b/dataflowAPI/rose/util/StringUtility.h @@ -12,10 +12,6 @@ #include "../rose.h" -#if ROSE_MICROSOFT_OS -// This is the boost solution for lack of support for stdint.h (e.g. types such as "uint64_t") -#include "external/stdint-win.h" -#endif /** Functions for operating on strings. * diff --git a/dataflowAPI/src/ExpressionConversionVisitor.h b/dataflowAPI/src/ExpressionConversionVisitor.h index 6c24b2dcce..7a39b2a239 100644 --- a/dataflowAPI/src/ExpressionConversionVisitor.h +++ b/dataflowAPI/src/ExpressionConversionVisitor.h @@ -27,7 +27,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#pragma once #if !defined(_EXPRESSION_CONVERSION_VISITOR_H_) #define _EXPRESSION_CONVERSION_VISITOR_H_ @@ -46,11 +45,7 @@ class SgAsmPowerpcRegisterReferenceExpression; #include "external/rose/powerpcInstructionEnum.h" #include "Visitor.h" -#if defined(_MSC_VER) -#include "external/stdint-win.h" -#else #include -#endif #include diff --git a/dataflowAPI/src/RoseInsnFactory.h b/dataflowAPI/src/RoseInsnFactory.h index b3d671c720..c4c8ca3701 100644 --- a/dataflowAPI/src/RoseInsnFactory.h +++ b/dataflowAPI/src/RoseInsnFactory.h @@ -27,7 +27,6 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#pragma once #if !defined(_ROSE_INSN_FACTORY_H_) #define _ROSE_INSN_FACTORY_H_ @@ -43,13 +42,8 @@ #include "boost/shared_ptr.hpp" #include -#if defined(_MSC_VER) -#include "external/stdint-win.h" -#else - #include -#endif class SgAsmInstruction; diff --git a/dataflowAPI/src/SymEvalPolicy.h b/dataflowAPI/src/SymEvalPolicy.h index 06836aa007..47a8174571 100644 --- a/dataflowAPI/src/SymEvalPolicy.h +++ b/dataflowAPI/src/SymEvalPolicy.h @@ -60,11 +60,7 @@ #include #include -#if defined(_MSC_VER) -#include "external/stdint-win.h" -#else #include -#endif #include "../rose/SgAsmx86Instruction.h" diff --git a/dyninstAPI/h/BPatch_Set.h b/dyninstAPI/h/BPatch_Set.h index 8b36f68207..ae0ed2e198 100644 --- a/dyninstAPI/h/BPatch_Set.h +++ b/dyninstAPI/h/BPatch_Set.h @@ -31,10 +31,6 @@ #ifndef _BPatch_Set_h_ #define _BPatch_Set_h_ -#if defined(external_templates) -#pragma interface -#endif - /*******************************************************/ /* header files */ /*******************************************************/ diff --git a/proccontrol/src/procset.C b/proccontrol/src/procset.C index 9e5f0c3a81..773cce8c44 100644 --- a/proccontrol/src/procset.C +++ b/proccontrol/src/procset.C @@ -45,10 +45,6 @@ #include #include -#if defined(os_windows) -#include "external/stdint-win.h" -#include "external/inttypes-win.h" -#endif #include #include From 3e830389ab6d753551b0daa9f94b676a5ab52ee8 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Thu, 31 Mar 2022 09:03:20 -0500 Subject: [PATCH 107/505] remove unused files containing pragmas (#1240) --- common/src/refCounter.h | 130 ----------------- external/inttypes-win.h | 311 ---------------------------------------- external/stdint-win.h | 245 ------------------------------- 3 files changed, 686 deletions(-) delete mode 100644 common/src/refCounter.h delete mode 100644 external/inttypes-win.h delete mode 100644 external/stdint-win.h diff --git a/common/src/refCounter.h b/common/src/refCounter.h deleted file mode 100644 index 51ebd90e80..0000000000 --- a/common/src/refCounter.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -// $Id: refCounter.h,v 1.7 2007/05/30 19:20:03 legendre Exp $ -// refCounter.h -// Ariel Tamches - -#ifndef _REF_COUNTER_H_ -#define _REF_COUNTER_H_ - -#ifdef external_templates -#pragma interface -#endif - -#include - -template -class refCounter { - private: - class actualData { - private: - mutable unsigned refCount; - T data; - public: - actualData(const T &src) : data(src) {refCount=0;} - ~actualData() {} - void reference() const {refCount++;} - bool dereference() const { - assert(refCount > 0); - return (--refCount == 0); - } - T &getData() {return data;} - const T &getData() const {return data;} - }; - actualData *theData; - // allocated with new, but not necessarily by us. _Never_ NULL. - - private: - void reference() const { - assert(theData); - theData->reference(); - } - void dereference() const { - assert(theData); - if (theData->dereference()) - delete theData; - } - - // explicitly disallowed - // (Visual C++ still requires a body, however) - refCounter() {} - - public: - refCounter(const T &src) { - // examples: - // T y; (y is initialized somehow...) - // refCounter x = y; or - // refCounter x(y); - theData = new actualData(src); - assert(theData); - reference(); - } - refCounter(const refCounter &src) { - // This constructor is what this whole class revolves around. It's fast. - // examples: - // refCounter y; (y is initialized somehow...) - // refCounter x = y; or - // refCounter x(y); - src.reference(); // just bumps up a ref count --> fast - theData = src.theData; // just a ptr assignment --> fast - } - ~refCounter() { - dereference(); - } - refCounter &operator=(const refCounter &src) { - if (this == &src) - return *this; // protect against x=x - - dereference(); - - // ...and attach to the new stuff efficiently - theData = src.theData; // just a ptr assignment --> fast - reference(); // just bumps a ref cnt --> fast - return *this; - } - refCounter &operator=(const T &src) { - dereference(); - theData = new actualData(src); - reference(); - return *this; - } - T &getData() { - assert(theData); - return theData->getData(); - } - const T &getData() const { - assert(theData); - return theData->getData(); - } -}; - -#endif diff --git a/external/inttypes-win.h b/external/inttypes-win.h deleted file mode 100644 index cd530cf719..0000000000 --- a/external/inttypes-win.h +++ /dev/null @@ -1,311 +0,0 @@ -// ISO C9x compliant inttypes.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -// Modern Visual Studio has sane inttypes.h -#if _MSC_VER >= 1900 -#include -#define _MSC_INTTYPES_H_ -#endif - -#ifndef _MSC_INTTYPES_H_ // [ -#define _MSC_INTTYPES_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include "stdint-win.h" - -// 7.8 Format conversion of integer types - -typedef struct { - intmax_t quot; - intmax_t rem; -} imaxdiv_t; - -// 7.8.1 Macros for format specifiers - -#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 - -// The fprintf macros for signed integers are: -#define PRId8 "d" -#define PRIi8 "i" -#define PRIdLEAST8 "d" -#define PRIiLEAST8 "i" -#define PRIdFAST8 "d" -#define PRIiFAST8 "i" - -#define PRId16 "hd" -#define PRIi16 "hi" -#define PRIdLEAST16 "hd" -#define PRIiLEAST16 "hi" -#define PRIdFAST16 "hd" -#define PRIiFAST16 "hi" - -#define PRId32 "I32d" -#define PRIi32 "I32i" -#define PRIdLEAST32 "I32d" -#define PRIiLEAST32 "I32i" -#define PRIdFAST32 "I32d" -#define PRIiFAST32 "I32i" - -#define PRId64 "I64d" -#define PRIi64 "I64i" -#define PRIdLEAST64 "I64d" -#define PRIiLEAST64 "I64i" -#define PRIdFAST64 "I64d" -#define PRIiFAST64 "I64i" - -#define PRIdMAX "I64d" -#define PRIiMAX "I64i" - -#define PRIdPTR "Id" -#define PRIiPTR "Ii" - -// The fprintf macros for unsigned integers are: -#define PRIo8 "o" -#define PRIu8 "u" -#define PRIx8 "x" -#define PRIX8 "X" -#define PRIoLEAST8 "o" -#define PRIuLEAST8 "u" -#define PRIxLEAST8 "x" -#define PRIXLEAST8 "X" -#define PRIoFAST8 "o" -#define PRIuFAST8 "u" -#define PRIxFAST8 "x" -#define PRIXFAST8 "X" - -#define PRIo16 "ho" -#define PRIu16 "hu" -#define PRIx16 "hx" -#define PRIX16 "hX" -#define PRIoLEAST16 "ho" -#define PRIuLEAST16 "hu" -#define PRIxLEAST16 "hx" -#define PRIXLEAST16 "hX" -#define PRIoFAST16 "ho" -#define PRIuFAST16 "hu" -#define PRIxFAST16 "hx" -#define PRIXFAST16 "hX" - -#define PRIo32 "I32o" -#define PRIu32 "I32u" -#define PRIx32 "I32x" -#define PRIX32 "I32X" -#define PRIoLEAST32 "I32o" -#define PRIuLEAST32 "I32u" -#define PRIxLEAST32 "I32x" -#define PRIXLEAST32 "I32X" -#define PRIoFAST32 "I32o" -#define PRIuFAST32 "I32u" -#define PRIxFAST32 "I32x" -#define PRIXFAST32 "I32X" - -#define PRIo64 "I64o" -#define PRIu64 "I64u" -#define PRIx64 "I64x" -#define PRIX64 "I64X" -#define PRIoLEAST64 "I64o" -#define PRIuLEAST64 "I64u" -#define PRIxLEAST64 "I64x" -#define PRIXLEAST64 "I64X" -#define PRIoFAST64 "I64o" -#define PRIuFAST64 "I64u" -#define PRIxFAST64 "I64x" -#define PRIXFAST64 "I64X" - -#define PRIoMAX "I64o" -#define PRIuMAX "I64u" -#define PRIxMAX "I64x" -#define PRIXMAX "I64X" - -#define PRIoPTR "Io" -#define PRIuPTR "Iu" -#define PRIxPTR "Ix" -#define PRIXPTR "IX" - -// The fscanf macros for signed integers are: -#define SCNd8 "d" -#define SCNi8 "i" -#define SCNdLEAST8 "d" -#define SCNiLEAST8 "i" -#define SCNdFAST8 "d" -#define SCNiFAST8 "i" - -#define SCNd16 "hd" -#define SCNi16 "hi" -#define SCNdLEAST16 "hd" -#define SCNiLEAST16 "hi" -#define SCNdFAST16 "hd" -#define SCNiFAST16 "hi" - -#define SCNd32 "ld" -#define SCNi32 "li" -#define SCNdLEAST32 "ld" -#define SCNiLEAST32 "li" -#define SCNdFAST32 "ld" -#define SCNiFAST32 "li" - -#define SCNd64 "I64d" -#define SCNi64 "I64i" -#define SCNdLEAST64 "I64d" -#define SCNiLEAST64 "I64i" -#define SCNdFAST64 "I64d" -#define SCNiFAST64 "I64i" - -#define SCNdMAX "I64d" -#define SCNiMAX "I64i" - -#ifdef _WIN64 // [ -# define SCNdPTR "I64d" -# define SCNiPTR "I64i" -#else // _WIN64 ][ -# define SCNdPTR "ld" -# define SCNiPTR "li" -#endif // _WIN64 ] - -// The fscanf macros for unsigned integers are: -#define SCNo8 "o" -#define SCNu8 "u" -#define SCNx8 "x" -#define SCNX8 "X" -#define SCNoLEAST8 "o" -#define SCNuLEAST8 "u" -#define SCNxLEAST8 "x" -#define SCNXLEAST8 "X" -#define SCNoFAST8 "o" -#define SCNuFAST8 "u" -#define SCNxFAST8 "x" -#define SCNXFAST8 "X" - -#define SCNo16 "ho" -#define SCNu16 "hu" -#define SCNx16 "hx" -#define SCNX16 "hX" -#define SCNoLEAST16 "ho" -#define SCNuLEAST16 "hu" -#define SCNxLEAST16 "hx" -#define SCNXLEAST16 "hX" -#define SCNoFAST16 "ho" -#define SCNuFAST16 "hu" -#define SCNxFAST16 "hx" -#define SCNXFAST16 "hX" - -#define SCNo32 "lo" -#define SCNu32 "lu" -#define SCNx32 "lx" -#define SCNX32 "lX" -#define SCNoLEAST32 "lo" -#define SCNuLEAST32 "lu" -#define SCNxLEAST32 "lx" -#define SCNXLEAST32 "lX" -#define SCNoFAST32 "lo" -#define SCNuFAST32 "lu" -#define SCNxFAST32 "lx" -#define SCNXFAST32 "lX" - -#define SCNo64 "I64o" -#define SCNu64 "I64u" -#define SCNx64 "I64x" -#define SCNX64 "I64X" -#define SCNoLEAST64 "I64o" -#define SCNuLEAST64 "I64u" -#define SCNxLEAST64 "I64x" -#define SCNXLEAST64 "I64X" -#define SCNoFAST64 "I64o" -#define SCNuFAST64 "I64u" -#define SCNxFAST64 "I64x" -#define SCNXFAST64 "I64X" - -#define SCNoMAX "I64o" -#define SCNuMAX "I64u" -#define SCNxMAX "I64x" -#define SCNXMAX "I64X" - -#ifdef _WIN64 // [ -# define SCNoPTR "I64o" -# define SCNuPTR "I64u" -# define SCNxPTR "I64x" -# define SCNXPTR "I64X" -#else // _WIN64 ][ -# define SCNoPTR "lo" -# define SCNuPTR "lu" -# define SCNxPTR "lx" -# define SCNXPTR "lX" -#endif // _WIN64 ] - -#endif // __STDC_FORMAT_MACROS ] - -// 7.8.2 Functions for greatest-width integer types - -// 7.8.2.1 The imaxabs function -#define imaxabs _abs64 - -// 7.8.2.2 The imaxdiv function - -// This is modified version of div() function from Microsoft's div.c found -// in %MSVC.NET%\crt\src\div.c -#ifdef STATIC_IMAXDIV // [ -static -#else // STATIC_IMAXDIV ][ -_inline -#endif // STATIC_IMAXDIV ] -imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) -{ - imaxdiv_t result; - - result.quot = numer / denom; - result.rem = numer % denom; - - if (numer < 0 && result.rem > 0) { - // did division wrong; must fix up - ++result.quot; - result.rem -= denom; - } - - return result; -} - -// 7.8.2.3 The strtoimax and strtoumax functions -#define strtoimax _strtoi64 -#define strtoumax _strtoui64 - -// 7.8.2.4 The wcstoimax and wcstoumax functions -#define wcstoimax _wcstoi64 -#define wcstoumax _wcstoui64 - - -#endif // _MSC_INTTYPES_H_ ] diff --git a/external/stdint-win.h b/external/stdint-win.h deleted file mode 100644 index 9d0d6f9eb1..0000000000 --- a/external/stdint-win.h +++ /dev/null @@ -1,245 +0,0 @@ -// ISO C9x compliant stdint.h for Microsoft Visual Studio -// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 -// -// Copyright (c) 2006-2008 Alexander Chemeris -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, -// this list of conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright -// notice, this list of conditions and the following disclaimer in the -// documentation and/or other materials provided with the distribution. -// -// 3. The name of the author may be used to endorse or promote products -// derived from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED -// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; -// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR -// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF -// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _MSC_VER // [ -#error "Use this header only with Microsoft Visual C++ compilers!" -#endif // _MSC_VER ] - -// Modern Visual Studio has sane stdint.h -#if _MSC_VER >= 1900 -#include -#define _MSC_STDINT_H_ -#endif - -#ifndef _MSC_STDINT_H_ // [ -#define _MSC_STDINT_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif - -#include - -// For Visual Studio 6 in C++ mode and for many Visual Studio versions when -// compiling for ARM we should wrap include with 'extern "C++" {}' -// or compiler give many errors like this: -// error C2733: second C linkage of overloaded function 'wmemchr' not allowed -#ifdef __cplusplus -extern "C" { -#endif -# include -#ifdef __cplusplus -} -#endif - -// Define _W64 macros to mark types changing their size, like intptr_t. -#ifndef _W64 -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - - -// 7.18.1 Integer types - -// 7.18.1.1 Exact-width integer types - -// Visual Studio 6 and Embedded Visual C++ 4 doesn't -// realize that, e.g. char has the same size as __int8 -// so we give up on __intX for them. -#if (_MSC_VER < 1300) - typedef signed char int8_t; - typedef signed short int16_t; - typedef signed int int32_t; - typedef unsigned char uint8_t; - typedef unsigned short uint16_t; - typedef unsigned int uint32_t; -#else - typedef signed __int8 int8_t; - typedef signed __int16 int16_t; - typedef signed __int32 int32_t; - typedef unsigned __int8 uint8_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int32 uint32_t; -#endif -typedef signed __int64 int64_t; -typedef unsigned __int64 uint64_t; - - -// 7.18.1.2 Minimum-width integer types -typedef int8_t int_least8_t; -typedef int16_t int_least16_t; -typedef int32_t int_least32_t; -typedef int64_t int_least64_t; -typedef uint8_t uint_least8_t; -typedef uint16_t uint_least16_t; -typedef uint32_t uint_least32_t; -typedef uint64_t uint_least64_t; - -// 7.18.1.3 Fastest minimum-width integer types - -// 7.18.1.4 Integer types capable of holding object pointers -#ifdef _WIN64 // [ - typedef signed __int64 intptr_t; - typedef unsigned __int64 uintptr_t; -#else // _WIN64 ][ - typedef _W64 signed int intptr_t; - typedef _W64 unsigned int uintptr_t; -#endif // _WIN64 ] - -// 7.18.1.5 Greatest-width integer types -typedef int64_t intmax_t; -typedef uint64_t uintmax_t; - - -// 7.18.2 Limits of specified-width integer types - -#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 - -// 7.18.2.1 Limits of exact-width integer types -#define INT8_MIN ((int8_t)_I8_MIN) -#define INT8_MAX _I8_MAX -#define INT16_MIN ((int16_t)_I16_MIN) -#define INT16_MAX _I16_MAX -#define INT32_MIN ((int32_t)_I32_MIN) -#define INT32_MAX _I32_MAX -#define INT64_MIN ((int64_t)_I64_MIN) -#define INT64_MAX _I64_MAX -#define UINT8_MAX _UI8_MAX -#define UINT16_MAX _UI16_MAX -#define UINT32_MAX _UI32_MAX -#define UINT64_MAX _UI64_MAX - -// 7.18.2.2 Limits of minimum-width integer types -#define INT_LEAST8_MIN INT8_MIN -#define INT_LEAST8_MAX INT8_MAX -#define INT_LEAST16_MIN INT16_MIN -#define INT_LEAST16_MAX INT16_MAX -#define INT_LEAST32_MIN INT32_MIN -#define INT_LEAST32_MAX INT32_MAX -#define INT_LEAST64_MIN INT64_MIN -#define INT_LEAST64_MAX INT64_MAX -#define UINT_LEAST8_MAX UINT8_MAX -#define UINT_LEAST16_MAX UINT16_MAX -#define UINT_LEAST32_MAX UINT32_MAX -#define UINT_LEAST64_MAX UINT64_MAX - -// 7.18.2.3 Limits of fastest minimum-width integer types -#define INT_FAST8_MIN INT8_MIN -#define INT_FAST8_MAX INT8_MAX -#define INT_FAST16_MIN INT16_MIN -#define INT_FAST16_MAX INT16_MAX -#define INT_FAST32_MIN INT32_MIN -#define INT_FAST32_MAX INT32_MAX -#define INT_FAST64_MIN INT64_MIN -#define INT_FAST64_MAX INT64_MAX -#define UINT_FAST8_MAX UINT8_MAX -#define UINT_FAST16_MAX UINT16_MAX -#define UINT_FAST32_MAX UINT32_MAX -#define UINT_FAST64_MAX UINT64_MAX - -// 7.18.2.4 Limits of integer types capable of holding object pointers -#ifdef _WIN64 // [ -# define INTPTR_MIN INT64_MIN -# define INTPTR_MAX INT64_MAX -# define UINTPTR_MAX UINT64_MAX -#else // _WIN64 ][ -# define INTPTR_MIN INT32_MIN -# define INTPTR_MAX INT32_MAX -# define UINTPTR_MAX UINT32_MAX -#endif // _WIN64 ] - -// 7.18.2.5 Limits of greatest-width integer types -#define INTMAX_MIN INT64_MIN -#define INTMAX_MAX INT64_MAX -#define UINTMAX_MAX UINT64_MAX - -// 7.18.3 Limits of other integer types - -#ifdef _WIN64 // [ -# define PTRDIFF_MIN _I64_MIN -# define PTRDIFF_MAX _I64_MAX -#else // _WIN64 ][ -# define PTRDIFF_MIN _I32_MIN -# define PTRDIFF_MAX _I32_MAX -#endif // _WIN64 ] - -#define SIG_ATOMIC_MIN INT_MIN -#define SIG_ATOMIC_MAX INT_MAX - -#ifndef SIZE_MAX // [ -# ifdef _WIN64 // [ -# define SIZE_MAX _UI64_MAX -# else // _WIN64 ][ -# define SIZE_MAX _UI32_MAX -# endif // _WIN64 ] -#endif // SIZE_MAX ] - -// WCHAR_MIN and WCHAR_MAX are also defined in -#ifndef WCHAR_MIN // [ -# define WCHAR_MIN 0 -#endif // WCHAR_MIN ] -#ifndef WCHAR_MAX // [ -# define WCHAR_MAX _UI16_MAX -#endif // WCHAR_MAX ] - -#define WINT_MIN 0 -#define WINT_MAX _UI16_MAX - -#endif // __STDC_LIMIT_MACROS ] - - -// 7.18.4 Limits of other integer types - -#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) && (_MSC_VER < 1600) // [ See footnote 224 at page 260 - -// 7.18.4.1 Macros for minimum-width integer constants - -#define INT8_C(val) val##i8 -#define INT16_C(val) val##i16 -#define INT32_C(val) val##i32 -#define INT64_C(val) val##i64 - -#define UINT8_C(val) val##ui8 -#define UINT16_C(val) val##ui16 -#define UINT32_C(val) val##ui32 -#define UINT64_C(val) val##ui64 - -// 7.18.4.2 Macros for greatest-width integer constants -#define INTMAX_C INT64_C -#define UINTMAX_C UINT64_C - -#endif // __STDC_CONSTANT_MACROS ] - - -#endif // _MSC_STDINT_H_ ] From 42416989fb088bcce043397835dfa6677bbacbe6 Mon Sep 17 00:00:00 2001 From: kupsch Date: Wed, 6 Apr 2022 10:21:30 -0500 Subject: [PATCH 108/505] Cleanup (remove) ancient linux kernel support (#1241) - Remove check and message for ancient linux kernel - Remove support for old mechanism to find process's tasks --- common/src/linuxKludges.C | 47 +----------------------- dyninstAPI/src/BPatch_process.C | 65 --------------------------------- 2 files changed, 1 insertion(+), 111 deletions(-) diff --git a/common/src/linuxKludges.C b/common/src/linuxKludges.C index 195337c98f..aa7db217d5 100644 --- a/common/src/linuxKludges.C +++ b/common/src/linuxKludges.C @@ -941,51 +941,6 @@ bool findProcLWPs(pid_t pid, std::vector &lwps) closedir(dirhandle); return true; } - /** - * Linux 2.4: - * - * PIDs that are created by pthreads have a '.' prepending their name - * in /proc. We'll check all of those for the ones that have this lwp - * as a parent pid. - **/ - dirhandle = opendir("/proc"); - if (!dirhandle) - { - //No /proc directory. I give up. No threads for you. - return false; - } - while ((direntry = readdir(dirhandle)) != NULL) - { - if (direntry->d_name[0] != '.') { - //fprintf(stderr, "%s[%d]: Skipping entry %s\n", FILE__, __LINE__, direntry->d_name); - continue; - } - unsigned lwp_id = atoi(direntry->d_name+1); - int lwp_ppid = 0; - if (!lwp_id) - continue; - sprintf(name, "/proc/%u/status", lwp_id); - FILE *fd = P_fopen(name, "r"); - if (!fd) { - continue; - } - char buffer[1024]; - while (fgets(buffer, 1024, fd)) { - if (strncmp(buffer, "Tgid", 4) == 0) { - sscanf(buffer, "%*s %d", &lwp_ppid); - break; - } - } - - fclose(fd); - - if (lwp_ppid != pid) { - continue; - } - lwps.push_back(lwp_id); - } - closedir(dirhandle); - lwps.push_back(pid); - return true; + return false; } diff --git a/dyninstAPI/src/BPatch_process.C b/dyninstAPI/src/BPatch_process.C index cad51d86c0..5b4b8d5370 100644 --- a/dyninstAPI/src/BPatch_process.C +++ b/dyninstAPI/src/BPatch_process.C @@ -230,54 +230,6 @@ BPatch_process::BPatch_process(const char *path, const char *argv[], startup_cerr << "BPatch_process::BPatch_process, completed." << endl; } -#if defined(os_linux) -/* Particular linux kernels running dyninst in particular patterns - (namely, with a single process having spawned the mutator and the - mutatee) are susceptible to a kernel bug that will cause a panic - if the mutator exits before the mutatee. See the comment above - class ForkNewProcessCallback : public DBICallbackBase in - debuggerinterface.h for details. -*/ -bool LinuxConsideredHarmful(pid_t pid) // PUSH -{ - int major, minor, sub, subsub; // version numbers - pid_t my_ppid, my_pid, mutatee_ppid = 0; - FILE *fd; - char buf[1024]; - char filename[64]; - - get_linux_version(major,minor,sub,subsub); - - if( major == 2 && minor == 6 && - (sub < 11 || (sub == 11 && subsub <= 11)) ) - { - my_ppid = getppid(); - my_pid = getpid(); - // If anybody knows a better way to get the parent pid, be my - // guest to change this. - snprintf(filename, 64, "/proc/%d/status", pid); - fd = fopen(filename, "r"); - if (!fd) { - startup_printf("Failed to open %s, assuming no linux kernel bug\n", - filename); - return false; - } - while (fgets(buf, 1024, fd)) { - if (strncmp(buf, "PPid", 4) == 0) { - sscanf(buf, "%*s %d", &mutatee_ppid); - break; - } - } - fclose(fd); - - if(my_ppid == mutatee_ppid || - my_pid == mutatee_ppid) - return true; - } - - return false; -} -#endif /* * BPatch_process::BPatch_process * @@ -298,23 +250,6 @@ BPatch_process::BPatch_process image = NULL; pendingInsertions = NULL; -#if defined(os_linux) - /* We need to test whether we are in kernel 2.6.9 - 2.6.11.11 (inclusive). - If so, and if the mutatee's parent and our parent are one and the same, - we are exposing the user to a potential kernel panic. - */ - startup_printf("Checking for potential Linux kernel bug...\n"); - if(LinuxConsideredHarmful(pid)) - { - fprintf(stderr, - "\nWARNING: You are running a Linux kernel between 2.6.9 and \n" - "2.6.11.11 (inclusive). Executing Dyninst under this kernel \n" - "may exercise a bug in the Linux kernel and lead to a panic \n" - "under some conditions. We STRONGLY suggest that you upgrade \n" - "your kernel to 2.6.11.12 or higher.\n\n"); - } -#endif - assert(BPatch::bpatch != NULL); startup_printf("%s[%d]: creating new BPatch_image...\n", FILE__, __LINE__); From 929dc3980115df721995d030f65b40075e50bacc Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 7 Apr 2022 11:20:58 -0500 Subject: [PATCH 109/505] Use bfd linker for LTO (#1248) The gold linker crashes and is no longer supported. --- cmake/optimization.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/optimization.cmake b/cmake/optimization.cmake index a15f24084a..a06912707e 100644 --- a/cmake/optimization.cmake +++ b/cmake/optimization.cmake @@ -4,7 +4,7 @@ if (CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_C_COMPILER_ID} MATCHES Intel) if(ENABLE_LTO) set(LTO_FLAGS "-flto") - set(LTO_LINK_FLAGS "-fuse-ld=gold") + set(LTO_LINK_FLAGS "-fuse-ld=bfd") else() set(LTO_FLAGS "") set(LTO_LINK_FLAGS "") From eda8c25a56d179455c5ddb0535ec6fd1ea163c8b Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Mon, 4 Apr 2022 16:38:49 -0500 Subject: [PATCH 110/505] Add cmake options for C/C++ language standards (#1246) Add cmake options to set C/C++ language standard versions used to build to facilitate testing. - DYNINST_C_LANGUAGE_STANDARD cmake option: C Standard version - DYNINST_CXX_LANGUAGE_STANDARD cmake option: C++ Standard version --- CMakeLists.txt | 2 ++ cmake/LanguageStandards.cmake | 13 +++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e184bdb5f2..42850ad0bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,6 +128,8 @@ endif() "-DDYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS=${DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS}" "-DDYNINST_EXTRA_WARNINGS=${DYNINST_EXTRA_WARNINGS}" "-DDYNINST_WARNINGS_AS_ERRORS=${DYNINST_WARNINGS_AS_ERRORS}" + "-DDYNINST_CXX_LANGUAGE_STANDARD=${DYNINST_CXX_LANGUAGE_STANDARD}" + "-DDYNINST_C_LANGUAGE_STANDARD=${DYNINST_C_LANGUAGE_STANDARD}" -G "${CMAKE_GENERATOR}" -B "${RT_BINARY_DIR}" -S "${RT_SOURCE_DIR}") diff --git a/cmake/LanguageStandards.cmake b/cmake/LanguageStandards.cmake index d538c2b036..6d16fae3a4 100644 --- a/cmake/LanguageStandards.cmake +++ b/cmake/LanguageStandards.cmake @@ -5,6 +5,13 @@ # #========================================================================= +# +# C/C++ language standard cmake options. +# + +set(DYNINST_CXX_LANGUAGE_STANDARD "11" CACHE STRING "C++ language standard version.") +set(DYNINST_C_LANGUAGE_STANDARD "11" CACHE STRING "C language standard version.") + # # -------- C++ language features ---------------- # @@ -13,7 +20,8 @@ set(CMAKE_CXX_EXTENSIONS OFF) # Require C++11 support -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD ${DYNINST_CXX_LANGUAGE_STANDARD}) +message(STATUS "C++ language standard: ${DYNINST_CXX_LANGUAGE_STANDARD}") set(CMAKE_CXX_STANDARD_REQUIRED ON) # Require the standards-compliant C++11 ABI for gcc @@ -32,5 +40,6 @@ endif() set(CMAKE_C_EXTENSIONS OFF) # Require C11 support -set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD ${DYNINST_C_LANGUAGE_STANDARD}) +message(STATUS "C language standard: ${DYNINST_C_LANGUAGE_STANDARD}") set(CMAKE_C_STANDARD_REQUIRED ON) From 3c5b576bd56814abf934730f6519d51a2df3d36f Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Wed, 6 Apr 2022 16:26:02 -0500 Subject: [PATCH 111/505] Make dyninstAPI_RT files build with standard C (#1246) - use same language standards as the rest of Dyninst - define _DEFAULT_SOURCE in some dyninstAPI_RT source files so functions and macros used are defined when using standard C --- dyninstAPI_RT/CMakeLists.txt | 1 + dyninstAPI_RT/src/RTheap-linux.c | 2 ++ dyninstAPI_RT/src/RTheap.c | 2 ++ dyninstAPI_RT/src/RTlinux.c | 2 ++ dyninstAPI_RT/src/RTposix.c | 2 ++ dyninstAPI_RT/src/RTsignal.c | 4 +++- 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dyninstAPI_RT/CMakeLists.txt b/dyninstAPI_RT/CMakeLists.txt index 983a5ab8da..b454688d79 100644 --- a/dyninstAPI_RT/CMakeLists.txt +++ b/dyninstAPI_RT/CMakeLists.txt @@ -4,6 +4,7 @@ project (DyninstRT C) set (DYNINST_ROOT ${PROJECT_SOURCE_DIR}/..) +include (${DYNINST_ROOT}/cmake/LanguageStandards.cmake) include (${DYNINST_ROOT}/cmake/shared.cmake) include_directories ( diff --git a/dyninstAPI_RT/src/RTheap-linux.c b/dyninstAPI_RT/src/RTheap-linux.c index 64cfb06bfb..3968b6b8ee 100644 --- a/dyninstAPI_RT/src/RTheap-linux.c +++ b/dyninstAPI_RT/src/RTheap-linux.c @@ -31,6 +31,8 @@ /* $Id: RTheap-linux.c,v 1.9 2008/01/31 18:01:54 legendre Exp $ */ /* RTheap-linux.c: Linux-specific heap components */ +#define _DEFAULT_SOURCE + #include #include #include /* str* */ diff --git a/dyninstAPI_RT/src/RTheap.c b/dyninstAPI_RT/src/RTheap.c index 33195e06e3..57b5e55fab 100644 --- a/dyninstAPI_RT/src/RTheap.c +++ b/dyninstAPI_RT/src/RTheap.c @@ -31,6 +31,8 @@ /* $Id: RTheap.c,v 1.25 2006/05/03 00:31:25 jodom Exp $ */ /* RTheap.c: platform-generic heap management */ +#define _DEFAULT_SOURCE + #include #include #if !defined(os_windows) /* ccw 15 may 2000 : 29 mar 2001 */ diff --git a/dyninstAPI_RT/src/RTlinux.c b/dyninstAPI_RT/src/RTlinux.c index 0ca7a41d43..55d7772d61 100644 --- a/dyninstAPI_RT/src/RTlinux.c +++ b/dyninstAPI_RT/src/RTlinux.c @@ -33,6 +33,8 @@ * RTlinux.c: mutatee-side library function specific to Linux ************************************************************************/ +#define _DEFAULT_SOURCE + #include "dyninstAPI_RT/h/dyninstAPI_RT.h" #include "dyninstAPI_RT/src/RTthread.h" #include "dyninstAPI_RT/src/RTcommon.h" diff --git a/dyninstAPI_RT/src/RTposix.c b/dyninstAPI_RT/src/RTposix.c index 8277c3d09a..d1f7e16fb8 100644 --- a/dyninstAPI_RT/src/RTposix.c +++ b/dyninstAPI_RT/src/RTposix.c @@ -33,6 +33,8 @@ * RTposix.c: runtime instrumentation functions for generic posix. ************************************************************************/ +#define _DEFAULT_SOURCE + #include #include #include diff --git a/dyninstAPI_RT/src/RTsignal.c b/dyninstAPI_RT/src/RTsignal.c index 1aab0ee3d0..b78ab71270 100644 --- a/dyninstAPI_RT/src/RTsignal.c +++ b/dyninstAPI_RT/src/RTsignal.c @@ -30,7 +30,9 @@ /************************************************************************ * RTsignal.c: C-language signal handling code -************************************************************************/ + ************************************************************************/ + +#define _DEFAULT_SOURCE #include #include From b5763c339d0b22ddb858fe93e340367e8e45efb8 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 7 Apr 2022 15:44:55 -0500 Subject: [PATCH 112/505] Fix format string errors in stackwalk/callchecker.C (#1250) These are only present when SW_ANALYSIS_STEPPER=OFF. --- stackwalk/src/callchecker.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/stackwalk/src/callchecker.C b/stackwalk/src/callchecker.C index 48cd52d006..ac4b36523e 100644 --- a/stackwalk/src/callchecker.C +++ b/stackwalk/src/callchecker.C @@ -44,12 +44,12 @@ bool CallChecker::isPrevInstrACall(Address addr, Address & target) bool result; unsigned char buffer[max_call_length]; - sw_printf("[%s:%u] - isPrevInstrACall on %lx\n", FILE__, __LINE__, addr); + sw_printf("[%s:%d] - isPrevInstrACall on %lx\n", FILE__, __LINE__, addr); Address start = addr - max_call_length; result = proc->readMem(buffer, start, max_call_length); if (!result) { - sw_printf("[%s:%u] - Address 0x%lx is not a call--unreadable\n", + sw_printf("[%s:%d] - Address 0x%lx is not a call--unreadable\n", FILE__, __LINE__, addr); return false; } @@ -57,7 +57,7 @@ bool CallChecker::isPrevInstrACall(Address addr, Address & target) if (buffer[max_call_length - 5] == 0xe8) { int32_t disp = *((int32_t *) (buffer+1)); target = addr + disp; - sw_printf("[%s:%u] - Found call encoded by %x to %lx (addr = %lx, disp = %lx)\n", + sw_printf("[%s:%d] - Found call encoded by %x to %lx (addr = %lx, disp = %dx)\n", FILE__, __LINE__, (int) buffer[0], target, addr, disp); return true; @@ -102,7 +102,7 @@ bool CallChecker::isPrevInstrACall(Address addr, Address & target) if (i + size == max_call_length) { - sw_printf("[%s:%u] - Found call of size %d encoded by: ", + sw_printf("[%s:%d] - Found call of size %u encoded by: ", FILE__, __LINE__, size); for (unsigned j=i; j Date: Thu, 7 Apr 2022 16:24:10 -0500 Subject: [PATCH 113/505] Redo finalization to get correct function boundiaries when (#1249) there are many tail call correction --- parseAPI/src/Parser.C | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/parseAPI/src/Parser.C b/parseAPI/src/Parser.C index a1654672a2..047164b4bc 100644 --- a/parseAPI/src/Parser.C +++ b/parseAPI/src/Parser.C @@ -1010,6 +1010,21 @@ Parser::finalize() finalize_funcs(discover_funcs); clean_bogus_funcs(discover_funcs); + // We need to redo finalization one more time to get correct + // function boundaries. This is intended to handle tail call + // correction. Suppose function A contains function B, and + // function B tail calls C. + // Further, we assume that parseAPI fails to identify the tail call + // in B. Then during finalizaiton, we can correct the tail call + // either when we finalize A or B, but not both. Therefore, + // after finalization, either A or B would have incorrect function + // boundary. Therefore, we recompute function boundary. + // In addition, there is no need for a loop to redo finalization + // as there would be no more tail call correction. + // We only need to get correct function boundaries. + finalize_funcs(hint_funcs); + finalize_funcs(discover_funcs); + for (auto it = hint_funcs.begin(); it != hint_funcs.end(); ++it) if (deleted_func.find(*it) == deleted_func.end()) { sorted_funcs.insert(*it); From c7372633a036c91f731098e538609e55866e6cf8 Mon Sep 17 00:00:00 2001 From: kupsch Date: Fri, 8 Apr 2022 17:12:20 -0500 Subject: [PATCH 114/505] Fix dyninstAPI_RT files to build with older glibc (#1252) Replace feature test macro _DEFAULT_SOURCE with _GNU_SOURCE to support older version of glibc --- dyninstAPI_RT/src/RTheap-linux.c | 2 +- dyninstAPI_RT/src/RTheap.c | 2 +- dyninstAPI_RT/src/RTlinux.c | 2 +- dyninstAPI_RT/src/RTposix.c | 2 +- dyninstAPI_RT/src/RTsignal.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/dyninstAPI_RT/src/RTheap-linux.c b/dyninstAPI_RT/src/RTheap-linux.c index 3968b6b8ee..e3dfb7399a 100644 --- a/dyninstAPI_RT/src/RTheap-linux.c +++ b/dyninstAPI_RT/src/RTheap-linux.c @@ -31,7 +31,7 @@ /* $Id: RTheap-linux.c,v 1.9 2008/01/31 18:01:54 legendre Exp $ */ /* RTheap-linux.c: Linux-specific heap components */ -#define _DEFAULT_SOURCE +#define _GNU_SOURCE #include #include diff --git a/dyninstAPI_RT/src/RTheap.c b/dyninstAPI_RT/src/RTheap.c index 57b5e55fab..829a537e12 100644 --- a/dyninstAPI_RT/src/RTheap.c +++ b/dyninstAPI_RT/src/RTheap.c @@ -31,7 +31,7 @@ /* $Id: RTheap.c,v 1.25 2006/05/03 00:31:25 jodom Exp $ */ /* RTheap.c: platform-generic heap management */ -#define _DEFAULT_SOURCE +#define _GNU_SOURCE #include #include diff --git a/dyninstAPI_RT/src/RTlinux.c b/dyninstAPI_RT/src/RTlinux.c index 55d7772d61..5661994813 100644 --- a/dyninstAPI_RT/src/RTlinux.c +++ b/dyninstAPI_RT/src/RTlinux.c @@ -33,7 +33,7 @@ * RTlinux.c: mutatee-side library function specific to Linux ************************************************************************/ -#define _DEFAULT_SOURCE +#define _GNU_SOURCE #include "dyninstAPI_RT/h/dyninstAPI_RT.h" #include "dyninstAPI_RT/src/RTthread.h" diff --git a/dyninstAPI_RT/src/RTposix.c b/dyninstAPI_RT/src/RTposix.c index d1f7e16fb8..8f27edbb18 100644 --- a/dyninstAPI_RT/src/RTposix.c +++ b/dyninstAPI_RT/src/RTposix.c @@ -33,7 +33,7 @@ * RTposix.c: runtime instrumentation functions for generic posix. ************************************************************************/ -#define _DEFAULT_SOURCE +#define _GNU_SOURCE #include #include diff --git a/dyninstAPI_RT/src/RTsignal.c b/dyninstAPI_RT/src/RTsignal.c index b78ab71270..69c0339965 100644 --- a/dyninstAPI_RT/src/RTsignal.c +++ b/dyninstAPI_RT/src/RTsignal.c @@ -32,7 +32,7 @@ * RTsignal.c: C-language signal handling code ************************************************************************/ -#define _DEFAULT_SOURCE +#define _GNU_SOURCE #include #include From 5165d8ce5eda38f94eb7c4f12497ef4aefad3f4b Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 12 Apr 2022 14:06:30 -0500 Subject: [PATCH 115/505] Remove unused build options (#1253) * Remove BUILD_DOCS This isn't sufficient to create the documentation as some of it is contained in MS Word files. * Remove BUILD_TARBALLS We don't distrubute tarballs anymore. That's handled by GitHub. --- CMakeLists.txt | 72 --------------------------------------------- cmake/options.cmake | 3 -- 2 files changed, 75 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 42850ad0bd..59de33a237 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,78 +163,6 @@ endif() set (VERSION_STRING "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}.${DYNINST_PATCH_VERSION}") set (DYNINST_NAME "DyninstAPI-${VERSION_STRING}") -if(BUILD_TARBALLS) - find_package(Git) - if(GIT_FOUND) - if(EXISTS "${DYNINST_ROOT}/.git/") - message(STATUS "Source tree is repository, building archive target") - add_custom_target(package ALL) - add_custom_command(TARGET package - COMMAND ${GIT_EXECUTABLE} archive --prefix="${DYNINST_NAME}/" --format=tar.gz -o "${CMAKE_BINARY_DIR}/${DYNINST_NAME}.tgz" HEAD - WORKING_DIRECTORY ${DYNINST_ROOT} - COMMENT "Packaging Dyninst") - endif() - endif() -endif() -if(BUILD_DOCS) - add_custom_target(doc) - set(LATEX_DOCS dynC_API dataflowAPI instructionAPI parseAPI patchAPI symtabAPI stackwalk) - set(WORD_DOCS proccontrol dyninstAPI) - add_custom_target(proccontrol-doc - DEPENDS ${CMAKE_SOURCE_DIR}/proccontrol/doc/proccontrol.pdf) - add_custom_target(dyninstAPI-doc - DEPENDS ${CMAKE_SOURCE_DIR}/dyninstAPI/doc/dyninstAPI.pdf) - foreach(COMPONENT ${WORD_DOCS}) - add_dependencies(doc ${COMPONENT}-doc) - set_target_properties(${COMPONENT}-doc PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc/${COMPONENT}.pdf - DESTINATION ${INSTALL_DOC_DIR} - RENAME ${COMPONENT}-${VERSION_STRING}.pdf - OPTIONAL - ) - endforeach() - - find_package(LATEX) - if(PDFLATEX_COMPILER) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/common/doc - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/common) - foreach(COMPONENT ${LATEX_DOCS}) - file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/${COMPONENT}/doc - DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}) - set (DEPS "") - file(GLOB_RECURSE DEPS ${CMAKE_CURRENT_SOURCE_DIR}/${COMPONENT}/doc/*.tex ${CMAKE_CURRENT_SOURCE_DIR}/common/doc/*.tex) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc/${COMPONENT}.aux - DEPENDS ${DEPS} - COMMAND ${PDFLATEX_COMPILER} - ARGS -interaction=batchmode ${COMPONENT}.tex - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc - COMMENT "Latex (first pass)" - ) - add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc/${COMPONENT}.log - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc/${COMPONENT}.aux - COMMAND ${PDFLATEX_COMPILER} - ARGS -interaction=batchmode ${COMPONENT}.tex - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc - COMMENT "Latex (second pass)" - ) - add_custom_target(${COMPONENT}-doc echo - DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc/${COMPONENT}.log - ) - add_dependencies(doc ${COMPONENT}-doc) - set_target_properties(${COMPONENT}-doc PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD 1) - install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${COMPONENT}/doc/${COMPONENT}.pdf - DESTINATION ${INSTALL_DOC_DIR} - RENAME ${COMPONENT}-${VERSION_STRING}.pdf - OPTIONAL - ) - endforeach() - else() - message(STATUS "LaTeX not found") - endif() -endif() - if(TARGET boost) add_dependencies(common boost) endif() diff --git a/cmake/options.cmake b/cmake/options.cmake index 39e046a237..35ec0779e0 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -7,11 +7,8 @@ option (LIGHTWEIGHT_SYMTAB "Use lightweight symtab interface for ParseAPI, ProcC # Use ParseAPI analysis in Stackwalker? option (SW_ANALYSIS_STEPPER "Use ParseAPI-based analysis stepper in Stackwalker" ON) -option (BUILD_TARBALLS "Build Dyninst package tarballs. Requires git archive, tar, gzip." OFF) option (BUILD_RTLIB_32 "Build 32-bit runtime library on mixed 32/64 systems" OFF) -option(BUILD_DOCS "Build manuals from LaTeX sources" ON) - option (ENABLE_LTO "Enable Link-Time Optimization" OFF) option(ENABLE_DEBUGINFOD "Enable debuginfod support" OFF) From 83936c0ddac64a010fdfd689a082ba3cefcd310e Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 26 Apr 2022 23:03:56 -0500 Subject: [PATCH 116/505] Docker: don't use autamus cache (#1259) The public keys have been removed. --- docker/Dockerfile | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 4339aba4bc..63a6c50e57 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -75,12 +75,9 @@ WORKDIR /opt RUN git clone --depth 1 https://github.com/spack/spack ENV PATH=/opt/spack/bin:$PATH -# Use the autamus build cache for faster install -# Note that autamus currently uses 18.04 -RUN python3 -m pip install botocore boto3 && \ - spack mirror add autamus s3://autamus-cache && \ - curl http://s3.amazonaws.com/autamus-cache/build_cache/_pgp/FFEB24B0A9D81F6D5597F9900B59588C86C41BE7.pub > key.pub && \ - spack gpg trust key.pub +# Install the boto3 package for using AWS services +# spack uses this for its binary caches +RUN python3 -m pip install botocore boto3 # Find packages already installed on system, e.g. autoconf RUN spack external find --not-buildable gcc@11.0.1 autoconf bzip2 git tar xz perl cmake m4 ncurses && \ From b35fbc04f6bead711ae7c3e0952b34ec20ddee35 Mon Sep 17 00:00:00 2001 From: John Mellor-Crummey Date: Tue, 3 May 2022 13:33:58 -0500 Subject: [PATCH 117/505] Fix decoding of DWARF expressions into machine registers for Intel GPUs (#1262) We ignore the encoding as we do for all of the other GPUs. This case was missing and so hit the assert. --- common/src/dyn_regs.C | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/common/src/dyn_regs.C b/common/src/dyn_regs.C index 7cfd5aa0d4..88be3da518 100644 --- a/common/src/dyn_regs.C +++ b/common/src/dyn_regs.C @@ -1834,10 +1834,12 @@ MachRegister MachRegister::DwarfEncToReg(int encoding, Dyninst::Architecture arc break; case Arch_amdgpu_vega: case Arch_amdgpu_cdna2: - // ignore CUDA register encodings for now + // ignore AMD register encodings for now + return Dyninst::InvalidReg; + break; + case Arch_intelGen9: return Dyninst::InvalidReg; break; - case Arch_none: return Dyninst::InvalidReg; break; From b9067359529c578815fa471e5334d5bf5d0b10d0 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 5 May 2022 00:27:45 -0500 Subject: [PATCH 118/505] Fix bug in processing library paths in FindLibIberty.cmake (#1266) This was originally part of #1263 Co-authored-by: Jonathan R. Madsen --- cmake/Modules/FindLibIberty.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/FindLibIberty.cmake b/cmake/Modules/FindLibIberty.cmake index c52a342d6a..88b60d1150 100644 --- a/cmake/Modules/FindLibIberty.cmake +++ b/cmake/Modules/FindLibIberty.cmake @@ -71,7 +71,7 @@ find_package_handle_standard_args(LibIberty set(IBERTY_FOUND ${LibIberty_FOUND}) if(LibIberty_FOUND) - foreach(l in ${LibIberty_LIBRARIES}) + foreach(l ${LibIberty_LIBRARIES}) get_filename_component(_dir ${l} DIRECTORY) list(APPEND LibIberty_LIBRARY_DIRS ${_dir}) endforeach() From 55c45cca8b2ae90f07bbb3098c2f53285be7c90e Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 5 May 2022 14:38:54 -0500 Subject: [PATCH 119/505] Update and enforce formatting of CMake files (#1267) Co-authored-by: Jonathan R. Madsen --- .cmake-format.yaml | 85 + .github/workflows/cmake-formatting.yaml | 29 + CMakeLists.txt | 197 +- DyninstConfigVersion.cmake | 8 +- cmake/Boost.cmake | 324 +- cmake/DyninstConfig.cmake.in | 40 +- cmake/DyninstConfigVersion.cmake.in | 8 +- cmake/ElfUtils.cmake | 191 +- cmake/LanguageStandards.cmake | 15 +- cmake/LibIberty.cmake | 38 +- cmake/Modules/DyninstSystemPaths.cmake | 15 +- cmake/Modules/FindBoost.cmake | 3804 +++++++++++-------- cmake/Modules/FindLibDebuginfod.cmake | 66 +- cmake/Modules/FindLibDwarf.cmake | 68 +- cmake/Modules/FindLibElf.cmake | 68 +- cmake/Modules/FindLibIberty.cmake | 57 +- cmake/Modules/FindTBB.cmake | 318 +- cmake/Modules/FindThreadDB.cmake | 75 +- cmake/Modules/FindValgrind.cmake | 24 +- cmake/ThreadingBuildingBlocks.cmake | 215 +- cmake/ThreadingBuildingBlocks.install.cmake | 12 +- cmake/cap_arch_def.cmake | 204 +- cmake/endian.cmake | 8 +- cmake/optimization.cmake | 108 +- cmake/options.cmake | 23 +- cmake/platform.cmake | 8 +- cmake/platform_unix.cmake | 51 +- cmake/platform_windows.cmake | 2 +- cmake/shared.cmake | 233 +- cmake/visibility.cmake | 7 +- cmake/warnings.cmake | 266 +- common/CMakeLists.txt | 193 +- dwarf/CMakeLists.txt | 20 +- dynC_API/CMakeLists.txt | 10 +- dyninstAPI/CMakeLists.txt | 378 +- dyninstAPI_RT/CMakeLists.txt | 409 +- elf/CMakeLists.txt | 17 +- instructionAPI/CMakeLists.txt | 113 +- parseAPI/CMakeLists.txt | 206 +- parseThat/CMakeLists.txt | 34 +- patchAPI/CMakeLists.txt | 43 +- proccontrol/CMakeLists.txt | 127 +- stackwalk/CMakeLists.txt | 125 +- symlite/CMakeLists.txt | 33 +- symtabAPI/CMakeLists.txt | 140 +- 45 files changed, 4523 insertions(+), 3892 deletions(-) create mode 100644 .cmake-format.yaml create mode 100644 .github/workflows/cmake-formatting.yaml diff --git a/.cmake-format.yaml b/.cmake-format.yaml new file mode 100644 index 0000000000..e748a79944 --- /dev/null +++ b/.cmake-format.yaml @@ -0,0 +1,85 @@ +parse: + additional_commands: + dyninst_library: + flags: + - BUILD_SHARED + - BUILD_STATIC + kwargs: + HEADERS: '*' + SOURCES: '*' + DEPENDS: '*' + COMPILE_DEFINITIONS: '*' + COMPILE_FEATURES: '*' + COMPILE_OPTIONS: '*' + DESTINATION: '*' + DEFAULT_VISIBILITY: '*' + INCLUDE_DIRECTORIES: '*' + LINK_LIBRARIES: '*' + LINK_OPTIONS: '*' + PROPERTIES: '*' + dyninst_add_cache_option: + kwargs: + CACHE: '*' + override_spec: {} + vartags: [] + proptags: [] +format: + disable: false + line_width: 90 + tab_size: 4 + use_tabchars: false + fractional_tab_policy: use-space + max_subgroups_hwrap: 2 + max_pargs_hwrap: 6 + max_rows_cmdline: 2 + separate_ctrl_name_with_space: false + separate_fn_name_with_space: false + dangle_parens: false + dangle_align: child + min_prefix_chars: 4 + max_prefix_chars: 10 + max_lines_hwrap: 2 + line_ending: unix + command_case: lower + keyword_case: upper + always_wrap: [] + enable_sort: true + autosort: false + require_valid_layout: false + layout_passes: {} +markup: + bullet_char: '-' + enum_char: '*' + first_comment_is_literal: true + literal_comment_pattern: ^# + fence_pattern: ^\s*([`~]{3}[`~]*)(.*)$ + ruler_pattern: ^\s*[^\w\s]{3}.*[^\w\s]{3}$ + explicit_trailing_pattern: '#<' + hashruler_min_length: 10 + canonicalize_hashrulers: true + enable_markup: true +lint: + disabled_codes: [] + function_pattern: '[0-9a-z_]+' + macro_pattern: '[0-9A-Z_]+' + global_var_pattern: '[A-Z][0-9A-Z_]+' + internal_var_pattern: _[A-Z][0-9A-Z_]+ + local_var_pattern: '[a-z][a-z0-9_]+' + private_var_pattern: _[0-9a-z_]+ + public_var_pattern: '[A-Z][0-9A-Z_]+' + argument_var_pattern: '[a-z][a-z0-9_]+' + keyword_pattern: '[A-Z][0-9A-Z_]+' + max_conditionals_custom_parser: 2 + min_statement_spacing: 1 + max_statement_spacing: 2 + max_returns: 6 + max_branches: 12 + max_arguments: 5 + max_localvars: 15 + max_statements: 50 +encode: + emit_byteorder_mark: false + input_encoding: utf-8 + output_encoding: utf-8 +misc: + per_command: {} diff --git a/.github/workflows/cmake-formatting.yaml b/.github/workflows/cmake-formatting.yaml new file mode 100644 index 0000000000..e99b9aa06a --- /dev/null +++ b/.github/workflows/cmake-formatting.yaml @@ -0,0 +1,29 @@ + +name: Formatting + +on: + pull_request: + branches: [ master ] + +jobs: + cmake-formatting: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y python3-pip + python3 -m pip install cmake-format + - name: cmake-format + run: | + set +e + cmake-format -i $(find . -type f | egrep 'CMakeLists.txt|\.cmake$') + if [ $(git diff | wc -l) -gt 0 ]; then + echo -e "\nError! CMake files not formatted." + echo -e "\nRun the following to fix:" + for f in $(git diff --name-only); do echo -e " cmake-format -i $f"; done + echo + exit 1 + fi diff --git a/CMakeLists.txt b/CMakeLists.txt index 59de33a237..72cab2e837 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,30 +1,33 @@ -cmake_minimum_required (VERSION 3.4.0) +cmake_minimum_required(VERSION 3.4.0) # There is a bug in 3.19.0 that causes .S files to be treated like C files if(CMAKE_VERSION VERSION_EQUAL "3.19.0") - message(FATAL_ERROR "Dyninst cannot use CMake version 3.19.0") + message(FATAL_ERROR "Dyninst cannot use CMake version 3.19.0") endif() -project (Dyninst) +project(Dyninst) -set (DYNINST_ROOT ${PROJECT_SOURCE_DIR}) -set (CMAKE_SKIP_BUILD_RPATH FALSE) -set (CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) -set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) -set (CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(DYNINST_ROOT ${PROJECT_SOURCE_DIR}) +set(CMAKE_SKIP_BUILD_RPATH FALSE) +set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -set(STERILE_BUILD ON CACHE BOOL "Do not download/build any third-party dependencies from source") +set(STERILE_BUILD + ON + CACHE BOOL "Do not download/build any third-party dependencies from source") -LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES - "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir) -IF("${isSystemDir}" STREQUAL "-1") - set (CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") -ENDIF() +list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" + isSystemDir) +if("${isSystemDir}" STREQUAL "-1") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +endif() set(RT_SOURCE_DIR ${DYNINST_ROOT}/dyninstAPI_RT) set(RT_BINARY_DIR ${PROJECT_BINARY_DIR}/dyninstAPI_RT) -set (CMAKE_MODULE_PATH "${DYNINST_ROOT}/cmake" "${DYNINST_ROOT}/cmake/Modules" ${CMAKE_MODULE_PATH}) +set(CMAKE_MODULE_PATH "${DYNINST_ROOT}/cmake" "${DYNINST_ROOT}/cmake/Modules" + ${CMAKE_MODULE_PATH}) # Set the C and C++ language standards include(LanguageStandards) @@ -37,19 +40,20 @@ include(ThreadingBuildingBlocks) include(ElfUtils) if(UNIX) - include(LibIberty REQUIRED) + include(LibIberty REQUIRED) endif() include(shared) if(USE_OpenMP) - find_package(OpenMP REQUIRED) + find_package(OpenMP REQUIRED) endif() configure_file(cmake/version.h.in common/h/dyninstversion.h) include_directories(${PROJECT_BINARY_DIR}) include_directories(${PROJECT_BINARY_DIR}/common/h) -set (HEADER_DIRS common +set(HEADER_DIRS + common dataflowAPI dyninstAPI instructionAPI @@ -57,117 +61,114 @@ set (HEADER_DIRS common patchAPI proccontrol stackwalk - symtabAPI - ) + symtabAPI) if(NOT ${PLATFORM} MATCHES nt) - set (HEADER_DIRS ${HEADER_DIRS} - dwarf - elf - symlite - ) + set(HEADER_DIRS ${HEADER_DIRS} dwarf elf symlite) endif() - - -foreach (dir ${HEADER_DIRS}) - include_directories ( ${DYNINST_ROOT}/${dir}/h ) +foreach(dir ${HEADER_DIRS}) + include_directories(${DYNINST_ROOT}/${dir}/h) endforeach() -set(ADD_VALGRIND_ANNOTATIONS OFF CACHE BOOL "Enable annotations for Valgrind analysis") +set(ADD_VALGRIND_ANNOTATIONS + OFF + CACHE BOOL "Enable annotations for Valgrind analysis") if(ADD_VALGRIND_ANNOTATIONS) - find_package(Valgrind REQUIRED) - include_directories(${Valgrind_INCLUDE_DIRS}) - add_definitions(-DENABLE_VG_ANNOTATIONS) + find_package(Valgrind REQUIRED) + include_directories(${Valgrind_INCLUDE_DIRS}) + add_definitions(-DENABLE_VG_ANNOTATIONS) endif() -include_directories ( - ${DYNINST_ROOT} - ${DYNINST_ROOT}/external - ${TBB_INCLUDE_DIRS} - ) +include_directories(${DYNINST_ROOT} ${DYNINST_ROOT}/external ${TBB_INCLUDE_DIRS}) # Component time -add_subdirectory (common) +add_subdirectory(common) if(NOT ${PLATFORM} MATCHES nt) - add_subdirectory (elf) - add_subdirectory (dwarf) - add_subdirectory (symlite) + add_subdirectory(elf) + add_subdirectory(dwarf) + add_subdirectory(symlite) endif() -add_subdirectory (instructionAPI) -add_subdirectory (symtabAPI) -add_subdirectory (parseAPI) -add_subdirectory (proccontrol) -add_subdirectory (stackwalk) -add_subdirectory (patchAPI) +add_subdirectory(instructionAPI) +add_subdirectory(symtabAPI) +add_subdirectory(parseAPI) +add_subdirectory(proccontrol) +add_subdirectory(stackwalk) +add_subdirectory(patchAPI) if(${SYMREADER} MATCHES symtabAPI) - add_subdirectory (dyninstAPI) - add_subdirectory (dynC_API) - add_subdirectory (parseThat) + add_subdirectory(dyninstAPI) + add_subdirectory(dynC_API) + add_subdirectory(parseThat) endif() - # Build the RT library as a separate project so we can change compilers - message(STATUS "Configuring DyninstAPI_RT in ${RT_BINARY_DIR}") - file(REMOVE_RECURSE ${RT_BINARY_DIR}/CMakeCache.txt ${RT_BINARY_DIR}/CMakeFiles ${RT_BINARY_DIR}/Makefile) - file(MAKE_DIRECTORY ${RT_BINARY_DIR}) - set (RT_C_COMPILER ${CMAKE_C_COMPILER} CACHE STRING "Compiler for runtime library") - set (ENABLE_STATIC_LIBS NO CACHE STRING "Build static libraries as well?") - message(STATUS "Configuring RT library") - - execute_process(WORKING_DIRECTORY ${RT_BINARY_DIR} - COMMAND ${CMAKE_COMMAND} - "-DCMAKE_C_COMPILER=${RT_C_COMPILER}" - "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" - "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" - "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" - "-DINSTALL_LIB_DIR=${INSTALL_LIB_DIR}" - "-DINSTALL_INCLUDE_DIR=${INSTALL_INCLUDE_DIR}" - "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}" - "-DBUILD_RTLIB_32=${BUILD_RTLIB_32}" - "-DPLATFORM=${PLATFORM}" - "-DDYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS=${DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS}" - "-DDYNINST_EXTRA_WARNINGS=${DYNINST_EXTRA_WARNINGS}" - "-DDYNINST_WARNINGS_AS_ERRORS=${DYNINST_WARNINGS_AS_ERRORS}" - "-DDYNINST_CXX_LANGUAGE_STANDARD=${DYNINST_CXX_LANGUAGE_STANDARD}" - "-DDYNINST_C_LANGUAGE_STANDARD=${DYNINST_C_LANGUAGE_STANDARD}" - -G "${CMAKE_GENERATOR}" - -B "${RT_BINARY_DIR}" - -S "${RT_SOURCE_DIR}") - find_file(${RT_MAKEFILE} Makefile PATHS ${RT_BINARY_DIR} NO_DEFAULT_PATH) - message(STATUS "RTlib Makefile: ${RT_MAKEFILE}") - if(MSVC) - include_external_msproject(DyninstAPI_RT dyninstAPI_RT/dyninstAPI_RT.vcxproj) - include_external_msproject(DyninstAPI_RT_static dyninstAPI_RT/dyninstAPI_RT_static.vcxproj) - else() - add_custom_target(DyninstRT - ALL - $(MAKE) - WORKING_DIRECTORY ${RT_BINARY_DIR} - COMMENT "Building DyninstRT") +# Build the RT library as a separate project so we can change compilers +message(STATUS "Configuring DyninstAPI_RT in ${RT_BINARY_DIR}") +file(REMOVE_RECURSE ${RT_BINARY_DIR}/CMakeCache.txt ${RT_BINARY_DIR}/CMakeFiles + ${RT_BINARY_DIR}/Makefile) +file(MAKE_DIRECTORY ${RT_BINARY_DIR}) +set(RT_C_COMPILER + ${CMAKE_C_COMPILER} + CACHE STRING "Compiler for runtime library") +set(ENABLE_STATIC_LIBS + NO + CACHE STRING "Build static libraries as well?") +message(STATUS "Configuring RT library") + +execute_process( + WORKING_DIRECTORY ${RT_BINARY_DIR} + COMMAND + ${CMAKE_COMMAND} "-DCMAKE_C_COMPILER=${RT_C_COMPILER}" + "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" + "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" + "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" "-DINSTALL_LIB_DIR=${INSTALL_LIB_DIR}" + "-DINSTALL_INCLUDE_DIR=${INSTALL_INCLUDE_DIR}" "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}" + "-DBUILD_RTLIB_32=${BUILD_RTLIB_32}" "-DPLATFORM=${PLATFORM}" + "-DDYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS=${DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS}" + "-DDYNINST_EXTRA_WARNINGS=${DYNINST_EXTRA_WARNINGS}" + "-DDYNINST_WARNINGS_AS_ERRORS=${DYNINST_WARNINGS_AS_ERRORS}" + "-DDYNINST_CXX_LANGUAGE_STANDARD=${DYNINST_CXX_LANGUAGE_STANDARD}" + "-DDYNINST_C_LANGUAGE_STANDARD=${DYNINST_C_LANGUAGE_STANDARD}" -G + "${CMAKE_GENERATOR}" -B "${RT_BINARY_DIR}" -S "${RT_SOURCE_DIR}") +find_file( + ${RT_MAKEFILE} Makefile + PATHS ${RT_BINARY_DIR} + NO_DEFAULT_PATH) +message(STATUS "RTlib Makefile: ${RT_MAKEFILE}") +if(MSVC) + include_external_msproject(DyninstAPI_RT dyninstAPI_RT/dyninstAPI_RT.vcxproj) + include_external_msproject(DyninstAPI_RT_static + dyninstAPI_RT/dyninstAPI_RT_static.vcxproj) +else() + add_custom_target( + DyninstRT ALL + $(MAKE) + WORKING_DIRECTORY ${RT_BINARY_DIR} + COMMENT "Building DyninstRT") if(TARGET TBB) - add_dependencies(DyninstRT TBB) + add_dependencies(DyninstRT TBB) endif() if(TARGET dyninstAPI) - add_dependencies(dyninstAPI DyninstRT) + add_dependencies(dyninstAPI DyninstRT) endif() if(TARGET dyninstAPI-static) - add_dependencies(dyninstAPI-static DyninstRT) + add_dependencies(dyninstAPI-static DyninstRT) endif() if(TARGET boost) - add_dependencies(DyninstRT boost) + add_dependencies(DyninstRT boost) endif() - endif() +endif() - install(SCRIPT "${RT_BINARY_DIR}/cmake_install.cmake") +install(SCRIPT "${RT_BINARY_DIR}/cmake_install.cmake") -set (VERSION_STRING "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}.${DYNINST_PATCH_VERSION}") -set (DYNINST_NAME "DyninstAPI-${VERSION_STRING}") +set(VERSION_STRING + "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}.${DYNINST_PATCH_VERSION}") +set(DYNINST_NAME "DyninstAPI-${VERSION_STRING}") if(TARGET boost) add_dependencies(common boost) endif() -#add_subdirectory(testsuite) +# add_subdirectory(testsuite) # Copy out all of the cmake files so they can be used by the Testsuite install(DIRECTORY ${DYNINST_ROOT}/cmake/ DESTINATION ${INSTALL_CMAKE_DIR}) diff --git a/DyninstConfigVersion.cmake b/DyninstConfigVersion.cmake index 8da8c28f64..37eb114574 100644 --- a/DyninstConfigVersion.cmake +++ b/DyninstConfigVersion.cmake @@ -1,7 +1,7 @@ -set (PACKAGE_VERSION "8.2.0") +set(PACKAGE_VERSION "8.2.0") -if ("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") - set (PACKAGE_VERSION_COMPATIBLE FALSE) +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) else() - set (PACKAGE_VERSION_COMPATIBLE TRUE) + set(PACKAGE_VERSION_COMPATIBLE TRUE) endif() diff --git a/cmake/Boost.cmake b/cmake/Boost.cmake index 53fe321ef4..11458e3be3 100644 --- a/cmake/Boost.cmake +++ b/cmake/Boost.cmake @@ -21,7 +21,7 @@ # Advanced options: # # Boost_DEBUG - Enable debug output from FindBoost -# Boost_NO_SYSTEM_PATHS - Disable searching in locations not specified by hint variables +# Boost_NO_SYSTEM_PATHS - Disable searching in locations not specified by hint variables # # Exports the following CMake cache variables # @@ -47,59 +47,72 @@ #======================================================================================================== if(Boost_FOUND) - return() + return() endif() # Need at least Boost-1.67 because of deprecated headers set(_boost_min_version 1.70.0) # Provide a default, if the user didn't specify -set(Boost_MIN_VERSION ${_boost_min_version} CACHE STRING "Minimum Boost version") +set(Boost_MIN_VERSION + ${_boost_min_version} + CACHE STRING "Minimum Boost version") # Enforce minimum version if(${Boost_MIN_VERSION} VERSION_LESS ${_boost_min_version}) - message(FATAL_ERROR "Requested Boost-${Boost_MIN_VERSION} is less than minimum supported version (${_boost_min_version})") + message( + FATAL_ERROR + "Requested Boost-${Boost_MIN_VERSION} is less than minimum supported version (${_boost_min_version})" + ) endif() # -------------- RUNTIME CONFIGURATION ---------------------------------------- -# Use the multithreaded version of Boost -# NB: This _must_ be a cache variable as it -# controls the tagged layout of Boost library names -set(Boost_USE_MULTITHREADED ON CACHE BOOL "Enable multithreaded Boost libraries") +# Use the multithreaded version of Boost NB: This _must_ be a cache variable as it +# controls the tagged layout of Boost library names +set(Boost_USE_MULTITHREADED + ON + CACHE BOOL "Enable multithreaded Boost libraries") -# Don't use libraries linked statically to the C++ runtime -# NB: This _must_ be a cache variable as it -# controls the tagged layout of Boost library names -set(Boost_USE_STATIC_RUNTIME OFF CACHE BOOL - "Enable usage of libraries statically linked to C++ runtime") +# Don't use libraries linked statically to the C++ runtime NB: This _must_ be a cache +# variable as it controls the tagged layout of Boost library names +set(Boost_USE_STATIC_RUNTIME + OFF + CACHE BOOL "Enable usage of libraries statically linked to C++ runtime") # If using multithreaded Boost, make sure Threads has been intialized if(Boost_USE_MULTITHREADED AND NOT DEFINED CMAKE_THREAD_LIBS_INIT) - find_package(Threads) + find_package(Threads) endif() # Enable debug output from FindBoost -set(Boost_DEBUG OFF CACHE BOOL "Enable debug output from FindBoost") +set(Boost_DEBUG + OFF + CACHE BOOL "Enable debug output from FindBoost") # -------------- PATHS -------------------------------------------------------- # By default, search system paths -set(Boost_NO_SYSTEM_PATHS OFF CACHE BOOL "Disable searching in locations not specified by hint variables") +set(Boost_NO_SYSTEM_PATHS + OFF + CACHE BOOL "Disable searching in locations not specified by hint variables") -# A sanity check -# This must be done _before_ the cache variables are set +# A sanity check This must be done _before_ the cache variables are set if(PATH_BOOST AND Boost_ROOT_DIR) - message(FATAL_ERROR "PATH_BOOST AND Boost_ROOT_DIR both specified. Please provide only one") + message( + FATAL_ERROR + "PATH_BOOST AND Boost_ROOT_DIR both specified. Please provide only one") endif() # Provide a default root directory if(NOT PATH_BOOST AND NOT Boost_ROOT_DIR) - set(PATH_BOOST "/usr") + set(PATH_BOOST "/usr") endif() # Set the default location to look for Boost -set(Boost_ROOT_DIR ${PATH_BOOST} CACHE PATH "Base directory the of Boost installation") +set(Boost_ROOT_DIR + ${PATH_BOOST} + CACHE PATH "Base directory the of Boost installation") # In FindBoost, Boost_ROOT_DIR is spelled BOOST_ROOT set(BOOST_ROOT ${Boost_ROOT_DIR}) @@ -113,25 +126,26 @@ list(APPEND _boost_defines -DBOOST_ALL_NO_LIB=1) # Disable generating serialization code in boost::multi_index list(APPEND _boost_defines -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION) - -# There are broken versions of MSVC that won't handle variadic templates -# correctly (despite the C++11 test case passing). + +# There are broken versions of MSVC that won't handle variadic templates correctly +# (despite the C++11 test case passing). if(MSVC) - list(APPEND _boost_defines -DBOOST_NO_CXX11_VARIADIC_TEMPLATES) + list(APPEND _boost_defines -DBOOST_NO_CXX11_VARIADIC_TEMPLATES) endif() -set(Boost_DEFINES ${_boost_defines} CACHE STRING "Boost compiler defines") +set(Boost_DEFINES + ${_boost_defines} + CACHE STRING "Boost compiler defines") add_definitions(${Boost_DEFINES}) # -------------- INTERNALS ---------------------------------------------------- -# Disable Boost's own CMake as it's known to be buggy -# NB: This should not be a cache variable +# Disable Boost's own CMake as it's known to be buggy NB: This should not be a cache +# variable set(Boost_NO_BOOST_CMAKE ON) -# The required Boost library components -# NB: These are just the ones that require compilation/linking -# This should _not_ be a cache variable +# The required Boost library components NB: These are just the ones that require +# compilation/linking This should _not_ be a cache variable set(_boost_components atomic chrono date_time filesystem thread timer) find_package(Boost ${Boost_MIN_VERSION} COMPONENTS ${_boost_components}) @@ -139,120 +153,142 @@ find_package(Boost ${Boost_MIN_VERSION} COMPONENTS ${_boost_components}) # -------------- SOURCE BUILD ------------------------------------------------- if(Boost_FOUND) - # Force the cache entries to be updated - # Normally, these would not be exported. However, we need them in the Testsuite - set(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIRS} CACHE PATH "Boost include directory" FORCE) - set(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIRS} CACHE PATH "Boost library directory" FORCE) - set(Boost_INCLUDE_DIR ${Boost_INCLUDE_DIR} CACHE PATH "Boost include directory" FORCE) - add_library(boost SHARED IMPORTED) + # Force the cache entries to be updated Normally, these would not be exported. + # However, we need them in the Testsuite + set(Boost_INCLUDE_DIRS + ${Boost_INCLUDE_DIRS} + CACHE PATH "Boost include directory" FORCE) + set(Boost_LIBRARY_DIRS + ${Boost_LIBRARY_DIRS} + CACHE PATH "Boost library directory" FORCE) + set(Boost_INCLUDE_DIR + ${Boost_INCLUDE_DIR} + CACHE PATH "Boost include directory" FORCE) + add_library(boost SHARED IMPORTED) elseif(NOT Boost_FOUND AND STERILE_BUILD) - message(FATAL_ERROR "Boost not found and cannot be downloaded because build is sterile.") + message( + FATAL_ERROR "Boost not found and cannot be downloaded because build is sterile.") else() - # If we didn't find a suitable version on the system, then download one from the web - set(_boost_download_version "1.69.0") - - # If the user specifies a version other than _boost_download_version, use that version. - # NB: We know Boost_MIN_VERSION is >= _boost_min_version from earlier checks - if(${Boost_MIN_VERSION} VERSION_LESS ${_boost_download_version} OR - ${Boost_MIN_VERSION} VERSION_GREATER ${_boost_download_version}) - set(_boost_download_version ${Boost_MIN_VERSION}) - endif() - message(STATUS "${Boost_ERROR_REASON}") - message(STATUS "Attempting to build ${_boost_download_version} as external project") - - # This is an internal consistency check. Normal users should not trip this since - # they cannot affect _boost_download_version. - if(${_boost_download_version} VERSION_LESS ${Boost_MIN_VERSION}) - message(FATAL_ERROR "Download version of Boost (${_boost_download_version}) " + # If we didn't find a suitable version on the system, then download one from the web + set(_boost_download_version "1.69.0") + + # If the user specifies a version other than _boost_download_version, use that + # version. NB: We know Boost_MIN_VERSION is >= _boost_min_version from earlier checks + if(${Boost_MIN_VERSION} VERSION_LESS ${_boost_download_version} + OR ${Boost_MIN_VERSION} VERSION_GREATER ${_boost_download_version}) + set(_boost_download_version ${Boost_MIN_VERSION}) + endif() + message(STATUS "${Boost_ERROR_REASON}") + message(STATUS "Attempting to build ${_boost_download_version} as external project") + + # This is an internal consistency check. Normal users should not trip this since they + # cannot affect _boost_download_version. + if(${_boost_download_version} VERSION_LESS ${Boost_MIN_VERSION}) + message( + FATAL_ERROR "Download version of Boost (${_boost_download_version}) " "is older than minimum allowed version (${Boost_MIN_VERSION})") - endif() - - if(Boost_USE_MULTITHREADED) - set(_boost_threading multi) - else() - set(_boost_threading single) - endif() - - if(Boost_USE_STATIC_RUNTIME) - set(_boost_runtime_link static) - else() - set(_boost_runtime_link shared) - endif() - - # Change the base directory - set(Boost_ROOT_DIR ${CMAKE_INSTALL_PREFIX} CACHE PATH "Base directory the of Boost installation" FORCE) - - # Update the exported variables - set(Boost_INCLUDE_DIRS ${Boost_ROOT_DIR}/include CACHE PATH "Boost include directory" FORCE) - set(Boost_LIBRARY_DIRS ${Boost_ROOT_DIR}/lib CACHE PATH "Boost library directory" FORCE) - set(Boost_INCLUDE_DIR ${Boost_INCLUDE_DIRS} CACHE PATH "Boost include directory" FORCE) - - set(BOOST_ARGS - --ignore-site-config - --link=static - --runtime-link=${_boost_runtime_link} - --threading=${_boost_threading}) - if(WIN32) - # NB: We need to build both debug/release on windows - # as we don't use CMAKE_BUILD_TYPE - set(BOOST_BOOTSTRAP call bootstrap.bat) - set(BOOST_BUILD ".\\b2") - if(CMAKE_SIZEOF_VOID_P STREQUAL "8") - list(APPEND BOOST_ARGS address-model=64) endif() - else() - set(BOOST_BOOTSTRAP "./bootstrap.sh") - set(BOOST_BUILD "./b2") - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - list(APPEND BOOST_ARGS variant=debug) + + if(Boost_USE_MULTITHREADED) + set(_boost_threading multi) else() - list(APPEND BOOST_ARGS variant=release) + set(_boost_threading single) endif() - endif() - - # Join the component names together to pass to --with-libraries during bootstrap - set(_boost_lib_names "") - foreach(c ${_boost_components}) - # list(JOIN ...) is in cmake 3.12 - string(CONCAT _boost_lib_names "${_boost_lib_names}${c},") - endforeach() - - include(ExternalProject) - string(REPLACE "." "_" _boost_download_filename ${_boost_download_version}) - ExternalProject_Add( - boost - PREFIX ${CMAKE_BINARY_DIR}/boost - URL http://downloads.sourceforge.net/project/boost/boost/${_boost_download_version}/boost_${_boost_download_filename}.zip - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${BOOST_BOOTSTRAP} --prefix=${Boost_ROOT_DIR} --with-libraries=${_boost_lib_names} - BUILD_COMMAND ${BOOST_BUILD} ${BOOST_ARGS} install - INSTALL_COMMAND "" - ) - - if(WIN32) - # We need to specify different library names for debug vs release - set(Boost_LIBRARIES "") - foreach(c ${_boost_components}) - list(APPEND Boost_LIBRARIES "optimized libboost_${c} debug libboost_${c}-gd ") - - # Also export cache variables for the file location of each library - string(TOUPPER ${c} _basename) - set(Boost_${_basename}_LIBRARY_RELEASE "${Boost_LIBRARY_DIRS}/libboost_${c}.dll" CACHE FILEPATH "" FORCE) - set(Boost_${_basename}_LIBRARY_DEBUG "${Boost_LIBRARY_DIRS}/libboost_${c}-gd.dll" CACHE FILEPATH "" FORCE) - endforeach() - else() - # Transform the component names into the library filenames - # e.g., system -> boost_system - set(Boost_LIBRARIES "") + + if(Boost_USE_STATIC_RUNTIME) + set(_boost_runtime_link static) + else() + set(_boost_runtime_link shared) + endif() + + # Change the base directory + set(Boost_ROOT_DIR + ${CMAKE_INSTALL_PREFIX} + CACHE PATH "Base directory the of Boost installation" FORCE) + + # Update the exported variables + set(Boost_INCLUDE_DIRS + ${Boost_ROOT_DIR}/include + CACHE PATH "Boost include directory" FORCE) + set(Boost_LIBRARY_DIRS + ${Boost_ROOT_DIR}/lib + CACHE PATH "Boost library directory" FORCE) + set(Boost_INCLUDE_DIR + ${Boost_INCLUDE_DIRS} + CACHE PATH "Boost include directory" FORCE) + + set(BOOST_ARGS --ignore-site-config --link=static + --runtime-link=${_boost_runtime_link} --threading=${_boost_threading}) + if(WIN32) + # NB: We need to build both debug/release on windows as we don't use + # CMAKE_BUILD_TYPE + set(BOOST_BOOTSTRAP call bootstrap.bat) + set(BOOST_BUILD ".\\b2") + if(CMAKE_SIZEOF_VOID_P STREQUAL "8") + list(APPEND BOOST_ARGS address-model=64) + endif() + else() + set(BOOST_BOOTSTRAP "./bootstrap.sh") + set(BOOST_BUILD "./b2") + if(CMAKE_BUILD_TYPE STREQUAL "Debug") + list(APPEND BOOST_ARGS variant=debug) + else() + list(APPEND BOOST_ARGS variant=release) + endif() + endif() + + # Join the component names together to pass to --with-libraries during bootstrap + set(_boost_lib_names "") foreach(c ${_boost_components}) - list(APPEND Boost_LIBRARIES "${Boost_LIBRARY_DIRS}/libboost_${c}.so") - - # Also export cache variables for the file location of each library - string(TOUPPER ${c} _basename) - set(Boost_${_basename}_LIBRARY_RELEASE "${Boost_LIBRARY_DIRS}/libboost_${c}.so" CACHE FILEPATH "" FORCE) - set(Boost_${_basename}_LIBRARY_DEBUG "${Boost_LIBRARY_DIRS}/libboost_${c}.so" CACHE FILEPATH "" FORCE) + # list(JOIN ...) is in cmake 3.12 + string(CONCAT _boost_lib_names "${_boost_lib_names}${c},") endforeach() - endif() + + include(ExternalProject) + string(REPLACE "." "_" _boost_download_filename ${_boost_download_version}) + externalproject_add( + boost + PREFIX ${CMAKE_BINARY_DIR}/boost + URL http://downloads.sourceforge.net/project/boost/boost/${_boost_download_version}/boost_${_boost_download_filename}.zip + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND + CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ${BOOST_BOOTSTRAP} + --prefix=${Boost_ROOT_DIR} --with-libraries=${_boost_lib_names} + BUILD_COMMAND ${BOOST_BUILD} ${BOOST_ARGS} install + INSTALL_COMMAND "") + + if(WIN32) + # We need to specify different library names for debug vs release + set(Boost_LIBRARIES "") + foreach(c ${_boost_components}) + list(APPEND Boost_LIBRARIES "optimized libboost_${c} debug libboost_${c}-gd ") + + # Also export cache variables for the file location of each library + string(TOUPPER ${c} _basename) + set(Boost_${_basename}_LIBRARY_RELEASE + "${Boost_LIBRARY_DIRS}/libboost_${c}.dll" + CACHE FILEPATH "" FORCE) + set(Boost_${_basename}_LIBRARY_DEBUG + "${Boost_LIBRARY_DIRS}/libboost_${c}-gd.dll" + CACHE FILEPATH "" FORCE) + endforeach() + else() + # Transform the component names into the library filenames e.g., system -> + # boost_system + set(Boost_LIBRARIES "") + foreach(c ${_boost_components}) + list(APPEND Boost_LIBRARIES "${Boost_LIBRARY_DIRS}/libboost_${c}.so") + + # Also export cache variables for the file location of each library + string(TOUPPER ${c} _basename) + set(Boost_${_basename}_LIBRARY_RELEASE + "${Boost_LIBRARY_DIRS}/libboost_${c}.so" + CACHE FILEPATH "" FORCE) + set(Boost_${_basename}_LIBRARY_DEBUG + "${Boost_LIBRARY_DIRS}/libboost_${c}.so" + CACHE FILEPATH "" FORCE) + endforeach() + endif() endif() # -------------- EXPORT VARIABLES --------------------------------------------- @@ -260,18 +296,22 @@ endif() # Export Boost_THREAD_LIBRARY list(FIND _boost_components "thread" _building_threads) if(Boost_USE_MULTITHREADED AND ${_building_threads}) - # On Windows, always use the debug version - # On Linux, we don't use tagged builds, so the debug/release filenames are the same - set(Boost_THREAD_LIBRARY ${Boost_THREAD_LIBRARY_DEBUG} CACHE FILEPATH "Boost thread library") + # On Windows, always use the debug version On Linux, we don't use tagged builds, so + # the debug/release filenames are the same + set(Boost_THREAD_LIBRARY + ${Boost_THREAD_LIBRARY_DEBUG} + CACHE FILEPATH "Boost thread library") endif() # Add the system thread library if(Boost_USE_MULTITHREADED) - list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) endif() # Export the complete set of libraries -set(Boost_LIBRARIES ${Boost_LIBRARIES} CACHE FILEPATH "Boost library files" FORCE) +set(Boost_LIBRARIES + ${Boost_LIBRARIES} + CACHE FILEPATH "Boost library files" FORCE) link_directories(${Boost_LIBRARY_DIRS}) include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) diff --git a/cmake/DyninstConfig.cmake.in b/cmake/DyninstConfig.cmake.in index 7578e4687c..9fa155d3fc 100644 --- a/cmake/DyninstConfig.cmake.in +++ b/cmake/DyninstConfig.cmake.in @@ -8,37 +8,35 @@ # compute paths get_filename_component(DYNINST_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set (DYNINST_INCLUDE_DIR @CONF_INCLUDE_DIRS@) +set(DYNINST_INCLUDE_DIR @CONF_INCLUDE_DIRS@) -# Library dependencies -#include ("${DYNINST_CMAKE_DIR}/DyninstTargets.cmake") +# Library dependencies include ("${DYNINST_CMAKE_DIR}/DyninstTargets.cmake") foreach(TARG @ALL_DYNINST_TARGETS@) - include ("${DYNINST_CMAKE_DIR}/${TARG}Targets.cmake" OPTIONAL) + include("${DYNINST_CMAKE_DIR}/${TARG}Targets.cmake" OPTIONAL) endforeach() -set (DYNINST_LIBRARIES "dyninstAPI") +set(DYNINST_LIBRARIES "dyninstAPI") # Other variables Dyninst mutators may depend on -set (DYNINST_PLATFORM "@PLATFORM@") -set (DYNINST_INTERNAL_DEFINES @UNIFIED_DEFINES@) +set(DYNINST_PLATFORM "@PLATFORM@") +set(DYNINST_INTERNAL_DEFINES @UNIFIED_DEFINES@) if(DYNINST_FIND_COMPONENTS) - foreach(COMP DYNINST_FIND_COMPONENTS) - if(NOT TARGET ${COMP}) - set(DYNINST_${COMP}_FOUND 0) - if(DYNINST_FIND_REQUIRED_${COMP}) - MESSAGE(ERROR "${COMP} was not part of the Dyninst build") - endif() - else() - set(DYNINST_${COMP}_FOUND 1) - MESSAGE(STATUS "Found ${COMP}") - endif() - endforeach() + foreach(COMP DYNINST_FIND_COMPONENTS) + if(NOT TARGET ${COMP}) + set(DYNINST_${COMP}_FOUND 0) + if(DYNINST_FIND_REQUIRED_${COMP}) + message(ERROR "${COMP} was not part of the Dyninst build") + endif() + else() + set(DYNINST_${COMP}_FOUND 1) + message(STATUS "Found ${COMP}") + endif() + endforeach() endif() if(TARGET dyninstAPI) - set(Dyninst_FOUND 1) + set(Dyninst_FOUND 1) else() - set(Dyninst_FOUND 0) + set(Dyninst_FOUND 0) endif() - diff --git a/cmake/DyninstConfigVersion.cmake.in b/cmake/DyninstConfigVersion.cmake.in index 8090b4e768..985c4c4281 100644 --- a/cmake/DyninstConfigVersion.cmake.in +++ b/cmake/DyninstConfigVersion.cmake.in @@ -1,7 +1,7 @@ -set (PACKAGE_VERSION "@DYNINST_VERSION@") +set(PACKAGE_VERSION "@DYNINST_VERSION@") -if ("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") - set (PACKAGE_VERSION_COMPATIBLE FALSE) +if("${PACKAGE_VERSION}" VERSION_LESS "${PACKAGE_FIND_VERSION}") + set(PACKAGE_VERSION_COMPATIBLE FALSE) else() - set (PACKAGE_VERSION_COMPATIBLE TRUE) + set(PACKAGE_VERSION_COMPATIBLE TRUE) endif() diff --git a/cmake/ElfUtils.cmake b/cmake/ElfUtils.cmake index 7eeb3f1b84..fcea960ed8 100644 --- a/cmake/ElfUtils.cmake +++ b/cmake/ElfUtils.cmake @@ -28,46 +28,52 @@ # #====================================================================================== -if(LibElf_FOUND AND LibDwarf_FOUND AND NOT ENABLE_DEBUGINFOD) - return() +if(LibElf_FOUND + AND LibDwarf_FOUND + AND NOT ENABLE_DEBUGINFOD) + return() endif() if(NOT UNIX) - return() + return() endif() -# Minimum acceptable version of elfutils -# NB: We need >=0.186 because of NVIDIA line map extensions +# Minimum acceptable version of elfutils NB: We need >=0.186 because of NVIDIA line map +# extensions set(_min_version 0.186) -set(ElfUtils_MIN_VERSION ${_min_version} +set(ElfUtils_MIN_VERSION + ${_min_version} CACHE STRING "Minimum acceptable elfutils version") if(${ElfUtils_MIN_VERSION} VERSION_LESS ${_min_version}) - message( - FATAL_ERROR - "Requested version ${ElfUtils_MIN_VERSION} is less than minimum supported version (${_min_version})" - ) + message( + FATAL_ERROR + "Requested version ${ElfUtils_MIN_VERSION} is less than minimum supported version (${_min_version})" + ) endif() # -------------- PATHS -------------------------------------------------------- # Base directory the of elfutils installation -set(ElfUtils_ROOT_DIR "/usr" +set(ElfUtils_ROOT_DIR + "/usr" CACHE PATH "Base directory the of elfutils installation") # Hint directory that contains the elfutils headers files -set(ElfUtils_INCLUDEDIR "${ElfUtils_ROOT_DIR}/include" +set(ElfUtils_INCLUDEDIR + "${ElfUtils_ROOT_DIR}/include" CACHE PATH "Hint directory that contains the elfutils headers files") # Hint directory that contains the elfutils library files -set(ElfUtils_LIBRARYDIR "${ElfUtils_ROOT_DIR}/lib" +set(ElfUtils_LIBRARYDIR + "${ElfUtils_ROOT_DIR}/lib" CACHE PATH "Hint directory that contains the elfutils library files") # libelf/dwarf-specific directory hints foreach(l LibElf LibDwarf LibDebuginfod) - foreach(d ROOT_DIR INCLUDEDIR LIBRARYDIR) - set(${l}_${d} ${ElfUtils_${d}}) - endforeach() + foreach(d ROOT_DIR INCLUDEDIR LIBRARYDIR) + set(${l}_${d} ${ElfUtils_${d}}) + endforeach() endforeach() # -------------- PACKAGES------------------------------------------------------ @@ -76,89 +82,94 @@ find_package(LibElf ${ElfUtils_MIN_VERSION}) # Don't search for libdw or libdebuginfod if we didn't find a suitable libelf if(LibElf_FOUND) - find_package(LibDwarf ${ElfUtils_MIN_VERSION}) - if (ENABLE_DEBUGINFOD) - find_package(LibDebuginfod ${ElfUtils_MIN_VERSION} REQUIRED) - endif() + find_package(LibDwarf ${ElfUtils_MIN_VERSION}) + if(ENABLE_DEBUGINFOD) + find_package(LibDebuginfod ${ElfUtils_MIN_VERSION} REQUIRED) + endif() endif() # -------------- SOURCE BUILD ------------------------------------------------- -if(LibElf_FOUND AND LibDwarf_FOUND AND (NOT ENABLE_DEBUGINFOD OR LibDebuginfod_FOUND)) - if(ENABLE_DEBUGINFOD AND LibDebuginfod_FOUND) - set(_eu_root ${ElfUtils_ROOT_DIR}) - set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS} ${LibDebuginfod_INCLUDE_DIRS}) - set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS} ${LibDebuginfod_LIBRARY_DIRS}) - set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES} ${LibDebuginfod_LIBRARIES}) - else() - set(_eu_root ${ElfUtils_ROOT_DIR}) - set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS}) - set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS}) - set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES}) - endif() - add_library(ElfUtils SHARED IMPORTED) +if(LibElf_FOUND + AND LibDwarf_FOUND + AND (NOT ENABLE_DEBUGINFOD OR LibDebuginfod_FOUND)) + if(ENABLE_DEBUGINFOD AND LibDebuginfod_FOUND) + set(_eu_root ${ElfUtils_ROOT_DIR}) + set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS} + ${LibDebuginfod_INCLUDE_DIRS}) + set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS} + ${LibDebuginfod_LIBRARY_DIRS}) + set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES} ${LibDebuginfod_LIBRARIES}) + else() + set(_eu_root ${ElfUtils_ROOT_DIR}) + set(_eu_inc_dirs ${LibElf_INCLUDE_DIRS} ${LibDwarf_INCLUDE_DIRS}) + set(_eu_lib_dirs ${LibElf_LIBRARY_DIRS} ${LibDwarf_LIBRARY_DIRS}) + set(_eu_libs ${LibElf_LIBRARIES} ${LibDwarf_LIBRARIES}) + endif() + add_library(ElfUtils SHARED IMPORTED) elseif(NOT (LibElf_FOUND AND LibDwarf_FOUND) AND STERILE_BUILD) - message(FATAL_ERROR "Elfutils not found and cannot be downloaded because build is sterile.") + message( + FATAL_ERROR + "Elfutils not found and cannot be downloaded because build is sterile.") else() - # If we didn't find a suitable version on the system, then download one from the web - # NB: When building from source, we need at least elfutils-0.176 in order to use - # the --enable-install-elf option - set(_elfutils_download_version 0.176) - - # If the user specified a version newer than _elfutils_download_version, use that version. - # NB: We know ElfUtils_MIN_VERSION is >= _min_version from earlier checks - if(${ElfUtils_MIN_VERSION} VERSION_GREATER ${_elfutils_download_version}) - set(_elfutils_download_version ${ElfUtils_MIN_VERSION}) - endif() - - message(STATUS "${ElfUtils_ERROR_REASON}") - message( STATUS "Attempting to build elfutils(${_elfutils_download_version}) as external project") - - if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR NOT (${CMAKE_C_COMPILER_ID} STREQUAL "GNU")) - message(FATAL_ERROR "ElfUtils will only build with the GNU compiler") - endif() - - include(ExternalProject) - externalproject_add( - ElfUtils - PREFIX ${CMAKE_BINARY_DIR}/elfutils - URL https://sourceware.org/elfutils/ftp/${_elfutils_download_version}/elfutils-${_elfutils_download_version}.tar.bz2 - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND - CFLAGS=-g - CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} - /configure - --enable-install-elfh - --prefix=${CMAKE_INSTALL_PREFIX} - --disable-debuginfod - BUILD_COMMAND make install - INSTALL_COMMAND "" - ) - - set(_eu_root ${CMAKE_INSTALL_PREFIX}) - set(_eu_inc_dirs ${CMAKE_INSTALL_PREFIX}/include - ${CMAKE_INSTALL_PREFIX}/include/elfutils) - set(_eu_lib_dirs ${CMAKE_INSTALL_PREFIX}/lib - ${CMAKE_INSTALL_PREFIX}/lib/elfutils) - set(_eu_libs ${_eu_root}/lib/libelf.so ${_eu_root}/lib/libdw.so) + # If we didn't find a suitable version on the system, then download one from the web + # NB: When building from source, we need at least elfutils-0.176 in order to use the + # --enable-install-elf option + set(_elfutils_download_version 0.176) + + # If the user specified a version newer than _elfutils_download_version, use that + # version. NB: We know ElfUtils_MIN_VERSION is >= _min_version from earlier checks + if(${ElfUtils_MIN_VERSION} VERSION_GREATER ${_elfutils_download_version}) + set(_elfutils_download_version ${ElfUtils_MIN_VERSION}) + endif() + + message(STATUS "${ElfUtils_ERROR_REASON}") + message( + STATUS + "Attempting to build elfutils(${_elfutils_download_version}) as external project" + ) + + if(NOT (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU") OR NOT (${CMAKE_C_COMPILER_ID} + STREQUAL "GNU")) + message(FATAL_ERROR "ElfUtils will only build with the GNU compiler") + endif() + + include(ExternalProject) + externalproject_add( + ElfUtils + PREFIX ${CMAKE_BINARY_DIR}/elfutils + URL https://sourceware.org/elfutils/ftp/${_elfutils_download_version}/elfutils-${_elfutils_download_version}.tar.bz2 + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND + CFLAGS=-g CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} + /configure --enable-install-elfh --prefix=${CMAKE_INSTALL_PREFIX} + --disable-debuginfod + BUILD_COMMAND make install + INSTALL_COMMAND "") + + set(_eu_root ${CMAKE_INSTALL_PREFIX}) + set(_eu_inc_dirs ${CMAKE_INSTALL_PREFIX}/include + ${CMAKE_INSTALL_PREFIX}/include/elfutils) + set(_eu_lib_dirs ${CMAKE_INSTALL_PREFIX}/lib ${CMAKE_INSTALL_PREFIX}/lib/elfutils) + set(_eu_libs ${_eu_root}/lib/libelf.so ${_eu_root}/lib/libdw.so) endif() # -------------- EXPORT VARIABLES --------------------------------------------- -set(ElfUtils_ROOT_DIR ${_eu_root} - CACHE PATH "Base directory the of elfutils installation" - FORCE) -set(ElfUtils_INCLUDE_DIRS ${_eu_inc_dirs} - CACHE PATH "elfutils include directory" - FORCE) -set(ElfUtils_LIBRARY_DIRS ${_eu_lib_dirs} - CACHE PATH "elfutils library directory" - FORCE) -set(ElfUtils_INCLUDE_DIR ${ElfUtils_INCLUDE_DIRS} - CACHE PATH "elfutils include directory" - FORCE) -set(ElfUtils_LIBRARIES ${_eu_libs} - CACHE FILEPATH "elfutils library files" - FORCE) +set(ElfUtils_ROOT_DIR + ${_eu_root} + CACHE PATH "Base directory the of elfutils installation" FORCE) +set(ElfUtils_INCLUDE_DIRS + ${_eu_inc_dirs} + CACHE PATH "elfutils include directory" FORCE) +set(ElfUtils_LIBRARY_DIRS + ${_eu_lib_dirs} + CACHE PATH "elfutils library directory" FORCE) +set(ElfUtils_INCLUDE_DIR + ${ElfUtils_INCLUDE_DIRS} + CACHE PATH "elfutils include directory" FORCE) +set(ElfUtils_LIBRARIES + ${_eu_libs} + CACHE FILEPATH "elfutils library files" FORCE) link_directories(${ElfUtils_LIBRARY_DIRS}) include_directories(${ElfUtils_INCLUDE_DIRS}) diff --git a/cmake/LanguageStandards.cmake b/cmake/LanguageStandards.cmake index 6d16fae3a4..66fece8784 100644 --- a/cmake/LanguageStandards.cmake +++ b/cmake/LanguageStandards.cmake @@ -9,8 +9,12 @@ # C/C++ language standard cmake options. # -set(DYNINST_CXX_LANGUAGE_STANDARD "11" CACHE STRING "C++ language standard version.") -set(DYNINST_C_LANGUAGE_STANDARD "11" CACHE STRING "C language standard version.") +set(DYNINST_CXX_LANGUAGE_STANDARD + "11" + CACHE STRING "C++ language standard version.") +set(DYNINST_C_LANGUAGE_STANDARD + "11" + CACHE STRING "C language standard version.") # # -------- C++ language features ---------------- @@ -26,12 +30,11 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) # Require the standards-compliant C++11 ABI for gcc if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0") - message(FATAL_ERROR "Dyninst requires gcc >= 6.0") - endif() + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6.0") + message(FATAL_ERROR "Dyninst requires gcc >= 6.0") + endif() endif() - # # -------- C language features ---------------- # diff --git a/cmake/LibIberty.cmake b/cmake/LibIberty.cmake index 1d2ff1c537..02ed6fb18b 100644 --- a/cmake/LibIberty.cmake +++ b/cmake/LibIberty.cmake @@ -22,46 +22,48 @@ #====================================================================================== if(LibIberty_FOUND) - return() + return() endif() if(NOT UNIX) - return() + return() endif() # -------------- PATHS -------------------------------------------------------- # Base directory the of LibIberty installation -set(LibIberty_ROOT_DIR "/usr" +set(LibIberty_ROOT_DIR + "/usr" CACHE PATH "Base directory the of LibIberty installation") # Hint directory that contains the LibIberty library files -set(LibIberty_LIBRARYDIR "${LibIberty_ROOT_DIR}/lib" +set(LibIberty_LIBRARYDIR + "${LibIberty_ROOT_DIR}/lib" CACHE PATH "Hint directory that contains the LibIberty library files") # -------------- PACKAGES ----------------------------------------------------- find_package(LibIberty REQUIRED) - # -------------- EXPORT VARIABLES --------------------------------------------- add_library(LibIberty STATIC IMPORTED GLOBAL) set_target_properties(LibIberty PROPERTIES IMPORTED_LOCATION ${LibIberty_LIBRARIES}) -set_target_properties(LibIberty PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${LibIberty_INCLUDE_DIRS}) +set_target_properties(LibIberty PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + ${LibIberty_INCLUDE_DIRS}) -set(LibIberty_ROOT_DIR ${LibIberty_ROOT_DIR} - CACHE PATH "Base directory the of LibIberty installation" - FORCE) -set(LibIberty_INCLUDE_DIRS ${LibIberty_INCLUDE_DIRS} - CACHE PATH "LibIberty include directories" - FORCE) -set(LibIberty_LIBRARY_DIRS ${LibIberty_LIBRARY_DIRS} - CACHE PATH "LibIberty library directory" - FORCE) -set(LibIberty_LIBRARIES ${LibIberty_LIBRARIES} - CACHE FILEPATH "LibIberty library files" - FORCE) +set(LibIberty_ROOT_DIR + ${LibIberty_ROOT_DIR} + CACHE PATH "Base directory the of LibIberty installation" FORCE) +set(LibIberty_INCLUDE_DIRS + ${LibIberty_INCLUDE_DIRS} + CACHE PATH "LibIberty include directories" FORCE) +set(LibIberty_LIBRARY_DIRS + ${LibIberty_LIBRARY_DIRS} + CACHE PATH "LibIberty library directory" FORCE) +set(LibIberty_LIBRARIES + ${LibIberty_LIBRARIES} + CACHE FILEPATH "LibIberty library files" FORCE) # For backward compatibility only set(IBERTY_LIBRARIES ${LibIberty_LIBRARIES}) diff --git a/cmake/Modules/DyninstSystemPaths.cmake b/cmake/Modules/DyninstSystemPaths.cmake index ebabc6451d..6046632817 100644 --- a/cmake/Modules/DyninstSystemPaths.cmake +++ b/cmake/Modules/DyninstSystemPaths.cmake @@ -5,8 +5,10 @@ set(DYNINST_SYSTEM_INCLUDE_PATHS /opt/include /opt/local/include /sw/include - ENV CPATH - ENV PATH) + ENV + CPATH + ENV + PATH) set(DYNINST_SYSTEM_LIBRARY_PATHS /usr/lib @@ -17,6 +19,9 @@ set(DYNINST_SYSTEM_LIBRARY_PATHS /opt/local/lib /opt/local/lib64 /sw/lib - ENV LIBRARY_PATH - ENV LD_LIBRARY_PATH - ENV PATH) + ENV + LIBRARY_PATH + ENV + LD_LIBRARY_PATH + ENV + PATH) diff --git a/cmake/Modules/FindBoost.cmake b/cmake/Modules/FindBoost.cmake index 77c4bb9591..b3115e1dba 100644 --- a/cmake/Modules/FindBoost.cmake +++ b/cmake/Modules/FindBoost.cmake @@ -242,46 +242,45 @@ cmake_policy(PUSH) cmake_policy(SET CMP0057 NEW) # if IN_LIST -#------------------------------------------------------------------------------- -# Before we go searching, check whether boost-cmake is available, unless the -# user specifically asked NOT to search for boost-cmake. +# ------------------------------------------------------------------------------- +# Before we go searching, check whether boost-cmake is available, unless the user +# specifically asked NOT to search for boost-cmake. # -# If Boost_DIR is set, this behaves as any find_package call would. If not, -# it looks at BOOST_ROOT and BOOSTROOT to find Boost. +# If Boost_DIR is set, this behaves as any find_package call would. If not, it looks at +# BOOST_ROOT and BOOSTROOT to find Boost. # -if (NOT Boost_NO_BOOST_CMAKE) - # If Boost_DIR is not set, look for BOOSTROOT and BOOST_ROOT as alternatives, - # since these are more conventional for Boost. - if ("$ENV{Boost_DIR}" STREQUAL "") - if (NOT "$ENV{BOOST_ROOT}" STREQUAL "") - set(ENV{Boost_DIR} $ENV{BOOST_ROOT}) - elseif (NOT "$ENV{BOOSTROOT}" STREQUAL "") - set(ENV{Boost_DIR} $ENV{BOOSTROOT}) - endif() - endif() - - # Do the same find_package call but look specifically for the CMake version. - # Note that args are passed in the Boost_FIND_xxxxx variables, so there is no - # need to delegate them to this find_package call. - find_package(Boost QUIET NO_MODULE) - mark_as_advanced(Boost_DIR) - - # If we found boost-cmake, then we're done. Print out what we found. - # Otherwise let the rest of the module try to find it. - if (Boost_FOUND) - message(STATUS "Boost ${Boost_FIND_VERSION} found.") - if (Boost_FIND_COMPONENTS) - message(STATUS "Found Boost components:\n ${Boost_FIND_COMPONENTS}") - endif() - # Restore project's policies - cmake_policy(POP) - return() - endif() -endif() +if(NOT Boost_NO_BOOST_CMAKE) + # If Boost_DIR is not set, look for BOOSTROOT and BOOST_ROOT as alternatives, since + # these are more conventional for Boost. + if("$ENV{Boost_DIR}" STREQUAL "") + if(NOT "$ENV{BOOST_ROOT}" STREQUAL "") + set(ENV{Boost_DIR} $ENV{BOOST_ROOT}) + elseif(NOT "$ENV{BOOSTROOT}" STREQUAL "") + set(ENV{Boost_DIR} $ENV{BOOSTROOT}) + endif() + endif() + # Do the same find_package call but look specifically for the CMake version. Note that + # args are passed in the Boost_FIND_xxxxx variables, so there is no need to delegate + # them to this find_package call. + find_package(Boost QUIET NO_MODULE) + mark_as_advanced(Boost_DIR) + + # If we found boost-cmake, then we're done. Print out what we found. Otherwise let + # the rest of the module try to find it. + if(Boost_FOUND) + message(STATUS "Boost ${Boost_FIND_VERSION} found.") + if(Boost_FIND_COMPONENTS) + message(STATUS "Found Boost components:\n ${Boost_FIND_COMPONENTS}") + endif() + # Restore project's policies + cmake_policy(POP) + return() + endif() +endif() -#------------------------------------------------------------------------------- -# FindBoost functions & macros +# ------------------------------------------------------------------------------- +# FindBoost functions & macros # ############################################ @@ -297,1890 +296,2461 @@ endif() ######################################################################### macro(_Boost_ADJUST_LIB_VARS basename) - if(Boost_INCLUDE_DIR ) - if(Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE) - # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for - # single-config generators, set optimized and debug libraries - get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) - if(_isMultiConfig OR CMAKE_BUILD_TYPE) - set(Boost_${basename}_LIBRARY optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG}) - else() - # For single-config generators where CMAKE_BUILD_TYPE has no value, - # just use the release libraries - set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE} ) - endif() - # FIXME: This probably should be set for both cases - set(Boost_${basename}_LIBRARIES optimized ${Boost_${basename}_LIBRARY_RELEASE} debug ${Boost_${basename}_LIBRARY_DEBUG}) - endif() - - # if only the release version was found, set the debug variable also to the release version - if(Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG) - set(Boost_${basename}_LIBRARY_DEBUG ${Boost_${basename}_LIBRARY_RELEASE}) - set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE}) - set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE}) - endif() - - # if only the debug version was found, set the release variable also to the debug version - if(Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE) - set(Boost_${basename}_LIBRARY_RELEASE ${Boost_${basename}_LIBRARY_DEBUG}) - set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_DEBUG}) - set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_DEBUG}) - endif() - - # If the debug & release library ends up being the same, omit the keywords - if("${Boost_${basename}_LIBRARY_RELEASE}" STREQUAL "${Boost_${basename}_LIBRARY_DEBUG}") - set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE} ) - set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE} ) - endif() - - if(Boost_${basename}_LIBRARY AND Boost_${basename}_HEADER) - set(Boost_${basename}_FOUND ON) - if("x${basename}" STREQUAL "xTHREAD" AND NOT TARGET Threads::Threads) - string(APPEND Boost_ERROR_REASON_THREAD " (missing dependency: Threads)") - set(Boost_THREAD_FOUND OFF) - endif() - endif() - - endif() - # Make variables changeable to the advanced user - mark_as_advanced( - Boost_${basename}_LIBRARY_RELEASE - Boost_${basename}_LIBRARY_DEBUG - ) + if(Boost_INCLUDE_DIR) + if(Boost_${basename}_LIBRARY_DEBUG AND Boost_${basename}_LIBRARY_RELEASE) + # if the generator is multi-config or if CMAKE_BUILD_TYPE is set for + # single-config generators, set optimized and debug libraries + get_property(_isMultiConfig GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) + if(_isMultiConfig OR CMAKE_BUILD_TYPE) + set(Boost_${basename}_LIBRARY + optimized ${Boost_${basename}_LIBRARY_RELEASE} debug + ${Boost_${basename}_LIBRARY_DEBUG}) + else() + # For single-config generators where CMAKE_BUILD_TYPE has no value, just + # use the release libraries + set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE}) + endif() + # FIXME: This probably should be set for both cases + set(Boost_${basename}_LIBRARIES + optimized ${Boost_${basename}_LIBRARY_RELEASE} debug + ${Boost_${basename}_LIBRARY_DEBUG}) + endif() + + # if only the release version was found, set the debug variable also to the + # release version + if(Boost_${basename}_LIBRARY_RELEASE AND NOT Boost_${basename}_LIBRARY_DEBUG) + set(Boost_${basename}_LIBRARY_DEBUG ${Boost_${basename}_LIBRARY_RELEASE}) + set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE}) + set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE}) + endif() + + # if only the debug version was found, set the release variable also to the debug + # version + if(Boost_${basename}_LIBRARY_DEBUG AND NOT Boost_${basename}_LIBRARY_RELEASE) + set(Boost_${basename}_LIBRARY_RELEASE ${Boost_${basename}_LIBRARY_DEBUG}) + set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_DEBUG}) + set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_DEBUG}) + endif() + + # If the debug & release library ends up being the same, omit the keywords + if("${Boost_${basename}_LIBRARY_RELEASE}" STREQUAL + "${Boost_${basename}_LIBRARY_DEBUG}") + set(Boost_${basename}_LIBRARY ${Boost_${basename}_LIBRARY_RELEASE}) + set(Boost_${basename}_LIBRARIES ${Boost_${basename}_LIBRARY_RELEASE}) + endif() + + if(Boost_${basename}_LIBRARY AND Boost_${basename}_HEADER) + set(Boost_${basename}_FOUND ON) + if("x${basename}" STREQUAL "xTHREAD" AND NOT TARGET Threads::Threads) + string(APPEND Boost_ERROR_REASON_THREAD " (missing dependency: Threads)") + set(Boost_THREAD_FOUND OFF) + endif() + endif() + + endif() + # Make variables changeable to the advanced user + mark_as_advanced(Boost_${basename}_LIBRARY_RELEASE Boost_${basename}_LIBRARY_DEBUG) endmacro() -# Detect changes in used variables. -# Compares the current variable value with the last one. -# In short form: -# v != v_LAST -> CHANGED = 1 -# v is defined, v_LAST not -> CHANGED = 1 -# v is not defined, but v_LAST is -> CHANGED = 1 -# otherwise -> CHANGED = 0 +# Detect changes in used variables. Compares the current variable value with the last one. +# In short form: v != v_LAST -> CHANGED = 1 v is defined, v_LAST not +# -> CHANGED = 1 v is not defined, but v_LAST is -> CHANGED = 1 otherwise -> CHANGED = 0 # CHANGED is returned in variable named ${changed_var} macro(_Boost_CHANGE_DETECT changed_var) - set(${changed_var} 0) - foreach(v ${ARGN}) - if(DEFINED _Boost_COMPONENTS_SEARCHED) - if(${v}) - if(_${v}_LAST) - string(COMPARE NOTEQUAL "${${v}}" "${_${v}_LAST}" _${v}_CHANGED) + set(${changed_var} 0) + foreach(v ${ARGN}) + if(DEFINED _Boost_COMPONENTS_SEARCHED) + if(${v}) + if(_${v}_LAST) + string(COMPARE NOTEQUAL "${${v}}" "${_${v}_LAST}" _${v}_CHANGED) + else() + set(_${v}_CHANGED 1) + endif() + elseif(_${v}_LAST) + set(_${v}_CHANGED 1) + endif() + if(_${v}_CHANGED) + set(${changed_var} 1) + endif() else() - set(_${v}_CHANGED 1) + set(_${v}_CHANGED 0) endif() - elseif(_${v}_LAST) - set(_${v}_CHANGED 1) - endif() - if(_${v}_CHANGED) - set(${changed_var} 1) - endif() - else() - set(_${v}_CHANGED 0) - endif() - endforeach() + endforeach() endmacro() # -# Find the given library (var). -# Use 'build_type' to support different lib paths for RELEASE or DEBUG builds +# Find the given library (var). Use 'build_type' to support different lib paths for +# RELEASE or DEBUG builds # macro(_Boost_FIND_LIBRARY var build_type) - find_library(${var} ${ARGN}) + find_library(${var} ${ARGN}) - if(${var}) - # If this is the first library found then save Boost_LIBRARY_DIR_[RELEASE,DEBUG]. - if(NOT Boost_LIBRARY_DIR_${build_type}) - get_filename_component(_dir "${${var}}" PATH) - set(Boost_LIBRARY_DIR_${build_type} "${_dir}" CACHE PATH "Boost library directory ${build_type}" FORCE) + if(${var}) + # If this is the first library found then save Boost_LIBRARY_DIR_[RELEASE,DEBUG]. + if(NOT Boost_LIBRARY_DIR_${build_type}) + get_filename_component(_dir "${${var}}" PATH) + set(Boost_LIBRARY_DIR_${build_type} + "${_dir}" + CACHE PATH "Boost library directory ${build_type}" FORCE) + endif() + elseif(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT) + # Try component-specific hints but do not save Boost_LIBRARY_DIR_[RELEASE,DEBUG]. + find_library(${var} HINTS ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT} ${ARGN}) endif() - elseif(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT) - # Try component-specific hints but do not save Boost_LIBRARY_DIR_[RELEASE,DEBUG]. - find_library(${var} HINTS ${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT} ${ARGN}) - endif() - # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is known then search only there. - if(Boost_LIBRARY_DIR_${build_type}) - set(_boost_LIBRARY_SEARCH_DIRS_${build_type} ${Boost_LIBRARY_DIR_${build_type}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - " Boost_LIBRARY_DIR_${build_type} = ${Boost_LIBRARY_DIR_${build_type}}" - " _boost_LIBRARY_SEARCH_DIRS_${build_type} = ${_boost_LIBRARY_SEARCH_DIRS_${build_type}}") + # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is known then search only there. + if(Boost_LIBRARY_DIR_${build_type}) + set(_boost_LIBRARY_SEARCH_DIRS_${build_type} + ${Boost_LIBRARY_DIR_${build_type}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) + if(Boost_DEBUG) + message( + STATUS + "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + " Boost_LIBRARY_DIR_${build_type} = ${Boost_LIBRARY_DIR_${build_type}}" + " _boost_LIBRARY_SEARCH_DIRS_${build_type} = ${_boost_LIBRARY_SEARCH_DIRS_${build_type}}" + ) + endif() endif() - endif() endmacro() -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------- # Convert CMAKE_CXX_COMPILER_VERSION to boost compiler suffix version. -function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION _OUTPUT_VERSION_MAJOR _OUTPUT_VERSION_MINOR) - string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\1" - _boost_COMPILER_VERSION_MAJOR "${CMAKE_CXX_COMPILER_VERSION}") - string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\2" - _boost_COMPILER_VERSION_MINOR "${CMAKE_CXX_COMPILER_VERSION}") - - set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}${_boost_COMPILER_VERSION_MINOR}") - - set(${_OUTPUT_VERSION} ${_boost_COMPILER_VERSION} PARENT_SCOPE) - set(${_OUTPUT_VERSION_MAJOR} ${_boost_COMPILER_VERSION_MAJOR} PARENT_SCOPE) - set(${_OUTPUT_VERSION_MINOR} ${_boost_COMPILER_VERSION_MINOR} PARENT_SCOPE) +function(_Boost_COMPILER_DUMPVERSION _OUTPUT_VERSION _OUTPUT_VERSION_MAJOR + _OUTPUT_VERSION_MINOR) + string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\1" + _boost_COMPILER_VERSION_MAJOR "${CMAKE_CXX_COMPILER_VERSION}") + string(REGEX REPLACE "([0-9]+)\\.([0-9]+)(\\.[0-9]+)?" "\\2" + _boost_COMPILER_VERSION_MINOR "${CMAKE_CXX_COMPILER_VERSION}") + + set(_boost_COMPILER_VERSION + "${_boost_COMPILER_VERSION_MAJOR}${_boost_COMPILER_VERSION_MINOR}") + + set(${_OUTPUT_VERSION} + ${_boost_COMPILER_VERSION} + PARENT_SCOPE) + set(${_OUTPUT_VERSION_MAJOR} + ${_boost_COMPILER_VERSION_MAJOR} + PARENT_SCOPE) + set(${_OUTPUT_VERSION_MINOR} + ${_boost_COMPILER_VERSION_MINOR} + PARENT_SCOPE) endfunction() # -# Take a list of libraries with "thread" in it -# and prepend duplicates with "thread_${Boost_THREADAPI}" -# at the front of the list +# Take a list of libraries with "thread" in it and prepend duplicates with +# "thread_${Boost_THREADAPI}" at the front of the list # function(_Boost_PREPEND_LIST_WITH_THREADAPI _output) - set(_orig_libnames ${ARGN}) - string(REPLACE "thread" "thread_${Boost_THREADAPI}" _threadapi_libnames "${_orig_libnames}") - set(${_output} ${_threadapi_libnames} ${_orig_libnames} PARENT_SCOPE) + set(_orig_libnames ${ARGN}) + string(REPLACE "thread" "thread_${Boost_THREADAPI}" _threadapi_libnames + "${_orig_libnames}") + set(${_output} + ${_threadapi_libnames} ${_orig_libnames} + PARENT_SCOPE) endfunction() # # If a library is found, replace its cache entry with its REALPATH # function(_Boost_SWAP_WITH_REALPATH _library _docstring) - if(${_library}) - get_filename_component(_boost_filepathreal ${${_library}} REALPATH) - unset(${_library} CACHE) - set(${_library} ${_boost_filepathreal} CACHE FILEPATH "${_docstring}") - endif() + if(${_library}) + get_filename_component(_boost_filepathreal ${${_library}} REALPATH) + unset(${_library} CACHE) + set(${_library} + ${_boost_filepathreal} + CACHE FILEPATH "${_docstring}") + endif() endfunction() function(_Boost_CHECK_SPELLING _var) - if(${_var}) - string(TOUPPER ${_var} _var_UC) - message(FATAL_ERROR "ERROR: ${_var} is not the correct spelling. The proper spelling is ${_var_UC}.") - endif() + if(${_var}) + string(TOUPPER ${_var} _var_UC) + message( + FATAL_ERROR + "ERROR: ${_var} is not the correct spelling. The proper spelling is ${_var_UC}." + ) + endif() endfunction() -# Guesses Boost's compiler prefix used in built library names -# Returns the guess by setting the variable pointed to by _ret +# Guesses Boost's compiler prefix used in built library names Returns the guess by setting +# the variable pointed to by _ret function(_Boost_GUESS_COMPILER_PREFIX _ret) - if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel") - if(WIN32) - set (_boost_COMPILER "-iw") - else() - set (_boost_COMPILER "-il") - endif() - elseif (GHSMULTI) - set(_boost_COMPILER "-ghs") - elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") - if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141) - set(_boost_COMPILER "-vc141;-vc140") - elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80) - set(_boost_COMPILER "-vc${MSVC_TOOLSET_VERSION}") - elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.10) - set(_boost_COMPILER "-vc71") - elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) # Good luck! - set(_boost_COMPILER "-vc7") # yes, this is correct - else() # VS 6.0 Good luck! - set(_boost_COMPILER "-vc6") # yes, this is correct - endif() - elseif (BORLAND) - set(_boost_COMPILER "-bcb") - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") - set(_boost_COMPILER "-sw") - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "XL") - set(_boost_COMPILER "-xlc") - elseif (MINGW) - if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34) - set(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34 - else() - _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR) - set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}") - endif() - elseif (UNIX) - _Boost_COMPILER_DUMPVERSION(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR _boost_COMPILER_VERSION_MINOR) - if(NOT Boost_VERSION VERSION_LESS 106900) - # From GCC 5 and clang 4, versioning changes and minor becomes patch. - # For those compilers, patch is exclude from compiler tag in Boost 1.69+ library naming. - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 4) - set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}") - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 3) - set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}") - endif() - endif() - - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34) - set(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34 - else() - # Determine which version of GCC we have. - if(APPLE) - if(Boost_MINOR_VERSION) - if(${Boost_MINOR_VERSION} GREATER 35) - # In Boost 1.36.0 and newer, the mangled compiler name used - # on macOS/Darwin is "xgcc". - set(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}") + if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel") + if(WIN32) + set(_boost_COMPILER "-iw") + else() + set(_boost_COMPILER "-il") + endif() + elseif(GHSMULTI) + set(_boost_COMPILER "-ghs") + elseif("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") + if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141) + set(_boost_COMPILER "-vc141;-vc140") + elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80) + set(_boost_COMPILER "-vc${MSVC_TOOLSET_VERSION}") + elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13.10) + set(_boost_COMPILER "-vc71") + elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 13) # Good luck! + set(_boost_COMPILER "-vc7") # yes, this is correct + else() # VS 6.0 Good luck! + set(_boost_COMPILER "-vc6") # yes, this is correct + endif() + elseif(BORLAND) + set(_boost_COMPILER "-bcb") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "SunPro") + set(_boost_COMPILER "-sw") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "XL") + set(_boost_COMPILER "-xlc") + elseif(MINGW) + if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34) + set(_boost_COMPILER "-mgw") # no GCC version encoding prior to 1.34 + else() + _boost_compiler_dumpversion( + _boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR + _boost_COMPILER_VERSION_MINOR) + set(_boost_COMPILER "-mgw${_boost_COMPILER_VERSION}") + endif() + elseif(UNIX) + _boost_compiler_dumpversion(_boost_COMPILER_VERSION _boost_COMPILER_VERSION_MAJOR + _boost_COMPILER_VERSION_MINOR) + if(NOT Boost_VERSION VERSION_LESS 106900) + # From GCC 5 and clang 4, versioning changes and minor becomes patch. For + # those compilers, patch is exclude from compiler tag in Boost 1.69+ library + # naming. + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND _boost_COMPILER_VERSION_MAJOR + VERSION_GREATER 4) + set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" + AND _boost_COMPILER_VERSION_MAJOR VERSION_GREATER 3) + set(_boost_COMPILER_VERSION "${_boost_COMPILER_VERSION_MAJOR}") + endif() + endif() + + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION} VERSION_LESS 1.34) + set(_boost_COMPILER "-gcc") # no GCC version encoding prior to 1.34 else() - # In Boost <= 1.35.0, there is no mangled compiler name for - # the macOS/Darwin version of GCC. - set(_boost_COMPILER "") + # Determine which version of GCC we have. + if(APPLE) + if(Boost_MINOR_VERSION) + if(${Boost_MINOR_VERSION} GREATER 35) + # In Boost 1.36.0 and newer, the mangled compiler name used on + # macOS/Darwin is "xgcc". + set(_boost_COMPILER "-xgcc${_boost_COMPILER_VERSION}") + else() + # In Boost <= 1.35.0, there is no mangled compiler name for + # the macOS/Darwin version of GCC. + set(_boost_COMPILER "") + endif() + else() + # We don't know the Boost version, so assume it's pre-1.36.0. + set(_boost_COMPILER "") + endif() + else() + set(_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}") + endif() endif() - else() - # We don't know the Boost version, so assume it's - # pre-1.36.0. - set(_boost_COMPILER "") - endif() - else() - set(_boost_COMPILER "-gcc${_boost_COMPILER_VERSION}") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + # TODO: Find out any Boost version constraints vs clang support. + set(_boost_COMPILER "-clang${_boost_COMPILER_VERSION}") endif() - endif() - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - # TODO: Find out any Boost version constraints vs clang support. - set(_boost_COMPILER "-clang${_boost_COMPILER_VERSION}") - endif() - else() - # TODO at least Boost_DEBUG here? - set(_boost_COMPILER "") - endif() - set(${_ret} ${_boost_COMPILER} PARENT_SCOPE) + else() + # TODO at least Boost_DEBUG here? + set(_boost_COMPILER "") + endif() + set(${_ret} + ${_boost_COMPILER} + PARENT_SCOPE) endfunction() # -# Get component dependencies. Requires the dependencies to have been -# defined for the Boost release version. +# Get component dependencies. Requires the dependencies to have been defined for the +# Boost release version. # -# component - the component to check -# _ret - list of library dependencies +# component - the component to check _ret - list of library dependencies # function(_Boost_COMPONENT_DEPENDENCIES component _ret) - # Note: to add a new Boost release, run - # - # % cmake -DBOOST_DIR=/path/to/boost/source -P Utilities/Scripts/BoostScanDeps.cmake - # - # The output may be added in a new block below. If it's the same as - # the previous release, simply update the version range of the block - # for the previous release. Also check if any new components have - # been added, and add any new components to - # _Boost_COMPONENT_HEADERS. - # - # This information was originally generated by running - # BoostScanDeps.cmake against every boost release to date supported - # by FindBoost: - # - # % for version in /path/to/boost/sources/* - # do - # cmake -DBOOST_DIR=$version -P Utilities/Scripts/BoostScanDeps.cmake - # done - # - # The output was then updated by search and replace with these regexes: - # - # - Strip message(STATUS) prefix dashes - # s;^-- ;; - # - Indent - # s;^set(; set(;; - # - Add conditionals - # s;Scanning /path/to/boost/sources/boost_\(.*\)_\(.*\)_\(.*); elseif(NOT Boost_VERSION VERSION_LESS \10\20\3 AND Boost_VERSION VERSION_LESS xxxx); - # - # This results in the logic seen below, but will require the xxxx - # replacing with the following Boost release version (or the next - # minor version to be released, e.g. 1.59 was the latest at the time - # of writing, making 1.60 the next, so 106000 is the needed version - # number). Identical consecutive releases were then merged together - # by updating the end range of the first block and removing the - # following redundant blocks. - # - # Running the script against all historical releases should be - # required only if the BoostScanDeps.cmake script logic is changed. - # The addition of a new release should only require it to be run - # against the new release. - - # Handle Python version suffixes - if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$") - set(component "${CMAKE_MATCH_1}") - set(component_python_version "${CMAKE_MATCH_2}") - endif() - - set(_Boost_IMPORTED_TARGETS TRUE) - if(Boost_VERSION AND Boost_VERSION VERSION_LESS 103300) - message(WARNING "Imported targets and dependency information not available for Boost version ${Boost_VERSION} (all versions older than 1.33)") - set(_Boost_IMPORTED_TARGETS FALSE) - elseif(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500) - set(_Boost_IOSTREAMS_DEPENDENCIES regex thread) - set(_Boost_REGEX_DEPENDENCIES thread) - set(_Boost_WAVE_DEPENDENCIES filesystem thread) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 103500 AND Boost_VERSION VERSION_LESS 103600) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_WAVE_DEPENDENCIES filesystem system thread) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 103600 AND Boost_VERSION VERSION_LESS 103800) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_WAVE_DEPENDENCIES filesystem system thread) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 103800 AND Boost_VERSION VERSION_LESS 104300) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES date_time) - set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 104300 AND Boost_VERSION VERSION_LESS 104400) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES date_time) - set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 104400 AND Boost_VERSION VERSION_LESS 104500) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random serialization) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES date_time) - set(_Boost_WAVE_DEPENDENCIES serialization filesystem system thread date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 104500 AND Boost_VERSION VERSION_LESS 104700) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES date_time) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 104700 AND Boost_VERSION VERSION_LESS 104800) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES date_time) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 104800 AND Boost_VERSION VERSION_LESS 105000) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES date_time) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 105000 AND Boost_VERSION VERSION_LESS 105300) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 105300 AND Boost_VERSION VERSION_LESS 105400) - set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 105400 AND Boost_VERSION VERSION_LESS 105500) - set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 105500 AND Boost_VERSION VERSION_LESS 105600) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l regex random) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 105600 AND Boost_VERSION VERSION_LESS 105900) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 105900 AND Boost_VERSION VERSION_LESS 106000) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES log_setup date_time system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106000 AND Boost_VERSION VERSION_LESS 106100) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106100 AND Boost_VERSION VERSION_LESS 106200) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106200 AND Boost_VERSION VERSION_LESS 106300) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106300 AND Boost_VERSION VERSION_LESS 106500) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_COROUTINE2_DEPENDENCIES context fiber thread chrono system date_time) - set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106500 AND Boost_VERSION VERSION_LESS 106700) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106700 AND Boost_VERSION VERSION_LESS 106800) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106800 AND Boost_VERSION VERSION_LESS 106900) - set(_Boost_CHRONO_DEPENDENCIES system) - set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) - set(_Boost_CONTRACT_DEPENDENCIES thread chrono system date_time) - set(_Boost_COROUTINE_DEPENDENCIES context system) - set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) - set(_Boost_FILESYSTEM_DEPENDENCIES system) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup system filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) - set(_Boost_RANDOM_DEPENDENCIES system) - set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - elseif(NOT Boost_VERSION VERSION_LESS 106900 AND Boost_VERSION VERSION_LESS 107000) - set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time) - set(_Boost_COROUTINE_DEPENDENCIES context) - set(_Boost_FIBER_DEPENDENCIES context) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) - set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - else() - if(NOT Boost_VERSION VERSION_LESS 107000) - set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time) - set(_Boost_COROUTINE_DEPENDENCIES context) - set(_Boost_FIBER_DEPENDENCIES context) - set(_Boost_IOSTREAMS_DEPENDENCIES regex) - set(_Boost_LOG_DEPENDENCIES date_time log_setup filesystem thread regex chrono atomic) - set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f math_tr1l atomic) - set(_Boost_MPI_DEPENDENCIES serialization) - set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi serialization) - set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) - set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic) - set(_Boost_TIMER_DEPENDENCIES chrono system) - set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time atomic) - set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) - endif() - if(NOT Boost_VERSION VERSION_LESS 107100) - message(WARNING "New Boost version may have incorrect or missing dependencies and imported targets") - endif() - endif() - - string(TOUPPER ${component} uppercomponent) - set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE) - set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE) - - string(REGEX REPLACE ";" " " _boost_DEPS_STRING "${_Boost_${uppercomponent}_DEPENDENCIES}") - if (NOT _boost_DEPS_STRING) - set(_boost_DEPS_STRING "(none)") - endif() - # message(STATUS "Dependencies for Boost::${component}: ${_boost_DEPS_STRING}") + # Note: to add a new Boost release, run + # + # % cmake -DBOOST_DIR=/path/to/boost/source -P Utilities/Scripts/BoostScanDeps.cmake + # + # The output may be added in a new block below. If it's the same as the previous + # release, simply update the version range of the block for the previous release. Also + # check if any new components have been added, and add any new components to + # _Boost_COMPONENT_HEADERS. + # + # This information was originally generated by running BoostScanDeps.cmake against + # every boost release to date supported by FindBoost: + # + # % for version in /path/to/boost/sources/* do cmake -DBOOST_DIR=$version -P + # Utilities/Scripts/BoostScanDeps.cmake done + # + # The output was then updated by search and replace with these regexes: + # + # - Strip message(STATUS) prefix dashes s;^-- ;; + # - Indent s;^set(; set(;; + # - Add conditionals s;Scanning /path/to/boost/sources/boost_\(.*\)_\(.*\)_\(.*); + # elseif(NOT Boost_VERSION VERSION_LESS \10\20\3 AND Boost_VERSION VERSION_LESS + # xxxx); + # + # This results in the logic seen below, but will require the xxxx replacing with the + # following Boost release version (or the next minor version to be released, e.g. 1.59 + # was the latest at the time of writing, making 1.60 the next, so 106000 is the needed + # version number). Identical consecutive releases were then merged together by + # updating the end range of the first block and removing the following redundant + # blocks. + # + # Running the script against all historical releases should be required only if the + # BoostScanDeps.cmake script logic is changed. The addition of a new release should + # only require it to be run against the new release. + + # Handle Python version suffixes + if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$") + set(component "${CMAKE_MATCH_1}") + set(component_python_version "${CMAKE_MATCH_2}") + endif() + + set(_Boost_IMPORTED_TARGETS TRUE) + if(Boost_VERSION AND Boost_VERSION VERSION_LESS 103300) + message( + WARNING + "Imported targets and dependency information not available for Boost version ${Boost_VERSION} (all versions older than 1.33)" + ) + set(_Boost_IMPORTED_TARGETS FALSE) + elseif(NOT Boost_VERSION VERSION_LESS 103300 AND Boost_VERSION VERSION_LESS 103500) + set(_Boost_IOSTREAMS_DEPENDENCIES regex thread) + set(_Boost_REGEX_DEPENDENCIES thread) + set(_Boost_WAVE_DEPENDENCIES filesystem thread) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 103500 AND Boost_VERSION VERSION_LESS 103600) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_WAVE_DEPENDENCIES filesystem system thread) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 103600 AND Boost_VERSION VERSION_LESS 103800) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f + math_tr1l) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_WAVE_DEPENDENCIES filesystem system thread) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 103800 AND Boost_VERSION VERSION_LESS 104300) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES math_c99 math_c99f math_c99l math_tr1 math_tr1f + math_tr1l) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES date_time) + set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 104300 AND Boost_VERSION VERSION_LESS 104400) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES date_time) + set(_Boost_WAVE_DEPENDENCIES filesystem system thread date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 104400 AND Boost_VERSION VERSION_LESS 104500) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + random + serialization) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES date_time) + set(_Boost_WAVE_DEPENDENCIES serialization filesystem system thread date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 104500 AND Boost_VERSION VERSION_LESS 104700) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES date_time) + set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 104700 AND Boost_VERSION VERSION_LESS 104800) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES date_time) + set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 104800 AND Boost_VERSION VERSION_LESS 105000) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES date_time) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 105000 AND Boost_VERSION VERSION_LESS 105300) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + regex + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono + date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 105300 AND Boost_VERSION VERSION_LESS 105400) + set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + regex + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES filesystem system serialization thread chrono + date_time) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 105400 AND Boost_VERSION VERSION_LESS 105500) + set(_Boost_ATOMIC_DEPENDENCIES thread chrono system date_time) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + log_setup + date_time + system + filesystem + thread + regex + chrono) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + regex + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 105500 AND Boost_VERSION VERSION_LESS 105600) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + log_setup + date_time + system + filesystem + thread + regex + chrono) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + regex + random) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 105600 AND Boost_VERSION VERSION_LESS 105900) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + log_setup + date_time + system + filesystem + thread + regex + chrono) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 105900 AND Boost_VERSION VERSION_LESS 106000) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + log_setup + date_time + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106000 AND Boost_VERSION VERSION_LESS 106100) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106100 AND Boost_VERSION VERSION_LESS 106200) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106200 AND Boost_VERSION VERSION_LESS 106300) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106300 AND Boost_VERSION VERSION_LESS 106500) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_COROUTINE2_DEPENDENCIES context fiber thread chrono system date_time) + set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106500 AND Boost_VERSION VERSION_LESS 106700) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106700 AND Boost_VERSION VERSION_LESS 106800) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106800 AND Boost_VERSION VERSION_LESS 106900) + set(_Boost_CHRONO_DEPENDENCIES system) + set(_Boost_CONTEXT_DEPENDENCIES thread chrono system date_time) + set(_Boost_CONTRACT_DEPENDENCIES thread chrono system date_time) + set(_Boost_COROUTINE_DEPENDENCIES context system) + set(_Boost_FIBER_DEPENDENCIES context thread chrono system date_time) + set(_Boost_FILESYSTEM_DEPENDENCIES system) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + system + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) + set(_Boost_RANDOM_DEPENDENCIES system) + set(_Boost_THREAD_DEPENDENCIES chrono system date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES + filesystem + system + serialization + thread + chrono + date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + elseif(NOT Boost_VERSION VERSION_LESS 106900 AND Boost_VERSION VERSION_LESS 107000) + set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time) + set(_Boost_COROUTINE_DEPENDENCIES context) + set(_Boost_FIBER_DEPENDENCIES context) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) + set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + else() + if(NOT Boost_VERSION VERSION_LESS 107000) + set(_Boost_CONTRACT_DEPENDENCIES thread chrono date_time) + set(_Boost_COROUTINE_DEPENDENCIES context) + set(_Boost_FIBER_DEPENDENCIES context) + set(_Boost_IOSTREAMS_DEPENDENCIES regex) + set(_Boost_LOG_DEPENDENCIES + date_time + log_setup + filesystem + thread + regex + chrono + atomic) + set(_Boost_MATH_DEPENDENCIES + math_c99 + math_c99f + math_c99l + math_tr1 + math_tr1f + math_tr1l + atomic) + set(_Boost_MPI_DEPENDENCIES serialization) + set(_Boost_MPI_PYTHON_DEPENDENCIES python${component_python_version} mpi + serialization) + set(_Boost_NUMPY_DEPENDENCIES python${component_python_version}) + set(_Boost_THREAD_DEPENDENCIES chrono date_time atomic) + set(_Boost_TIMER_DEPENDENCIES chrono system) + set(_Boost_WAVE_DEPENDENCIES filesystem serialization thread chrono date_time + atomic) + set(_Boost_WSERIALIZATION_DEPENDENCIES serialization) + endif() + if(NOT Boost_VERSION VERSION_LESS 107100) + message( + WARNING + "New Boost version may have incorrect or missing dependencies and imported targets" + ) + endif() + endif() + + string(TOUPPER ${component} uppercomponent) + set(${_ret} + ${_Boost_${uppercomponent}_DEPENDENCIES} + PARENT_SCOPE) + set(_Boost_IMPORTED_TARGETS + ${_Boost_IMPORTED_TARGETS} + PARENT_SCOPE) + + string(REGEX REPLACE ";" " " _boost_DEPS_STRING + "${_Boost_${uppercomponent}_DEPENDENCIES}") + if(NOT _boost_DEPS_STRING) + set(_boost_DEPS_STRING "(none)") + endif() + # message(STATUS "Dependencies for Boost::${component}: ${_boost_DEPS_STRING}") endfunction() # -# Get component headers. This is the primary header (or headers) for -# a given component, and is used to check that the headers are present -# as well as the library itself as an extra sanity check of the build -# environment. +# Get component headers. This is the primary header (or headers) for a given component, +# and is used to check that the headers are present as well as the library itself as an +# extra sanity check of the build environment. # -# component - the component to check -# _hdrs +# component - the component to check _hdrs # function(_Boost_COMPONENT_HEADERS component _hdrs) - # Handle Python version suffixes - if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$") - set(component "${CMAKE_MATCH_1}") - set(component_python_version "${CMAKE_MATCH_2}") - endif() - - # Note: new boost components will require adding here. The header - # must be present in all versions of Boost providing a library. - set(_Boost_ATOMIC_HEADERS "boost/atomic.hpp") - set(_Boost_CHRONO_HEADERS "boost/chrono.hpp") - set(_Boost_CONTAINER_HEADERS "boost/container/container_fwd.hpp") - set(_Boost_CONTRACT_HEADERS "boost/contract.hpp") - if(Boost_VERSION VERSION_LESS 106100) - set(_Boost_CONTEXT_HEADERS "boost/context/all.hpp") - else() - set(_Boost_CONTEXT_HEADERS "boost/context/detail/fcontext.hpp") - endif() - set(_Boost_COROUTINE_HEADERS "boost/coroutine/all.hpp") - set(_Boost_DATE_TIME_HEADERS "boost/date_time/date.hpp") - set(_Boost_EXCEPTION_HEADERS "boost/exception/exception.hpp") - set(_Boost_FIBER_HEADERS "boost/fiber/all.hpp") - set(_Boost_FILESYSTEM_HEADERS "boost/filesystem/path.hpp") - set(_Boost_GRAPH_HEADERS "boost/graph/adjacency_list.hpp") - set(_Boost_GRAPH_PARALLEL_HEADERS "boost/graph/adjacency_list.hpp") - set(_Boost_IOSTREAMS_HEADERS "boost/iostreams/stream.hpp") - set(_Boost_LOCALE_HEADERS "boost/locale.hpp") - set(_Boost_LOG_HEADERS "boost/log/core.hpp") - set(_Boost_LOG_SETUP_HEADERS "boost/log/detail/setup_config.hpp") - set(_Boost_MATH_HEADERS "boost/math_fwd.hpp") - set(_Boost_MATH_C99_HEADERS "boost/math/tr1.hpp") - set(_Boost_MATH_C99F_HEADERS "boost/math/tr1.hpp") - set(_Boost_MATH_C99L_HEADERS "boost/math/tr1.hpp") - set(_Boost_MATH_TR1_HEADERS "boost/math/tr1.hpp") - set(_Boost_MATH_TR1F_HEADERS "boost/math/tr1.hpp") - set(_Boost_MATH_TR1L_HEADERS "boost/math/tr1.hpp") - set(_Boost_MPI_HEADERS "boost/mpi.hpp") - set(_Boost_MPI_PYTHON_HEADERS "boost/mpi/python/config.hpp") - set(_Boost_NUMPY_HEADERS "boost/python/numpy.hpp") - set(_Boost_PRG_EXEC_MONITOR_HEADERS "boost/test/prg_exec_monitor.hpp") - set(_Boost_PROGRAM_OPTIONS_HEADERS "boost/program_options.hpp") - set(_Boost_PYTHON_HEADERS "boost/python.hpp") - set(_Boost_RANDOM_HEADERS "boost/random.hpp") - set(_Boost_REGEX_HEADERS "boost/regex.hpp") - set(_Boost_SERIALIZATION_HEADERS "boost/serialization/serialization.hpp") - set(_Boost_SIGNALS_HEADERS "boost/signals.hpp") - set(_Boost_STACKTRACE_ADDR2LINE_HEADERS "boost/stacktrace.hpp") - set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp") - set(_Boost_STACKTRACE_BASIC_HEADERS "boost/stacktrace.hpp") - set(_Boost_STACKTRACE_NOOP_HEADERS "boost/stacktrace.hpp") - set(_Boost_STACKTRACE_WINDBG_CACHED_HEADERS "boost/stacktrace.hpp") - set(_Boost_STACKTRACE_WINDBG_HEADERS "boost/stacktrace.hpp") - set(_Boost_SYSTEM_HEADERS "boost/system/config.hpp") - set(_Boost_TEST_EXEC_MONITOR_HEADERS "boost/test/test_exec_monitor.hpp") - set(_Boost_THREAD_HEADERS "boost/thread.hpp") - set(_Boost_TIMER_HEADERS "boost/timer.hpp") - set(_Boost_TYPE_ERASURE_HEADERS "boost/type_erasure/config.hpp") - set(_Boost_UNIT_TEST_FRAMEWORK_HEADERS "boost/test/framework.hpp") - set(_Boost_WAVE_HEADERS "boost/wave.hpp") - set(_Boost_WSERIALIZATION_HEADERS "boost/archive/text_wiarchive.hpp") - if(WIN32) - set(_Boost_BZIP2_HEADERS "boost/iostreams/filter/bzip2.hpp") - set(_Boost_ZLIB_HEADERS "boost/iostreams/filter/zlib.hpp") - endif() - - string(TOUPPER ${component} uppercomponent) - set(${_hdrs} ${_Boost_${uppercomponent}_HEADERS} PARENT_SCOPE) - - string(REGEX REPLACE ";" " " _boost_HDRS_STRING "${_Boost_${uppercomponent}_HEADERS}") - if (NOT _boost_HDRS_STRING) - set(_boost_HDRS_STRING "(none)") - endif() - # message(STATUS "Headers for Boost::${component}: ${_boost_HDRS_STRING}") + # Handle Python version suffixes + if(component MATCHES "^(python|mpi_python|numpy)([0-9][0-9]?|[0-9]\\.[0-9])\$") + set(component "${CMAKE_MATCH_1}") + set(component_python_version "${CMAKE_MATCH_2}") + endif() + + # Note: new boost components will require adding here. The header must be present in + # all versions of Boost providing a library. + set(_Boost_ATOMIC_HEADERS "boost/atomic.hpp") + set(_Boost_CHRONO_HEADERS "boost/chrono.hpp") + set(_Boost_CONTAINER_HEADERS "boost/container/container_fwd.hpp") + set(_Boost_CONTRACT_HEADERS "boost/contract.hpp") + if(Boost_VERSION VERSION_LESS 106100) + set(_Boost_CONTEXT_HEADERS "boost/context/all.hpp") + else() + set(_Boost_CONTEXT_HEADERS "boost/context/detail/fcontext.hpp") + endif() + set(_Boost_COROUTINE_HEADERS "boost/coroutine/all.hpp") + set(_Boost_DATE_TIME_HEADERS "boost/date_time/date.hpp") + set(_Boost_EXCEPTION_HEADERS "boost/exception/exception.hpp") + set(_Boost_FIBER_HEADERS "boost/fiber/all.hpp") + set(_Boost_FILESYSTEM_HEADERS "boost/filesystem/path.hpp") + set(_Boost_GRAPH_HEADERS "boost/graph/adjacency_list.hpp") + set(_Boost_GRAPH_PARALLEL_HEADERS "boost/graph/adjacency_list.hpp") + set(_Boost_IOSTREAMS_HEADERS "boost/iostreams/stream.hpp") + set(_Boost_LOCALE_HEADERS "boost/locale.hpp") + set(_Boost_LOG_HEADERS "boost/log/core.hpp") + set(_Boost_LOG_SETUP_HEADERS "boost/log/detail/setup_config.hpp") + set(_Boost_MATH_HEADERS "boost/math_fwd.hpp") + set(_Boost_MATH_C99_HEADERS "boost/math/tr1.hpp") + set(_Boost_MATH_C99F_HEADERS "boost/math/tr1.hpp") + set(_Boost_MATH_C99L_HEADERS "boost/math/tr1.hpp") + set(_Boost_MATH_TR1_HEADERS "boost/math/tr1.hpp") + set(_Boost_MATH_TR1F_HEADERS "boost/math/tr1.hpp") + set(_Boost_MATH_TR1L_HEADERS "boost/math/tr1.hpp") + set(_Boost_MPI_HEADERS "boost/mpi.hpp") + set(_Boost_MPI_PYTHON_HEADERS "boost/mpi/python/config.hpp") + set(_Boost_NUMPY_HEADERS "boost/python/numpy.hpp") + set(_Boost_PRG_EXEC_MONITOR_HEADERS "boost/test/prg_exec_monitor.hpp") + set(_Boost_PROGRAM_OPTIONS_HEADERS "boost/program_options.hpp") + set(_Boost_PYTHON_HEADERS "boost/python.hpp") + set(_Boost_RANDOM_HEADERS "boost/random.hpp") + set(_Boost_REGEX_HEADERS "boost/regex.hpp") + set(_Boost_SERIALIZATION_HEADERS "boost/serialization/serialization.hpp") + set(_Boost_SIGNALS_HEADERS "boost/signals.hpp") + set(_Boost_STACKTRACE_ADDR2LINE_HEADERS "boost/stacktrace.hpp") + set(_Boost_STACKTRACE_BACKTRACE_HEADERS "boost/stacktrace.hpp") + set(_Boost_STACKTRACE_BASIC_HEADERS "boost/stacktrace.hpp") + set(_Boost_STACKTRACE_NOOP_HEADERS "boost/stacktrace.hpp") + set(_Boost_STACKTRACE_WINDBG_CACHED_HEADERS "boost/stacktrace.hpp") + set(_Boost_STACKTRACE_WINDBG_HEADERS "boost/stacktrace.hpp") + set(_Boost_SYSTEM_HEADERS "boost/system/config.hpp") + set(_Boost_TEST_EXEC_MONITOR_HEADERS "boost/test/test_exec_monitor.hpp") + set(_Boost_THREAD_HEADERS "boost/thread.hpp") + set(_Boost_TIMER_HEADERS "boost/timer.hpp") + set(_Boost_TYPE_ERASURE_HEADERS "boost/type_erasure/config.hpp") + set(_Boost_UNIT_TEST_FRAMEWORK_HEADERS "boost/test/framework.hpp") + set(_Boost_WAVE_HEADERS "boost/wave.hpp") + set(_Boost_WSERIALIZATION_HEADERS "boost/archive/text_wiarchive.hpp") + if(WIN32) + set(_Boost_BZIP2_HEADERS "boost/iostreams/filter/bzip2.hpp") + set(_Boost_ZLIB_HEADERS "boost/iostreams/filter/zlib.hpp") + endif() + + string(TOUPPER ${component} uppercomponent) + set(${_hdrs} + ${_Boost_${uppercomponent}_HEADERS} + PARENT_SCOPE) + + string(REGEX REPLACE ";" " " _boost_HDRS_STRING "${_Boost_${uppercomponent}_HEADERS}") + if(NOT _boost_HDRS_STRING) + set(_boost_HDRS_STRING "(none)") + endif() + # message(STATUS "Headers for Boost::${component}: ${_boost_HDRS_STRING}") endfunction() # # Determine if any missing dependencies require adding to the component list. # -# Sets _Boost_${COMPONENT}_DEPENDENCIES for each required component, -# plus _Boost_IMPORTED_TARGETS (TRUE if imported targets should be -# defined; FALSE if dependency information is unavailable). -# -# componentvar - the component list variable name -# extravar - the indirect dependency list variable name +# Sets _Boost_${COMPONENT}_DEPENDENCIES for each required component, plus +# _Boost_IMPORTED_TARGETS (TRUE if imported targets should be defined; FALSE if dependency +# information is unavailable). # +# componentvar - the component list variable name extravar - the indirect dependency list +# variable name # function(_Boost_MISSING_DEPENDENCIES componentvar extravar) - # _boost_unprocessed_components - list of components requiring processing - # _boost_processed_components - components already processed (or currently being processed) - # _boost_new_components - new components discovered for future processing - # - list(APPEND _boost_unprocessed_components ${${componentvar}}) - - while(_boost_unprocessed_components) - list(APPEND _boost_processed_components ${_boost_unprocessed_components}) - foreach(component ${_boost_unprocessed_components}) - string(TOUPPER ${component} uppercomponent) - set(${_ret} ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE) - _Boost_COMPONENT_DEPENDENCIES("${component}" _Boost_${uppercomponent}_DEPENDENCIES) - set(_Boost_${uppercomponent}_DEPENDENCIES ${_Boost_${uppercomponent}_DEPENDENCIES} PARENT_SCOPE) - set(_Boost_IMPORTED_TARGETS ${_Boost_IMPORTED_TARGETS} PARENT_SCOPE) - foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES}) - if (NOT ("${componentdep}" IN_LIST _boost_processed_components OR "${componentdep}" IN_LIST _boost_new_components)) - list(APPEND _boost_new_components ${componentdep}) - endif() - endforeach() - endforeach() - set(_boost_unprocessed_components ${_boost_new_components}) - unset(_boost_new_components) - endwhile() - set(_boost_extra_components ${_boost_processed_components}) - if(_boost_extra_components AND ${componentvar}) - list(REMOVE_ITEM _boost_extra_components ${${componentvar}}) - endif() - set(${componentvar} ${_boost_processed_components} PARENT_SCOPE) - set(${extravar} ${_boost_extra_components} PARENT_SCOPE) + # _boost_unprocessed_components - list of components requiring processing + # _boost_processed_components - components already processed (or currently being + # processed) _boost_new_components - new components discovered for future processing + # + list(APPEND _boost_unprocessed_components ${${componentvar}}) + + while(_boost_unprocessed_components) + list(APPEND _boost_processed_components ${_boost_unprocessed_components}) + foreach(component ${_boost_unprocessed_components}) + string(TOUPPER ${component} uppercomponent) + set(${_ret} + ${_Boost_${uppercomponent}_DEPENDENCIES} + PARENT_SCOPE) + _boost_component_dependencies("${component}" + _Boost_${uppercomponent}_DEPENDENCIES) + set(_Boost_${uppercomponent}_DEPENDENCIES + ${_Boost_${uppercomponent}_DEPENDENCIES} + PARENT_SCOPE) + set(_Boost_IMPORTED_TARGETS + ${_Boost_IMPORTED_TARGETS} + PARENT_SCOPE) + foreach(componentdep ${_Boost_${uppercomponent}_DEPENDENCIES}) + if(NOT ("${componentdep}" IN_LIST _boost_processed_components + OR "${componentdep}" IN_LIST _boost_new_components)) + list(APPEND _boost_new_components ${componentdep}) + endif() + endforeach() + endforeach() + set(_boost_unprocessed_components ${_boost_new_components}) + unset(_boost_new_components) + endwhile() + set(_boost_extra_components ${_boost_processed_components}) + if(_boost_extra_components AND ${componentvar}) + list(REMOVE_ITEM _boost_extra_components ${${componentvar}}) + endif() + set(${componentvar} + ${_boost_processed_components} + PARENT_SCOPE) + set(${extravar} + ${_boost_extra_components} + PARENT_SCOPE) endfunction() # -# Some boost libraries may require particular set of compler features. -# The very first one was `boost::fiber` introduced in Boost 1.62. -# One can check required compiler features of it in -# `${Boost_ROOT}/libs/fiber/build/Jamfile.v2`. +# Some boost libraries may require particular set of compler features. The very first one +# was `boost::fiber` introduced in Boost 1.62. One can check required compiler features of +# it in `${Boost_ROOT}/libs/fiber/build/Jamfile.v2`. # function(_Boost_COMPILER_FEATURES component _ret) - # Boost >= 1.62 and < 1.67 - if(NOT Boost_VERSION VERSION_LESS 106200 AND Boost_VERSION VERSION_LESS 106700) - set(_Boost_FIBER_COMPILER_FEATURES - cxx_alias_templates - cxx_auto_type - cxx_constexpr - cxx_defaulted_functions - cxx_final - cxx_lambdas - cxx_noexcept - cxx_nullptr - cxx_rvalue_references - cxx_thread_local - cxx_variadic_templates - ) - endif() - string(TOUPPER ${component} uppercomponent) - set(${_ret} ${_Boost_${uppercomponent}_COMPILER_FEATURES} PARENT_SCOPE) + # Boost >= 1.62 and < 1.67 + if(NOT Boost_VERSION VERSION_LESS 106200 AND Boost_VERSION VERSION_LESS 106700) + set(_Boost_FIBER_COMPILER_FEATURES + cxx_alias_templates + cxx_auto_type + cxx_constexpr + cxx_defaulted_functions + cxx_final + cxx_lambdas + cxx_noexcept + cxx_nullptr + cxx_rvalue_references + cxx_thread_local + cxx_variadic_templates) + endif() + string(TOUPPER ${component} uppercomponent) + set(${_ret} + ${_Boost_${uppercomponent}_COMPILER_FEATURES} + PARENT_SCOPE) endfunction() # -# Update library search directory hint variable with paths used by prebuilt boost binaries. +# Update library search directory hint variable with paths used by prebuilt boost +# binaries. # # Prebuilt windows binaries (https://sourceforge.net/projects/boost/files/boost-binaries/) -# have library directories named using MSVC compiler version and architecture. -# This function would append corresponding directories if MSVC is a current compiler, -# so having `BOOST_ROOT` would be enough to specify to find everything. +# have library directories named using MSVC compiler version and architecture. This +# function would append corresponding directories if MSVC is a current compiler, so having +# `BOOST_ROOT` would be enough to specify to find everything. # -function(_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS componentlibvar basedir) - if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(_arch_suffix 64) - else() - set(_arch_suffix 32) - endif() - if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141) - list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.1) - list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.0) - elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80) - math(EXPR _toolset_major_version "${MSVC_TOOLSET_VERSION} / 10") - list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-${_toolset_major_version}.0) +function(_Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS componentlibvar + basedir) + if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(_arch_suffix 64) + else() + set(_arch_suffix 32) + endif() + if(MSVC_TOOLSET_VERSION GREATER_EQUAL 141) + list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.1) + list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.0) + elseif(MSVC_TOOLSET_VERSION GREATER_EQUAL 80) + math(EXPR _toolset_major_version "${MSVC_TOOLSET_VERSION} / 10") + list(APPEND ${componentlibvar} + ${basedir}/lib${_arch_suffix}-msvc-${_toolset_major_version}.0) + endif() + set(${componentlibvar} + ${${componentlibvar}} + PARENT_SCOPE) endif() - set(${componentlibvar} ${${componentlibvar}} PARENT_SCOPE) - endif() endfunction() # # End functions/macros # -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------- -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------- # main. -#------------------------------------------------------------------------------- +# ------------------------------------------------------------------------------- - -# If the user sets Boost_LIBRARY_DIR, use it as the default for both -# configurations. +# If the user sets Boost_LIBRARY_DIR, use it as the default for both configurations. if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR) - set(Boost_LIBRARY_DIR_RELEASE "${Boost_LIBRARY_DIR}") + set(Boost_LIBRARY_DIR_RELEASE "${Boost_LIBRARY_DIR}") endif() if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR) - set(Boost_LIBRARY_DIR_DEBUG "${Boost_LIBRARY_DIR}") + set(Boost_LIBRARY_DIR_DEBUG "${Boost_LIBRARY_DIR}") endif() if(NOT DEFINED Boost_USE_DEBUG_LIBS) - set(Boost_USE_DEBUG_LIBS TRUE) + set(Boost_USE_DEBUG_LIBS TRUE) endif() if(NOT DEFINED Boost_USE_RELEASE_LIBS) - set(Boost_USE_RELEASE_LIBS TRUE) + set(Boost_USE_RELEASE_LIBS TRUE) endif() if(NOT DEFINED Boost_USE_MULTITHREADED) - set(Boost_USE_MULTITHREADED TRUE) + set(Boost_USE_MULTITHREADED TRUE) endif() if(NOT DEFINED Boost_USE_DEBUG_RUNTIME) - set(Boost_USE_DEBUG_RUNTIME TRUE) + set(Boost_USE_DEBUG_RUNTIME TRUE) endif() # Check the version of Boost against the requested version. if(Boost_FIND_VERSION AND NOT Boost_FIND_VERSION_MINOR) - message(SEND_ERROR "When requesting a specific version of Boost, you must provide at least the major and minor version numbers, e.g., 1.34") + message( + SEND_ERROR + "When requesting a specific version of Boost, you must provide at least the major and minor version numbers, e.g., 1.34" + ) endif() if(Boost_FIND_VERSION_EXACT) - # The version may appear in a directory with or without the patch - # level, even when the patch level is non-zero. - set(_boost_TEST_VERSIONS - "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}" - "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}") + # The version may appear in a directory with or without the patch level, even when the + # patch level is non-zero. + set(_boost_TEST_VERSIONS + "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}.${Boost_FIND_VERSION_PATCH}" + "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}") else() - # The user has not requested an exact version. Among known - # versions, find those that are acceptable to the user request. - # - # Note: When adding a new Boost release, also update the dependency - # information in _Boost_COMPONENT_DEPENDENCIES and - # _Boost_COMPONENT_HEADERS. See the instructions at the top of - # _Boost_COMPONENT_DEPENDENCIES. - set(_Boost_KNOWN_VERSIONS ${Boost_ADDITIONAL_VERSIONS} - "1.70.0" "1.70" "1.69.0" "1.69" - "1.68.0" "1.68" "1.67.0" "1.67" "1.66.0" "1.66" "1.65.1" "1.65.0" "1.65" - "1.64.0" "1.64" "1.63.0" "1.63" "1.62.0" "1.62" "1.61.0" "1.61" "1.60.0" "1.60" - "1.59.0" "1.59" "1.58.0" "1.58" "1.57.0" "1.57" "1.56.0" "1.56" "1.55.0" "1.55" - "1.54.0" "1.54" "1.53.0" "1.53" "1.52.0" "1.52" "1.51.0" "1.51" - "1.50.0" "1.50" "1.49.0" "1.49" "1.48.0" "1.48" "1.47.0" "1.47" "1.46.1" - "1.46.0" "1.46" "1.45.0" "1.45" "1.44.0" "1.44" "1.43.0" "1.43" "1.42.0" "1.42" - "1.41.0" "1.41" "1.40.0" "1.40" "1.39.0" "1.39" "1.38.0" "1.38" "1.37.0" "1.37" - "1.36.1" "1.36.0" "1.36" "1.35.1" "1.35.0" "1.35" "1.34.1" "1.34.0" - "1.34" "1.33.1" "1.33.0" "1.33") - - set(_boost_TEST_VERSIONS) - if(Boost_FIND_VERSION) - set(_Boost_FIND_VERSION_SHORT "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}") - # Select acceptable versions. - foreach(version ${_Boost_KNOWN_VERSIONS}) - if(NOT "${version}" VERSION_LESS "${Boost_FIND_VERSION}") - # This version is high enough. - list(APPEND _boost_TEST_VERSIONS "${version}") - elseif("${version}.99" VERSION_EQUAL "${_Boost_FIND_VERSION_SHORT}.99") - # This version is a short-form for the requested version with - # the patch level dropped. - list(APPEND _boost_TEST_VERSIONS "${version}") - endif() - endforeach() - else() - # Any version is acceptable. - set(_boost_TEST_VERSIONS "${_Boost_KNOWN_VERSIONS}") - endif() + # The user has not requested an exact version. Among known versions, find those that + # are acceptable to the user request. + # + # Note: When adding a new Boost release, also update the dependency information in + # _Boost_COMPONENT_DEPENDENCIES and _Boost_COMPONENT_HEADERS. See the instructions at + # the top of _Boost_COMPONENT_DEPENDENCIES. + set(_Boost_KNOWN_VERSIONS + ${Boost_ADDITIONAL_VERSIONS} + "1.70.0" + "1.70" + "1.69.0" + "1.69" + "1.68.0" + "1.68" + "1.67.0" + "1.67" + "1.66.0" + "1.66" + "1.65.1" + "1.65.0" + "1.65" + "1.64.0" + "1.64" + "1.63.0" + "1.63" + "1.62.0" + "1.62" + "1.61.0" + "1.61" + "1.60.0" + "1.60" + "1.59.0" + "1.59" + "1.58.0" + "1.58" + "1.57.0" + "1.57" + "1.56.0" + "1.56" + "1.55.0" + "1.55" + "1.54.0" + "1.54" + "1.53.0" + "1.53" + "1.52.0" + "1.52" + "1.51.0" + "1.51" + "1.50.0" + "1.50" + "1.49.0" + "1.49" + "1.48.0" + "1.48" + "1.47.0" + "1.47" + "1.46.1" + "1.46.0" + "1.46" + "1.45.0" + "1.45" + "1.44.0" + "1.44" + "1.43.0" + "1.43" + "1.42.0" + "1.42" + "1.41.0" + "1.41" + "1.40.0" + "1.40" + "1.39.0" + "1.39" + "1.38.0" + "1.38" + "1.37.0" + "1.37" + "1.36.1" + "1.36.0" + "1.36" + "1.35.1" + "1.35.0" + "1.35" + "1.34.1" + "1.34.0" + "1.34" + "1.33.1" + "1.33.0" + "1.33") + + set(_boost_TEST_VERSIONS) + if(Boost_FIND_VERSION) + set(_Boost_FIND_VERSION_SHORT + "${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}") + # Select acceptable versions. + foreach(version ${_Boost_KNOWN_VERSIONS}) + if(NOT "${version}" VERSION_LESS "${Boost_FIND_VERSION}") + # This version is high enough. + list(APPEND _boost_TEST_VERSIONS "${version}") + elseif("${version}.99" VERSION_EQUAL "${_Boost_FIND_VERSION_SHORT}.99") + # This version is a short-form for the requested version with the patch + # level dropped. + list(APPEND _boost_TEST_VERSIONS "${version}") + endif() + endforeach() + else() + # Any version is acceptable. + set(_boost_TEST_VERSIONS "${_Boost_KNOWN_VERSIONS}") + endif() endif() -# The reason that we failed to find Boost. This will be set to a -# user-friendly message when we fail to find some necessary piece of -# Boost. +# The reason that we failed to find Boost. This will be set to a user-friendly message +# when we fail to find some necessary piece of Boost. set(Boost_ERROR_REASON) if(Boost_DEBUG) - # Output some of their choices - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_USE_MULTITHREADED = ${Boost_USE_MULTITHREADED}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_USE_STATIC_LIBS = ${Boost_USE_STATIC_LIBS}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_USE_STATIC_RUNTIME = ${Boost_USE_STATIC_RUNTIME}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_ADDITIONAL_VERSIONS = ${Boost_ADDITIONAL_VERSIONS}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_NO_SYSTEM_PATHS = ${Boost_NO_SYSTEM_PATHS}") + # Output some of their choices + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_USE_MULTITHREADED = ${Boost_USE_MULTITHREADED}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_USE_STATIC_LIBS = ${Boost_USE_STATIC_LIBS}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_USE_STATIC_RUNTIME = ${Boost_USE_STATIC_RUNTIME}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_ADDITIONAL_VERSIONS = ${Boost_ADDITIONAL_VERSIONS}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_NO_SYSTEM_PATHS = ${Boost_NO_SYSTEM_PATHS}") endif() -# Supply Boost_LIB_DIAGNOSTIC_DEFINITIONS as a convenience target. It -# will only contain any interface definitions on WIN32, but is created -# on all platforms to keep end user code free from platform dependent -# code. Also provide convenience targets to disable autolinking and -# enable dynamic linking. +# Supply Boost_LIB_DIAGNOSTIC_DEFINITIONS as a convenience target. It will only contain +# any interface definitions on WIN32, but is created on all platforms to keep end user +# code free from platform dependent code. Also provide convenience targets to disable +# autolinking and enable dynamic linking. if(NOT TARGET Boost::diagnostic_definitions) - add_library(Boost::diagnostic_definitions INTERFACE IMPORTED) - add_library(Boost::disable_autolinking INTERFACE IMPORTED) - add_library(Boost::dynamic_linking INTERFACE IMPORTED) - set_target_properties(Boost::dynamic_linking PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_DYN_LINK") + add_library(Boost::diagnostic_definitions INTERFACE IMPORTED) + add_library(Boost::disable_autolinking INTERFACE IMPORTED) + add_library(Boost::dynamic_linking INTERFACE IMPORTED) + set_target_properties(Boost::dynamic_linking PROPERTIES INTERFACE_COMPILE_DEFINITIONS + "BOOST_ALL_DYN_LINK") endif() if(WIN32) - # In windows, automatic linking is performed, so you do not have - # to specify the libraries. If you are linking to a dynamic - # runtime, then you can choose to link to either a static or a - # dynamic Boost library, the default is to do a static link. You - # can alter this for a specific library "whatever" by defining - # BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to be - # linked dynamically. Alternatively you can force all Boost - # libraries to dynamic link by defining BOOST_ALL_DYN_LINK. - - # This feature can be disabled for Boost library "whatever" by - # defining BOOST_WHATEVER_NO_LIB, or for all of Boost by defining - # BOOST_ALL_NO_LIB. - - # If you want to observe which libraries are being linked against - # then defining BOOST_LIB_DIAGNOSTIC will cause the auto-linking - # code to emit a #pragma message each time a library is selected - # for linking. - set(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC") - set_target_properties(Boost::diagnostic_definitions PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "BOOST_LIB_DIAGNOSTIC") - set_target_properties(Boost::disable_autolinking PROPERTIES - INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_NO_LIB") + # In windows, automatic linking is performed, so you do not have to specify the + # libraries. If you are linking to a dynamic runtime, then you can choose to link to + # either a static or a dynamic Boost library, the default is to do a static link. You + # can alter this for a specific library "whatever" by defining BOOST_WHATEVER_DYN_LINK + # to force Boost library "whatever" to be linked dynamically. Alternatively you can + # force all Boost libraries to dynamic link by defining BOOST_ALL_DYN_LINK. + + # This feature can be disabled for Boost library "whatever" by defining + # BOOST_WHATEVER_NO_LIB, or for all of Boost by defining BOOST_ALL_NO_LIB. + + # If you want to observe which libraries are being linked against then defining + # BOOST_LIB_DIAGNOSTIC will cause the auto-linking code to emit a #pragma message each + # time a library is selected for linking. + set(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC") + set_target_properties(Boost::diagnostic_definitions + PROPERTIES INTERFACE_COMPILE_DEFINITIONS "BOOST_LIB_DIAGNOSTIC") + set_target_properties(Boost::disable_autolinking + PROPERTIES INTERFACE_COMPILE_DEFINITIONS "BOOST_ALL_NO_LIB") endif() -_Boost_CHECK_SPELLING(Boost_ROOT) -_Boost_CHECK_SPELLING(Boost_LIBRARYDIR) -_Boost_CHECK_SPELLING(Boost_INCLUDEDIR) +_boost_check_spelling(Boost_ROOT) +_boost_check_spelling(Boost_LIBRARYDIR) +_boost_check_spelling(Boost_INCLUDEDIR) # Collect environment variable inputs as hints. Do not consider changes. foreach(v BOOSTROOT BOOST_ROOT BOOST_INCLUDEDIR BOOST_LIBRARYDIR) - set(_env $ENV{${v}}) - if(_env) - file(TO_CMAKE_PATH "${_env}" _ENV_${v}) - else() - set(_ENV_${v} "") - endif() + set(_env $ENV{${v}}) + if(_env) + file(TO_CMAKE_PATH "${_env}" _ENV_${v}) + else() + set(_ENV_${v} "") + endif() endforeach() if(NOT _ENV_BOOST_ROOT AND _ENV_BOOSTROOT) - set(_ENV_BOOST_ROOT "${_ENV_BOOSTROOT}") + set(_ENV_BOOST_ROOT "${_ENV_BOOSTROOT}") endif() # Collect inputs and cached results. Detect changes since the last run. if(NOT BOOST_ROOT AND BOOSTROOT) - set(BOOST_ROOT "${BOOSTROOT}") + set(BOOST_ROOT "${BOOSTROOT}") endif() -set(_Boost_VARS_DIR - BOOST_ROOT - Boost_NO_SYSTEM_PATHS - ) +set(_Boost_VARS_DIR BOOST_ROOT Boost_NO_SYSTEM_PATHS) if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Declared as CMake or Environmental Variables:") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - " BOOST_ROOT = ${BOOST_ROOT}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - " BOOST_INCLUDEDIR = ${BOOST_INCLUDEDIR}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - " BOOST_LIBRARYDIR = ${BOOST_LIBRARYDIR}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Declared as CMake or Environmental Variables:") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + " BOOST_ROOT = ${BOOST_ROOT}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + " BOOST_INCLUDEDIR = ${BOOST_INCLUDEDIR}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + " BOOST_LIBRARYDIR = ${BOOST_LIBRARYDIR}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "_boost_TEST_VERSIONS = ${_boost_TEST_VERSIONS}") endif() # ------------------------------------------------------------------------ -# Search for Boost include DIR +# Search for Boost include DIR # ------------------------------------------------------------------------ set(_Boost_VARS_INC BOOST_INCLUDEDIR Boost_INCLUDE_DIR Boost_ADDITIONAL_VERSIONS) -_Boost_CHANGE_DETECT(_Boost_CHANGE_INCDIR ${_Boost_VARS_DIR} ${_Boost_VARS_INC}) -# Clear Boost_INCLUDE_DIR if it did not change but other input affecting the -# location did. We will find a new one based on the new inputs. +_boost_change_detect(_Boost_CHANGE_INCDIR ${_Boost_VARS_DIR} ${_Boost_VARS_INC}) +# Clear Boost_INCLUDE_DIR if it did not change but other input affecting the location did. +# We will find a new one based on the new inputs. if(_Boost_CHANGE_INCDIR AND NOT _Boost_INCLUDE_DIR_CHANGED) - unset(Boost_INCLUDE_DIR CACHE) + unset(Boost_INCLUDE_DIR CACHE) endif() if(NOT Boost_INCLUDE_DIR) - set(_boost_INCLUDE_SEARCH_DIRS "") - if(BOOST_INCLUDEDIR) - list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_INCLUDEDIR}) - elseif(_ENV_BOOST_INCLUDEDIR) - list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_INCLUDEDIR}) - endif() - - if( BOOST_ROOT ) - list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT}/include ${BOOST_ROOT}) - elseif( _ENV_BOOST_ROOT ) - list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_ROOT}/include ${_ENV_BOOST_ROOT}) - endif() - - if( Boost_NO_SYSTEM_PATHS) - list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH) - else() - if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") - foreach(ver ${_boost_TEST_VERSIONS}) - string(REPLACE "." "_" ver "${ver}") - list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS "C:/local/boost_${ver}") - endforeach() - endif() - list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS - C:/boost/include - C:/boost - /sw/local/include - ) - endif() - - # Try to find Boost by stepping backwards through the Boost versions - # we know about. - # Build a list of path suffixes for each version. - set(_boost_PATH_SUFFIXES) - foreach(_boost_VER ${_boost_TEST_VERSIONS}) - # Add in a path suffix, based on the required version, ideally - # we could read this from version.hpp, but for that to work we'd - # need to know the include dir already - set(_boost_BOOSTIFIED_VERSION) - - # Transform 1.35 => 1_35 and 1.36.0 => 1_36_0 - if(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)") - set(_boost_BOOSTIFIED_VERSION - "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}_${CMAKE_MATCH_3}") - elseif(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)") - set(_boost_BOOSTIFIED_VERSION - "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}") - endif() - - list(APPEND _boost_PATH_SUFFIXES - "boost-${_boost_BOOSTIFIED_VERSION}" - "boost_${_boost_BOOSTIFIED_VERSION}" - "boost/boost-${_boost_BOOSTIFIED_VERSION}" - "boost/boost_${_boost_BOOSTIFIED_VERSION}" - ) - - endforeach() - - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Include debugging info:") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - " _boost_INCLUDE_SEARCH_DIRS = ${_boost_INCLUDE_SEARCH_DIRS}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - " _boost_PATH_SUFFIXES = ${_boost_PATH_SUFFIXES}") - endif() - - # Look for a standard boost header file. - find_path(Boost_INCLUDE_DIR - NAMES boost/config.hpp - HINTS ${_boost_INCLUDE_SEARCH_DIRS} - PATH_SUFFIXES ${_boost_PATH_SUFFIXES} - ) + set(_boost_INCLUDE_SEARCH_DIRS "") + if(BOOST_INCLUDEDIR) + list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_INCLUDEDIR}) + elseif(_ENV_BOOST_INCLUDEDIR) + list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_INCLUDEDIR}) + endif() + + if(BOOST_ROOT) + list(APPEND _boost_INCLUDE_SEARCH_DIRS ${BOOST_ROOT}/include ${BOOST_ROOT}) + elseif(_ENV_BOOST_ROOT) + list(APPEND _boost_INCLUDE_SEARCH_DIRS ${_ENV_BOOST_ROOT}/include + ${_ENV_BOOST_ROOT}) + endif() + + if(Boost_NO_SYSTEM_PATHS) + list(APPEND _boost_INCLUDE_SEARCH_DIRS NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + else() + if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC") + foreach(ver ${_boost_TEST_VERSIONS}) + string(REPLACE "." "_" ver "${ver}") + list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS "C:/local/boost_${ver}") + endforeach() + endif() + list(APPEND _boost_INCLUDE_SEARCH_DIRS PATHS C:/boost/include C:/boost + /sw/local/include) + endif() + + # Try to find Boost by stepping backwards through the Boost versions we know about. + # Build a list of path suffixes for each version. + set(_boost_PATH_SUFFIXES) + foreach(_boost_VER ${_boost_TEST_VERSIONS}) + # Add in a path suffix, based on the required version, ideally we could read this + # from version.hpp, but for that to work we'd need to know the include dir already + set(_boost_BOOSTIFIED_VERSION) + + # Transform 1.35 => 1_35 and 1.36.0 => 1_36_0 + if(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)\\.([0-9]+)") + set(_boost_BOOSTIFIED_VERSION + "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}_${CMAKE_MATCH_3}") + elseif(_boost_VER MATCHES "([0-9]+)\\.([0-9]+)") + set(_boost_BOOSTIFIED_VERSION "${CMAKE_MATCH_1}_${CMAKE_MATCH_2}") + endif() + + list( + APPEND + _boost_PATH_SUFFIXES + "boost-${_boost_BOOSTIFIED_VERSION}" + "boost_${_boost_BOOSTIFIED_VERSION}" + "boost/boost-${_boost_BOOSTIFIED_VERSION}" + "boost/boost_${_boost_BOOSTIFIED_VERSION}") + + endforeach() + + if(Boost_DEBUG) + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Include debugging info:") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + " _boost_INCLUDE_SEARCH_DIRS = ${_boost_INCLUDE_SEARCH_DIRS}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + " _boost_PATH_SUFFIXES = ${_boost_PATH_SUFFIXES}") + endif() + + # Look for a standard boost header file. + find_path( + Boost_INCLUDE_DIR + NAMES boost/config.hpp + HINTS ${_boost_INCLUDE_SEARCH_DIRS} + PATH_SUFFIXES ${_boost_PATH_SUFFIXES}) endif() # ------------------------------------------------------------------------ -# Extract version information from version.hpp +# Extract version information from version.hpp # ------------------------------------------------------------------------ -# Set Boost_FOUND based only on header location and version. -# It will be updated below for component libraries. +# Set Boost_FOUND based only on header location and version. It will be updated below for +# component libraries. if(Boost_INCLUDE_DIR) - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "location of version.hpp: ${Boost_INCLUDE_DIR}/boost/version.hpp") - endif() - - # Extract Boost_VERSION and Boost_LIB_VERSION from version.hpp - set(Boost_VERSION 0) - set(Boost_LIB_VERSION "") - file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS REGEX "#define BOOST_(LIB_)?VERSION ") - set(_Boost_VERSION_REGEX "([0-9]+)") - set(_Boost_LIB_VERSION_REGEX "\"([0-9_]+)\"") - foreach(v VERSION LIB_VERSION) - if("${_boost_VERSION_HPP_CONTENTS}" MATCHES "#define BOOST_${v} ${_Boost_${v}_REGEX}") - set(Boost_${v} "${CMAKE_MATCH_1}") - endif() - endforeach() - unset(_boost_VERSION_HPP_CONTENTS) - - math(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000") - math(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000") - math(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100") - set(Boost_VERSION_STRING "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") - - string(APPEND Boost_ERROR_REASON - "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}\nBoost include path: ${Boost_INCLUDE_DIR}") - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "version.hpp reveals boost " - "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") - endif() - - if(Boost_FIND_VERSION) - # Set Boost_FOUND based on requested version. - set(_Boost_VERSION "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") - if("${_Boost_VERSION}" VERSION_LESS "${Boost_FIND_VERSION}") - set(Boost_FOUND 0) - set(_Boost_VERSION_AGE "old") - elseif(Boost_FIND_VERSION_EXACT AND - NOT "${_Boost_VERSION}" VERSION_EQUAL "${Boost_FIND_VERSION}") - set(Boost_FOUND 0) - set(_Boost_VERSION_AGE "new") + if(Boost_DEBUG) + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "location of version.hpp: ${Boost_INCLUDE_DIR}/boost/version.hpp") + endif() + + # Extract Boost_VERSION and Boost_LIB_VERSION from version.hpp + set(Boost_VERSION 0) + set(Boost_LIB_VERSION "") + file(STRINGS "${Boost_INCLUDE_DIR}/boost/version.hpp" _boost_VERSION_HPP_CONTENTS + REGEX "#define BOOST_(LIB_)?VERSION ") + set(_Boost_VERSION_REGEX "([0-9]+)") + set(_Boost_LIB_VERSION_REGEX "\"([0-9_]+)\"") + foreach(v VERSION LIB_VERSION) + if("${_boost_VERSION_HPP_CONTENTS}" MATCHES + "#define BOOST_${v} ${_Boost_${v}_REGEX}") + set(Boost_${v} "${CMAKE_MATCH_1}") + endif() + endforeach() + unset(_boost_VERSION_HPP_CONTENTS) + + math(EXPR Boost_MAJOR_VERSION "${Boost_VERSION} / 100000") + math(EXPR Boost_MINOR_VERSION "${Boost_VERSION} / 100 % 1000") + math(EXPR Boost_SUBMINOR_VERSION "${Boost_VERSION} % 100") + set(Boost_VERSION_STRING + "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") + + string( + APPEND + Boost_ERROR_REASON + "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}\nBoost include path: ${Boost_INCLUDE_DIR}" + ) + if(Boost_DEBUG) + message( + STATUS + "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "version.hpp reveals boost " + "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") + endif() + + if(Boost_FIND_VERSION) + # Set Boost_FOUND based on requested version. + set(_Boost_VERSION + "${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") + if("${_Boost_VERSION}" VERSION_LESS "${Boost_FIND_VERSION}") + set(Boost_FOUND 0) + set(_Boost_VERSION_AGE "old") + elseif(Boost_FIND_VERSION_EXACT AND NOT "${_Boost_VERSION}" VERSION_EQUAL + "${Boost_FIND_VERSION}") + set(Boost_FOUND 0) + set(_Boost_VERSION_AGE "new") + else() + set(Boost_FOUND 1) + endif() + if(NOT Boost_FOUND) + # State that we found a version of Boost that is too new or too old. + string( + APPEND + Boost_ERROR_REASON + "\nDetected version of Boost is too ${_Boost_VERSION_AGE}. Requested version was ${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}" + ) + if(Boost_FIND_VERSION_PATCH) + string(APPEND Boost_ERROR_REASON ".${Boost_FIND_VERSION_PATCH}") + endif() + if(NOT Boost_FIND_VERSION_EXACT) + string(APPEND Boost_ERROR_REASON " (or newer)") + endif() + string(APPEND Boost_ERROR_REASON ".") + endif() else() - set(Boost_FOUND 1) - endif() - if(NOT Boost_FOUND) - # State that we found a version of Boost that is too new or too old. - string(APPEND Boost_ERROR_REASON - "\nDetected version of Boost is too ${_Boost_VERSION_AGE}. Requested version was ${Boost_FIND_VERSION_MAJOR}.${Boost_FIND_VERSION_MINOR}") - if (Boost_FIND_VERSION_PATCH) - string(APPEND Boost_ERROR_REASON - ".${Boost_FIND_VERSION_PATCH}") - endif () - if (NOT Boost_FIND_VERSION_EXACT) - string(APPEND Boost_ERROR_REASON " (or newer)") - endif () - string(APPEND Boost_ERROR_REASON ".") - endif () - else() - # Caller will accept any Boost version. - set(Boost_FOUND 1) - endif() + # Caller will accept any Boost version. + set(Boost_FOUND 1) + endif() else() - set(Boost_FOUND 0) - string(APPEND Boost_ERROR_REASON - "Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers.") + set(Boost_FOUND 0) + string( + APPEND + Boost_ERROR_REASON + "Unable to find the Boost header files. Please set BOOST_ROOT to the root directory containing Boost or BOOST_INCLUDEDIR to the directory containing Boost's headers." + ) endif() # ------------------------------------------------------------------------ -# Prefix initialization +# Prefix initialization # ------------------------------------------------------------------------ set(Boost_LIB_PREFIX "") -if ( (GHSMULTI AND Boost_USE_STATIC_LIBS) OR - (WIN32 AND Boost_USE_STATIC_LIBS AND NOT CYGWIN) ) - set(Boost_LIB_PREFIX "lib") +if((GHSMULTI AND Boost_USE_STATIC_LIBS) + OR (WIN32 + AND Boost_USE_STATIC_LIBS + AND NOT CYGWIN)) + set(Boost_LIB_PREFIX "lib") endif() -if ( NOT Boost_NAMESPACE ) - set(Boost_NAMESPACE "boost") +if(NOT Boost_NAMESPACE) + set(Boost_NAMESPACE "boost") endif() if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_LIB_PREFIX = ${Boost_LIB_PREFIX}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Boost_NAMESPACE = ${Boost_NAMESPACE}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_LIB_PREFIX = ${Boost_LIB_PREFIX}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Boost_NAMESPACE = ${Boost_NAMESPACE}") endif() # ------------------------------------------------------------------------ -# Suffix initialization and compiler suffix detection. +# Suffix initialization and compiler suffix detection. # ------------------------------------------------------------------------ set(_Boost_VARS_NAME - Boost_NAMESPACE - Boost_COMPILER - Boost_THREADAPI - Boost_USE_DEBUG_PYTHON - Boost_USE_MULTITHREADED - Boost_USE_STATIC_LIBS - Boost_USE_STATIC_RUNTIME - Boost_USE_STLPORT - Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS - ) -_Boost_CHANGE_DETECT(_Boost_CHANGE_LIBNAME ${_Boost_VARS_NAME}) + Boost_NAMESPACE + Boost_COMPILER + Boost_THREADAPI + Boost_USE_DEBUG_PYTHON + Boost_USE_MULTITHREADED + Boost_USE_STATIC_LIBS + Boost_USE_STATIC_RUNTIME + Boost_USE_STLPORT + Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS) +_boost_change_detect(_Boost_CHANGE_LIBNAME ${_Boost_VARS_NAME}) # Setting some more suffixes for the library -if (Boost_COMPILER) - set(_boost_COMPILER ${Boost_COMPILER}) - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "using user-specified Boost_COMPILER = ${_boost_COMPILER}") - endif() +if(Boost_COMPILER) + set(_boost_COMPILER ${Boost_COMPILER}) + if(Boost_DEBUG) + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "using user-specified Boost_COMPILER = ${_boost_COMPILER}") + endif() else() - # Attempt to guess the compiler suffix - # NOTE: this is not perfect yet, if you experience any issues - # please report them and use the Boost_COMPILER variable - # to work around the problems. - _Boost_GUESS_COMPILER_PREFIX(_boost_COMPILER) - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "guessed _boost_COMPILER = ${_boost_COMPILER}") - endif() + # Attempt to guess the compiler suffix NOTE: this is not perfect yet, if you + # experience any issues please report them and use the Boost_COMPILER variable to work + # around the problems. + _boost_guess_compiler_prefix(_boost_COMPILER) + if(Boost_DEBUG) + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "guessed _boost_COMPILER = ${_boost_COMPILER}") + endif() endif() -set (_boost_MULTITHREADED "-mt") -if( NOT Boost_USE_MULTITHREADED ) - set (_boost_MULTITHREADED "") +set(_boost_MULTITHREADED "-mt") +if(NOT Boost_USE_MULTITHREADED) + set(_boost_MULTITHREADED "") endif() if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "_boost_MULTITHREADED = ${_boost_MULTITHREADED}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "_boost_MULTITHREADED = ${_boost_MULTITHREADED}") endif() -#====================== +# ====================== # Systematically build up the Boost ABI tag for the 'tagged' and 'versioned' layouts # http://boost.org/doc/libs/1_66_0/more/getting_started/windows.html#library-naming # http://boost.org/doc/libs/1_66_0/boost/config/auto_link.hpp # http://boost.org/doc/libs/1_66_0/tools/build/src/tools/common.jam # http://boost.org/doc/libs/1_66_0/boostcpp.jam -set( _boost_RELEASE_ABI_TAG "-") -set( _boost_DEBUG_ABI_TAG "-") -# Key Use this library when: -# s linking statically to the C++ standard library and -# compiler runtime support libraries. +set(_boost_RELEASE_ABI_TAG "-") +set(_boost_DEBUG_ABI_TAG "-") +# Key Use this library when: s linking statically to the C++ standard library +# and compiler runtime support libraries. if(Boost_USE_STATIC_RUNTIME) - set( _boost_RELEASE_ABI_TAG "${_boost_RELEASE_ABI_TAG}s") - set( _boost_DEBUG_ABI_TAG "${_boost_DEBUG_ABI_TAG}s") + set(_boost_RELEASE_ABI_TAG "${_boost_RELEASE_ABI_TAG}s") + set(_boost_DEBUG_ABI_TAG "${_boost_DEBUG_ABI_TAG}s") endif() -# g using debug versions of the standard and runtime -# support libraries +# g using debug versions of the standard and runtime support libraries if(WIN32 AND Boost_USE_DEBUG_RUNTIME) - if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC" - OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang" - OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel") - string(APPEND _boost_DEBUG_ABI_TAG "g") - endif() + if("x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC" + OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xClang" + OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xIntel") + string(APPEND _boost_DEBUG_ABI_TAG "g") + endif() endif() -# y using special debug build of python +# y using special debug build of python if(Boost_USE_DEBUG_PYTHON) - string(APPEND _boost_DEBUG_ABI_TAG "y") + string(APPEND _boost_DEBUG_ABI_TAG "y") endif() -# d using a debug version of your code +# d using a debug version of your code string(APPEND _boost_DEBUG_ABI_TAG "d") -# p using the STLport standard library rather than the -# default one supplied with your compiler +# p using the STLport standard library rather than the default one supplied with +# your compiler if(Boost_USE_STLPORT) - string(APPEND _boost_RELEASE_ABI_TAG "p") - string(APPEND _boost_DEBUG_ABI_TAG "p") + string(APPEND _boost_RELEASE_ABI_TAG "p") + string(APPEND _boost_DEBUG_ABI_TAG "p") endif() -# n using the STLport deprecated "native iostreams" feature -# removed from the documentation in 1.43.0 but still present in -# boost/config/auto_link.hpp +# n using the STLport deprecated "native iostreams" feature removed from the +# documentation in 1.43.0 but still present in boost/config/auto_link.hpp if(Boost_USE_STLPORT_DEPRECATED_NATIVE_IOSTREAMS) - string(APPEND _boost_RELEASE_ABI_TAG "n") - string(APPEND _boost_DEBUG_ABI_TAG "n") + string(APPEND _boost_RELEASE_ABI_TAG "n") + string(APPEND _boost_DEBUG_ABI_TAG "n") endif() -# -x86 Architecture and address model tag -# First character is the architecture, then word-size, either 32 or 64 -# Only used in 'versioned' layout, added in Boost 1.66.0 +# -x86 Architecture and address model tag First character is the architecture, then +# word-size, either 32 or 64 Only used in 'versioned' layout, added in Boost 1.66.0 if(DEFINED Boost_ARCHITECTURE) - set(_boost_ARCHITECTURE_TAG "${Boost_ARCHITECTURE}") - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "using user-specified Boost_ARCHITECTURE = ${_boost_ARCHITECTURE_TAG}") - endif() + set(_boost_ARCHITECTURE_TAG "${Boost_ARCHITECTURE}") + if(Boost_DEBUG) + message( + STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "using user-specified Boost_ARCHITECTURE = ${_boost_ARCHITECTURE_TAG}") + endif() else() - set(_boost_ARCHITECTURE_TAG "") - # {CMAKE_CXX_COMPILER_ARCHITECTURE_ID} is not currently set for all compilers - if(NOT "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "x" AND NOT Boost_VERSION VERSION_LESS 106600) - string(APPEND _boost_ARCHITECTURE_TAG "-") - # This needs to be kept in-sync with the section of CMakePlatformId.h.in - # inside 'defined(_WIN32) && defined(_MSC_VER)' - if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "IA64") - string(APPEND _boost_ARCHITECTURE_TAG "i") - elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "X86" - OR CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "x64") - string(APPEND _boost_ARCHITECTURE_TAG "x") - elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "^ARM") - string(APPEND _boost_ARCHITECTURE_TAG "a") - elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "MIPS") - string(APPEND _boost_ARCHITECTURE_TAG "m") - endif() - - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - string(APPEND _boost_ARCHITECTURE_TAG "64") - else() - string(APPEND _boost_ARCHITECTURE_TAG "32") + set(_boost_ARCHITECTURE_TAG "") + # {CMAKE_CXX_COMPILER_ARCHITECTURE_ID} is not currently set for all compilers + if(NOT "x${CMAKE_CXX_COMPILER_ARCHITECTURE_ID}" STREQUAL "x" AND NOT Boost_VERSION + VERSION_LESS 106600) + string(APPEND _boost_ARCHITECTURE_TAG "-") + # This needs to be kept in-sync with the section of CMakePlatformId.h.in inside + # 'defined(_WIN32) && defined(_MSC_VER)' + if(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "IA64") + string(APPEND _boost_ARCHITECTURE_TAG "i") + elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "X86" + OR CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "x64") + string(APPEND _boost_ARCHITECTURE_TAG "x") + elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID MATCHES "^ARM") + string(APPEND _boost_ARCHITECTURE_TAG "a") + elseif(CMAKE_CXX_COMPILER_ARCHITECTURE_ID STREQUAL "MIPS") + string(APPEND _boost_ARCHITECTURE_TAG "m") + endif() + + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + string(APPEND _boost_ARCHITECTURE_TAG "64") + else() + string(APPEND _boost_ARCHITECTURE_TAG "32") + endif() endif() - endif() endif() if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "_boost_RELEASE_ABI_TAG = ${_boost_RELEASE_ABI_TAG}") - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "_boost_DEBUG_ABI_TAG = ${_boost_DEBUG_ABI_TAG}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "_boost_RELEASE_ABI_TAG = ${_boost_RELEASE_ABI_TAG}") + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "_boost_DEBUG_ABI_TAG = ${_boost_DEBUG_ABI_TAG}") endif() # ------------------------------------------------------------------------ -# Begin finding boost libraries +# Begin finding boost libraries # ------------------------------------------------------------------------ set(_Boost_VARS_LIB "") foreach(c DEBUG RELEASE) - set(_Boost_VARS_LIB_${c} BOOST_LIBRARYDIR Boost_LIBRARY_DIR_${c}) - list(APPEND _Boost_VARS_LIB ${_Boost_VARS_LIB_${c}}) - _Boost_CHANGE_DETECT(_Boost_CHANGE_LIBDIR_${c} ${_Boost_VARS_DIR} ${_Boost_VARS_LIB_${c}} Boost_INCLUDE_DIR) - # Clear Boost_LIBRARY_DIR_${c} if it did not change but other input affecting the - # location did. We will find a new one based on the new inputs. - if(_Boost_CHANGE_LIBDIR_${c} AND NOT _Boost_LIBRARY_DIR_${c}_CHANGED) - unset(Boost_LIBRARY_DIR_${c} CACHE) - endif() - - # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is set, prefer its value. - if(Boost_LIBRARY_DIR_${c}) - set(_boost_LIBRARY_SEARCH_DIRS_${c} ${Boost_LIBRARY_DIR_${c}} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) - else() - set(_boost_LIBRARY_SEARCH_DIRS_${c} "") - if(BOOST_LIBRARYDIR) - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_LIBRARYDIR}) - elseif(_ENV_BOOST_LIBRARYDIR) - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_LIBRARYDIR}) + set(_Boost_VARS_LIB_${c} BOOST_LIBRARYDIR Boost_LIBRARY_DIR_${c}) + list(APPEND _Boost_VARS_LIB ${_Boost_VARS_LIB_${c}}) + _boost_change_detect(_Boost_CHANGE_LIBDIR_${c} ${_Boost_VARS_DIR} + ${_Boost_VARS_LIB_${c}} Boost_INCLUDE_DIR) + # Clear Boost_LIBRARY_DIR_${c} if it did not change but other input affecting the + # location did. We will find a new one based on the new inputs. + if(_Boost_CHANGE_LIBDIR_${c} AND NOT _Boost_LIBRARY_DIR_${c}_CHANGED) + unset(Boost_LIBRARY_DIR_${c} CACHE) endif() - if(BOOST_ROOT) - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_ROOT}/lib ${BOOST_ROOT}/stage/lib) - _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${BOOST_ROOT}") - elseif(_ENV_BOOST_ROOT) - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_ROOT}/lib ${_ENV_BOOST_ROOT}/stage/lib) - _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${_ENV_BOOST_ROOT}") - endif() - - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} - ${Boost_INCLUDE_DIR}/lib - ${Boost_INCLUDE_DIR}/../lib - ${Boost_INCLUDE_DIR}/stage/lib - ) - _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}/..") - _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}") - if( Boost_NO_SYSTEM_PATHS ) - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH NO_SYSTEM_ENVIRONMENT_PATH) + # If Boost_LIBRARY_DIR_[RELEASE,DEBUG] is set, prefer its value. + if(Boost_LIBRARY_DIR_${c}) + set(_boost_LIBRARY_SEARCH_DIRS_${c} ${Boost_LIBRARY_DIR_${c}} NO_DEFAULT_PATH + NO_CMAKE_FIND_ROOT_PATH) else() - foreach(ver ${_boost_TEST_VERSIONS}) - string(REPLACE "." "_" ver "${ver}") - _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/local/boost_${ver}") - endforeach() - _Boost_UPDATE_WINDOWS_LIBRARY_SEARCH_DIRS_WITH_PREBUILT_PATHS(_boost_LIBRARY_SEARCH_DIRS_${c} "C:/boost") - list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} PATHS - C:/boost/lib - C:/boost - /sw/local/lib - ) + set(_boost_LIBRARY_SEARCH_DIRS_${c} "") + if(BOOST_LIBRARYDIR) + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_LIBRARYDIR}) + elseif(_ENV_BOOST_LIBRARYDIR) + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_LIBRARYDIR}) + endif() + + if(BOOST_ROOT) + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${BOOST_ROOT}/lib + ${BOOST_ROOT}/stage/lib) + _boost_update_windows_library_search_dirs_with_prebuilt_paths( + _boost_LIBRARY_SEARCH_DIRS_${c} "${BOOST_ROOT}") + elseif(_ENV_BOOST_ROOT) + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${_ENV_BOOST_ROOT}/lib + ${_ENV_BOOST_ROOT}/stage/lib) + _boost_update_windows_library_search_dirs_with_prebuilt_paths( + _boost_LIBRARY_SEARCH_DIRS_${c} "${_ENV_BOOST_ROOT}") + endif() + + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} ${Boost_INCLUDE_DIR}/lib + ${Boost_INCLUDE_DIR}/../lib ${Boost_INCLUDE_DIR}/stage/lib) + _boost_update_windows_library_search_dirs_with_prebuilt_paths( + _boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}/..") + _boost_update_windows_library_search_dirs_with_prebuilt_paths( + _boost_LIBRARY_SEARCH_DIRS_${c} "${Boost_INCLUDE_DIR}") + if(Boost_NO_SYSTEM_PATHS) + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} NO_CMAKE_SYSTEM_PATH + NO_SYSTEM_ENVIRONMENT_PATH) + else() + foreach(ver ${_boost_TEST_VERSIONS}) + string(REPLACE "." "_" ver "${ver}") + _boost_update_windows_library_search_dirs_with_prebuilt_paths( + _boost_LIBRARY_SEARCH_DIRS_${c} "C:/local/boost_${ver}") + endforeach() + _boost_update_windows_library_search_dirs_with_prebuilt_paths( + _boost_LIBRARY_SEARCH_DIRS_${c} "C:/boost") + list(APPEND _boost_LIBRARY_SEARCH_DIRS_${c} PATHS C:/boost/lib C:/boost + /sw/local/lib) + endif() endif() - endif() endforeach() if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "_boost_LIBRARY_SEARCH_DIRS_RELEASE = ${_boost_LIBRARY_SEARCH_DIRS_RELEASE}" - "_boost_LIBRARY_SEARCH_DIRS_DEBUG = ${_boost_LIBRARY_SEARCH_DIRS_DEBUG}") + message( + STATUS + "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "_boost_LIBRARY_SEARCH_DIRS_RELEASE = ${_boost_LIBRARY_SEARCH_DIRS_RELEASE}" + "_boost_LIBRARY_SEARCH_DIRS_DEBUG = ${_boost_LIBRARY_SEARCH_DIRS_DEBUG}") endif() # Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES -if( Boost_USE_STATIC_LIBS ) - set( _boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) - if(WIN32) - list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .lib .a) - else() - set(CMAKE_FIND_LIBRARY_SUFFIXES .a) - endif() +if(Boost_USE_STATIC_LIBS) + set(_boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) + if(WIN32) + list(INSERT CMAKE_FIND_LIBRARY_SUFFIXES 0 .lib .a) + else() + set(CMAKE_FIND_LIBRARY_SUFFIXES .a) + endif() endif() # We want to use the tag inline below without risking double dashes if(_boost_RELEASE_ABI_TAG) - if(${_boost_RELEASE_ABI_TAG} STREQUAL "-") - set(_boost_RELEASE_ABI_TAG "") - endif() + if(${_boost_RELEASE_ABI_TAG} STREQUAL "-") + set(_boost_RELEASE_ABI_TAG "") + endif() endif() if(_boost_DEBUG_ABI_TAG) - if(${_boost_DEBUG_ABI_TAG} STREQUAL "-") - set(_boost_DEBUG_ABI_TAG "") - endif() + if(${_boost_DEBUG_ABI_TAG} STREQUAL "-") + set(_boost_DEBUG_ABI_TAG "") + endif() endif() -# The previous behavior of FindBoost when Boost_USE_STATIC_LIBS was enabled -# on WIN32 was to: -# 1. Search for static libs compiled against a SHARED C++ standard runtime library (use if found) -# 2. Search for static libs compiled against a STATIC C++ standard runtime library (use if found) -# We maintain this behavior since changing it could break people's builds. -# To disable the ambiguous behavior, the user need only -# set Boost_USE_STATIC_RUNTIME either ON or OFF. +# The previous behavior of FindBoost when Boost_USE_STATIC_LIBS was enabled on WIN32 was +# to: 1. Search for static libs compiled against a SHARED C++ standard runtime library +# (use if found) 2. Search for static libs compiled against a STATIC C++ standard runtime +# library (use if found) We maintain this behavior since changing it could break people's +# builds. To disable the ambiguous behavior, the user need only set +# Boost_USE_STATIC_RUNTIME either ON or OFF. set(_boost_STATIC_RUNTIME_WORKAROUND false) if(WIN32 AND Boost_USE_STATIC_LIBS) - if(NOT DEFINED Boost_USE_STATIC_RUNTIME) - set(_boost_STATIC_RUNTIME_WORKAROUND TRUE) - endif() + if(NOT DEFINED Boost_USE_STATIC_RUNTIME) + set(_boost_STATIC_RUNTIME_WORKAROUND TRUE) + endif() endif() -# On versions < 1.35, remove the System library from the considered list -# since it wasn't added until 1.35. +# On versions < 1.35, remove the System library from the considered list since it wasn't +# added until 1.35. if(Boost_VERSION AND Boost_FIND_COMPONENTS) - if(Boost_VERSION LESS 103500) - list(REMOVE_ITEM Boost_FIND_COMPONENTS system) - endif() + if(Boost_VERSION LESS 103500) + list(REMOVE_ITEM Boost_FIND_COMPONENTS system) + endif() endif() -# Additional components may be required via component dependencies. -# Add any missing components to the list. -_Boost_MISSING_DEPENDENCIES(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS) +# Additional components may be required via component dependencies. Add any missing +# components to the list. +_boost_missing_dependencies(Boost_FIND_COMPONENTS _Boost_EXTRA_FIND_COMPONENTS) # If thread is required, get the thread libs as a dependency if("thread" IN_LIST Boost_FIND_COMPONENTS) - if(Boost_FIND_QUIETLY) - set(_Boost_find_quiet QUIET) - else() - set(_Boost_find_quiet "") - endif() - find_package(Threads ${_Boost_find_quiet}) - unset(_Boost_find_quiet) + if(Boost_FIND_QUIETLY) + set(_Boost_find_quiet QUIET) + else() + set(_Boost_find_quiet "") + endif() + find_package(Threads ${_Boost_find_quiet}) + unset(_Boost_find_quiet) endif() # If the user changed any of our control inputs flush previous results. -if(_Boost_CHANGE_LIBDIR_DEBUG OR _Boost_CHANGE_LIBDIR_RELEASE OR _Boost_CHANGE_LIBNAME) - foreach(COMPONENT ${_Boost_COMPONENTS_SEARCHED}) - string(TOUPPER ${COMPONENT} UPPERCOMPONENT) - foreach(c DEBUG RELEASE) - set(_var Boost_${UPPERCOMPONENT}_LIBRARY_${c}) - unset(${_var} CACHE) - set(${_var} "${_var}-NOTFOUND") +if(_Boost_CHANGE_LIBDIR_DEBUG + OR _Boost_CHANGE_LIBDIR_RELEASE + OR _Boost_CHANGE_LIBNAME) + foreach(COMPONENT ${_Boost_COMPONENTS_SEARCHED}) + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + foreach(c DEBUG RELEASE) + set(_var Boost_${UPPERCOMPONENT}_LIBRARY_${c}) + unset(${_var} CACHE) + set(${_var} "${_var}-NOTFOUND") + endforeach() endforeach() - endforeach() - set(_Boost_COMPONENTS_SEARCHED "") + set(_Boost_COMPONENTS_SEARCHED "") endif() foreach(COMPONENT ${Boost_FIND_COMPONENTS}) - string(TOUPPER ${COMPONENT} UPPERCOMPONENT) - - set( _boost_docstring_release "Boost ${COMPONENT} library (release)") - set( _boost_docstring_debug "Boost ${COMPONENT} library (debug)") - - # Compute component-specific hints. - set(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT "") - if(${COMPONENT} STREQUAL "mpi" OR ${COMPONENT} STREQUAL "mpi_python" OR - ${COMPONENT} STREQUAL "graph_parallel") - foreach(lib ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES}) - if(IS_ABSOLUTE "${lib}") - get_filename_component(libdir "${lib}" PATH) - string(REPLACE "\\" "/" libdir "${libdir}") - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT ${libdir}) - endif() - endforeach() - endif() - - # Handle Python version suffixes - unset(COMPONENT_PYTHON_VERSION_MAJOR) - unset(COMPONENT_PYTHON_VERSION_MINOR) - if(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\$") - set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}") - set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}") - elseif(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\\.?([0-9])\$") - set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}") - set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}") - set(COMPONENT_PYTHON_VERSION_MINOR "${CMAKE_MATCH_3}") - endif() - - unset(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME) - if (COMPONENT_PYTHON_VERSION_MINOR) - # Boost >= 1.67 - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}") - # Debian/Ubuntu (Some versions omit the 2 and/or 3 from the suffix) - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}") - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}") - # Gentoo - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}") - # RPMs - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}") - endif() - if (COMPONENT_PYTHON_VERSION_MAJOR AND NOT COMPONENT_PYTHON_VERSION_MINOR) - # Boost < 1.67 - list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}") - endif() - - # Consolidate and report component-specific hints. - if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME) - list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME) - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Component-specific library search names for ${COMPONENT_NAME}: " - "${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME}") + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + + set(_boost_docstring_release "Boost ${COMPONENT} library (release)") + set(_boost_docstring_debug "Boost ${COMPONENT} library (debug)") + + # Compute component-specific hints. + set(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT "") + if(${COMPONENT} STREQUAL "mpi" + OR ${COMPONENT} STREQUAL "mpi_python" + OR ${COMPONENT} STREQUAL "graph_parallel") + foreach(lib ${MPI_CXX_LIBRARIES} ${MPI_C_LIBRARIES}) + if(IS_ABSOLUTE "${lib}") + get_filename_component(libdir "${lib}" PATH) + string(REPLACE "\\" "/" libdir "${libdir}") + list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT ${libdir}) + endif() + endforeach() endif() - endif() - if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT) - list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT) - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Component-specific library search paths for ${COMPONENT}: " - "${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT}") - endif() - endif() - - # - # Find headers - # - _Boost_COMPONENT_HEADERS("${COMPONENT}" Boost_${UPPERCOMPONENT}_HEADER_NAME) - # Look for a standard boost header file. - if(Boost_${UPPERCOMPONENT}_HEADER_NAME) - if(EXISTS "${Boost_INCLUDE_DIR}/${Boost_${UPPERCOMPONENT}_HEADER_NAME}") - set(Boost_${UPPERCOMPONENT}_HEADER ON) + + # Handle Python version suffixes + unset(COMPONENT_PYTHON_VERSION_MAJOR) + unset(COMPONENT_PYTHON_VERSION_MINOR) + if(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\$") + set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}") + set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}") + elseif(${COMPONENT} MATCHES "^(python|mpi_python|numpy)([0-9])\\.?([0-9])\$") + set(COMPONENT_UNVERSIONED "${CMAKE_MATCH_1}") + set(COMPONENT_PYTHON_VERSION_MAJOR "${CMAKE_MATCH_2}") + set(COMPONENT_PYTHON_VERSION_MINOR "${CMAKE_MATCH_3}") + endif() + + unset(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME) + if(COMPONENT_PYTHON_VERSION_MINOR) + # Boost >= 1.67 + list( + APPEND + _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME + "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}" + ) + # Debian/Ubuntu (Some versions omit the 2 and/or 3 from the suffix) + list( + APPEND + _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME + "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}" + ) + list( + APPEND + _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME + "${COMPONENT_UNVERSIONED}-py${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}" + ) + # Gentoo + list( + APPEND + _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME + "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}" + ) + # RPMs + list( + APPEND + _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME + "${COMPONENT_UNVERSIONED}-${COMPONENT_PYTHON_VERSION_MAJOR}${COMPONENT_PYTHON_VERSION_MINOR}" + ) + endif() + if(COMPONENT_PYTHON_VERSION_MAJOR AND NOT COMPONENT_PYTHON_VERSION_MINOR) + # Boost < 1.67 + list(APPEND _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME + "${COMPONENT_UNVERSIONED}${COMPONENT_PYTHON_VERSION_MAJOR}") + endif() + + # Consolidate and report component-specific hints. + if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME) + list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME) + if(Boost_DEBUG) + message( + STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Component-specific library search names for ${COMPONENT_NAME}: " + "${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME}") + endif() + endif() + if(_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT) + list(REMOVE_DUPLICATES _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT) + if(Boost_DEBUG) + message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Component-specific library search paths for ${COMPONENT}: " + "${_Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT}") + endif() + endif() + + # + # Find headers + # + _boost_component_headers("${COMPONENT}" Boost_${UPPERCOMPONENT}_HEADER_NAME) + # Look for a standard boost header file. + if(Boost_${UPPERCOMPONENT}_HEADER_NAME) + if(EXISTS "${Boost_INCLUDE_DIR}/${Boost_${UPPERCOMPONENT}_HEADER_NAME}") + set(Boost_${UPPERCOMPONENT}_HEADER ON) + else() + set(Boost_${UPPERCOMPONENT}_HEADER OFF) + endif() else() - set(Boost_${UPPERCOMPONENT}_HEADER OFF) - endif() - else() - set(Boost_${UPPERCOMPONENT}_HEADER ON) - message(WARNING "No header defined for ${COMPONENT}; skipping header check") - endif() - - # - # Find RELEASE libraries - # - unset(_boost_RELEASE_NAMES) - foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT) - foreach(compiler IN LISTS _boost_COMPILER) - list(APPEND _boost_RELEASE_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} ) + set(Boost_${UPPERCOMPONENT}_HEADER ON) + message(WARNING "No header defined for ${COMPONENT}; skipping header check") + endif() + + # + # Find RELEASE libraries + # + unset(_boost_RELEASE_NAMES) + foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT) + foreach(compiler IN LISTS _boost_COMPILER) + list( + APPEND + _boost_RELEASE_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} + ) + endforeach() + list( + APPEND + _boost_RELEASE_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}) + if(_boost_STATIC_RUNTIME_WORKAROUND) + set(_boost_RELEASE_STATIC_ABI_TAG "-s${_boost_RELEASE_ABI_TAG}") + foreach(compiler IN LISTS _boost_COMPILER) + list( + APPEND + _boost_RELEASE_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} + ) + endforeach() + list( + APPEND + _boost_RELEASE_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} + ) + endif() endforeach() - list(APPEND _boost_RELEASE_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_ABI_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} ) - if(_boost_STATIC_RUNTIME_WORKAROUND) - set(_boost_RELEASE_STATIC_ABI_TAG "-s${_boost_RELEASE_ABI_TAG}") - foreach(compiler IN LISTS _boost_COMPILER) - list(APPEND _boost_RELEASE_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} ) - endforeach() - list(APPEND _boost_RELEASE_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_RELEASE_STATIC_ABI_TAG} ) - endif() - endforeach() - if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread") - _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_RELEASE_NAMES ${_boost_RELEASE_NAMES}) - endif() - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " - "Searching for ${UPPERCOMPONENT}_LIBRARY_RELEASE: ${_boost_RELEASE_NAMES}") - endif() - - # if Boost_LIBRARY_DIR_RELEASE is not defined, - # but Boost_LIBRARY_DIR_DEBUG is, look there first for RELEASE libs - if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR_DEBUG) - list(INSERT _boost_LIBRARY_SEARCH_DIRS_RELEASE 0 ${Boost_LIBRARY_DIR_DEBUG}) - endif() - - # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing. - string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp "${_boost_LIBRARY_SEARCH_DIRS_RELEASE}") - - if(Boost_USE_RELEASE_LIBS) - _Boost_FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE RELEASE - NAMES ${_boost_RELEASE_NAMES} - HINTS ${_boost_LIBRARY_SEARCH_DIRS_tmp} - NAMES_PER_DIR - DOC "${_boost_docstring_release}" - ) - endif() - - # - # Find DEBUG libraries - # - unset(_boost_DEBUG_NAMES) - foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT) - foreach(compiler IN LISTS _boost_COMPILER) - list(APPEND _boost_DEBUG_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG} ) + if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread") + _boost_prepend_list_with_threadapi(_boost_RELEASE_NAMES ${_boost_RELEASE_NAMES}) + endif() + if(Boost_DEBUG) + message( + STATUS + "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + "Searching for ${UPPERCOMPONENT}_LIBRARY_RELEASE: ${_boost_RELEASE_NAMES}" + ) + endif() + + # if Boost_LIBRARY_DIR_RELEASE is not defined, but Boost_LIBRARY_DIR_DEBUG is, look + # there first for RELEASE libs + if(NOT Boost_LIBRARY_DIR_RELEASE AND Boost_LIBRARY_DIR_DEBUG) + list(INSERT _boost_LIBRARY_SEARCH_DIRS_RELEASE 0 ${Boost_LIBRARY_DIR_DEBUG}) + endif() + + # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing. + string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp + "${_boost_LIBRARY_SEARCH_DIRS_RELEASE}") + + if(Boost_USE_RELEASE_LIBS) + _boost_find_library( + Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE + RELEASE + NAMES + ${_boost_RELEASE_NAMES} + HINTS + ${_boost_LIBRARY_SEARCH_DIRS_tmp} + NAMES_PER_DIR + DOC + "${_boost_docstring_release}") + endif() + + # + # Find DEBUG libraries + # + unset(_boost_DEBUG_NAMES) + foreach(component IN LISTS _Boost_FIND_LIBRARY_HINTS_FOR_COMPONENT_NAME COMPONENT) + foreach(compiler IN LISTS _boost_COMPILER) + list( + APPEND + _boost_DEBUG_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG} + ) + endforeach() + list( + APPEND + _boost_DEBUG_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}) + if(_boost_STATIC_RUNTIME_WORKAROUND) + set(_boost_DEBUG_STATIC_ABI_TAG "-s${_boost_DEBUG_ABI_TAG}") + foreach(compiler IN LISTS _boost_COMPILER) + list( + APPEND + _boost_DEBUG_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} + ) + endforeach() + list( + APPEND + _boost_DEBUG_NAMES + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} + ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} + ) + endif() endforeach() - list(APPEND _boost_DEBUG_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_ABI_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component} ) - if(_boost_STATIC_RUNTIME_WORKAROUND) - set(_boost_DEBUG_STATIC_ABI_TAG "-s${_boost_DEBUG_ABI_TAG}") - foreach(compiler IN LISTS _boost_COMPILER) - list(APPEND _boost_DEBUG_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${compiler}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} ) - endforeach() - list(APPEND _boost_DEBUG_NAMES - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG}-${Boost_LIB_VERSION} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG}${_boost_ARCHITECTURE_TAG} - ${Boost_LIB_PREFIX}${Boost_NAMESPACE}_${component}${_boost_MULTITHREADED}${_boost_DEBUG_STATIC_ABI_TAG} ) - endif() - endforeach() - if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread") - _Boost_PREPEND_LIST_WITH_THREADAPI(_boost_DEBUG_NAMES ${_boost_DEBUG_NAMES}) - endif() - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " + if(Boost_THREADAPI AND ${COMPONENT} STREQUAL "thread") + _boost_prepend_list_with_threadapi(_boost_DEBUG_NAMES ${_boost_DEBUG_NAMES}) + endif() + if(Boost_DEBUG) + message( + STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] " "Searching for ${UPPERCOMPONENT}_LIBRARY_DEBUG: ${_boost_DEBUG_NAMES}") - endif() - - # if Boost_LIBRARY_DIR_DEBUG is not defined, - # but Boost_LIBRARY_DIR_RELEASE is, look there first for DEBUG libs - if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR_RELEASE) - list(INSERT _boost_LIBRARY_SEARCH_DIRS_DEBUG 0 ${Boost_LIBRARY_DIR_RELEASE}) - endif() + endif() - # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing. - string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp "${_boost_LIBRARY_SEARCH_DIRS_DEBUG}") + # if Boost_LIBRARY_DIR_DEBUG is not defined, but Boost_LIBRARY_DIR_RELEASE is, look + # there first for DEBUG libs + if(NOT Boost_LIBRARY_DIR_DEBUG AND Boost_LIBRARY_DIR_RELEASE) + list(INSERT _boost_LIBRARY_SEARCH_DIRS_DEBUG 0 ${Boost_LIBRARY_DIR_RELEASE}) + endif() - if(Boost_USE_DEBUG_LIBS) - _Boost_FIND_LIBRARY(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG DEBUG - NAMES ${_boost_DEBUG_NAMES} - HINTS ${_boost_LIBRARY_SEARCH_DIRS_tmp} - NAMES_PER_DIR - DOC "${_boost_docstring_debug}" - ) - endif () + # Avoid passing backslashes to _Boost_FIND_LIBRARY due to macro re-parsing. + string(REPLACE "\\" "/" _boost_LIBRARY_SEARCH_DIRS_tmp + "${_boost_LIBRARY_SEARCH_DIRS_DEBUG}") + + if(Boost_USE_DEBUG_LIBS) + _boost_find_library( + Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG + DEBUG + NAMES + ${_boost_DEBUG_NAMES} + HINTS + ${_boost_LIBRARY_SEARCH_DIRS_tmp} + NAMES_PER_DIR + DOC + "${_boost_docstring_debug}") + endif() - if(Boost_REALPATH) - _Boost_SWAP_WITH_REALPATH(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE "${_boost_docstring_release}") - _Boost_SWAP_WITH_REALPATH(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG "${_boost_docstring_debug}" ) - endif() + if(Boost_REALPATH) + _boost_swap_with_realpath(Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE + "${_boost_docstring_release}") + _boost_swap_with_realpath(Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG + "${_boost_docstring_debug}") + endif() - _Boost_ADJUST_LIB_VARS(${UPPERCOMPONENT}) + _boost_adjust_lib_vars(${UPPERCOMPONENT}) - # Check if component requires some compiler features - _Boost_COMPILER_FEATURES(${COMPONENT} _Boost_${UPPERCOMPONENT}_COMPILER_FEATURES) + # Check if component requires some compiler features + _boost_compiler_features(${COMPONENT} _Boost_${UPPERCOMPONENT}_COMPILER_FEATURES) endforeach() # Restore the original find library ordering -if( Boost_USE_STATIC_LIBS ) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${_boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) +if(Boost_USE_STATIC_LIBS) + set(CMAKE_FIND_LIBRARY_SUFFIXES ${_boost_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) endif() # ------------------------------------------------------------------------ -# End finding boost libraries +# End finding boost libraries # ------------------------------------------------------------------------ set(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR}) set(Boost_LIBRARY_DIRS) if(Boost_LIBRARY_DIR_RELEASE) - list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_RELEASE}) + list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_RELEASE}) endif() if(Boost_LIBRARY_DIR_DEBUG) - list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_DEBUG}) + list(APPEND Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR_DEBUG}) endif() if(Boost_LIBRARY_DIRS) - list(REMOVE_DUPLICATES Boost_LIBRARY_DIRS) + list(REMOVE_DUPLICATES Boost_LIBRARY_DIRS) endif() -# The above setting of Boost_FOUND was based only on the header files. -# Update it for the requested component libraries. +# The above setting of Boost_FOUND was based only on the header files. Update it for the +# requested component libraries. if(Boost_FOUND) - # The headers were found. Check for requested component libs. - set(_boost_CHECKED_COMPONENT FALSE) - set(_Boost_MISSING_COMPONENTS "") - foreach(COMPONENT ${Boost_FIND_COMPONENTS}) - string(TOUPPER ${COMPONENT} UPPERCOMPONENT) - set(_boost_CHECKED_COMPONENT TRUE) - if(NOT Boost_${UPPERCOMPONENT}_FOUND AND Boost_FIND_REQUIRED_${COMPONENT}) - list(APPEND _Boost_MISSING_COMPONENTS ${COMPONENT}) + # The headers were found. Check for requested component libs. + set(_boost_CHECKED_COMPONENT FALSE) + set(_Boost_MISSING_COMPONENTS "") + foreach(COMPONENT ${Boost_FIND_COMPONENTS}) + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + set(_boost_CHECKED_COMPONENT TRUE) + if(NOT Boost_${UPPERCOMPONENT}_FOUND AND Boost_FIND_REQUIRED_${COMPONENT}) + list(APPEND _Boost_MISSING_COMPONENTS ${COMPONENT}) + endif() + endforeach() + if(_Boost_MISSING_COMPONENTS AND _Boost_EXTRA_FIND_COMPONENTS) + # Optional indirect dependencies are not counted as missing. + list(REMOVE_ITEM _Boost_MISSING_COMPONENTS ${_Boost_EXTRA_FIND_COMPONENTS}) endif() - endforeach() - if(_Boost_MISSING_COMPONENTS AND _Boost_EXTRA_FIND_COMPONENTS) - # Optional indirect dependencies are not counted as missing. - list(REMOVE_ITEM _Boost_MISSING_COMPONENTS ${_Boost_EXTRA_FIND_COMPONENTS}) - endif() - if(Boost_DEBUG) - message(STATUS "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] Boost_FOUND = ${Boost_FOUND}") - endif() + if(Boost_DEBUG) + message( + STATUS + "[ ${CMAKE_CURRENT_LIST_FILE}:${CMAKE_CURRENT_LIST_LINE} ] Boost_FOUND = ${Boost_FOUND}" + ) + endif() - if (_Boost_MISSING_COMPONENTS) - set(Boost_FOUND 0) - # We were unable to find some libraries, so generate a sensible - # error message that lists the libraries we were unable to find. - string(APPEND Boost_ERROR_REASON - "\nCould not find the following") - if(Boost_USE_STATIC_LIBS) - string(APPEND Boost_ERROR_REASON " static") - endif() - string(APPEND Boost_ERROR_REASON - " Boost libraries:\n") - foreach(COMPONENT ${_Boost_MISSING_COMPONENTS}) - string(TOUPPER ${COMPONENT} UPPERCOMPONENT) - string(APPEND Boost_ERROR_REASON - " ${Boost_NAMESPACE}_${COMPONENT}${Boost_ERROR_REASON_${UPPERCOMPONENT}}\n") - endforeach() + if(_Boost_MISSING_COMPONENTS) + set(Boost_FOUND 0) + # We were unable to find some libraries, so generate a sensible error message that + # lists the libraries we were unable to find. + string(APPEND Boost_ERROR_REASON "\nCould not find the following") + if(Boost_USE_STATIC_LIBS) + string(APPEND Boost_ERROR_REASON " static") + endif() + string(APPEND Boost_ERROR_REASON " Boost libraries:\n") + foreach(COMPONENT ${_Boost_MISSING_COMPONENTS}) + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + string( + APPEND + Boost_ERROR_REASON + " ${Boost_NAMESPACE}_${COMPONENT}${Boost_ERROR_REASON_${UPPERCOMPONENT}}\n" + ) + endforeach() + + list(LENGTH Boost_FIND_COMPONENTS Boost_NUM_COMPONENTS_WANTED) + list(LENGTH _Boost_MISSING_COMPONENTS Boost_NUM_MISSING_COMPONENTS) + if(${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS}) + string( + APPEND + Boost_ERROR_REASON + "No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost." + ) + else() + string( + APPEND + Boost_ERROR_REASON + "Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost." + ) + endif() + endif() - list(LENGTH Boost_FIND_COMPONENTS Boost_NUM_COMPONENTS_WANTED) - list(LENGTH _Boost_MISSING_COMPONENTS Boost_NUM_MISSING_COMPONENTS) - if (${Boost_NUM_COMPONENTS_WANTED} EQUAL ${Boost_NUM_MISSING_COMPONENTS}) - string(APPEND Boost_ERROR_REASON - "No Boost libraries were found. You may need to set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.") - else () - string(APPEND Boost_ERROR_REASON - "Some (but not all) of the required Boost libraries were found. You may need to install these additional Boost libraries. Alternatively, set BOOST_LIBRARYDIR to the directory containing Boost libraries or BOOST_ROOT to the location of Boost.") - endif () - endif () + if(NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT) + # Compatibility Code for backwards compatibility with CMake 2.4's FindBoost + # module. - if( NOT Boost_LIBRARY_DIRS AND NOT _boost_CHECKED_COMPONENT ) - # Compatibility Code for backwards compatibility with CMake - # 2.4's FindBoost module. + # Look for the boost library path. Note that the user may not have installed any + # libraries so it is quite possible the Boost_LIBRARY_DIRS may not exist. + set(_boost_LIB_DIR ${Boost_INCLUDE_DIR}) - # Look for the boost library path. - # Note that the user may not have installed any libraries - # so it is quite possible the Boost_LIBRARY_DIRS may not exist. - set(_boost_LIB_DIR ${Boost_INCLUDE_DIR}) + if("${_boost_LIB_DIR}" MATCHES "boost-[0-9]+") + get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH) + endif() - if("${_boost_LIB_DIR}" MATCHES "boost-[0-9]+") - get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH) - endif() + if("${_boost_LIB_DIR}" MATCHES "/include$") + # Strip off the trailing "/include" in the path. + get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH) + endif() - if("${_boost_LIB_DIR}" MATCHES "/include$") - # Strip off the trailing "/include" in the path. - get_filename_component(_boost_LIB_DIR ${_boost_LIB_DIR} PATH) - endif() + if(EXISTS "${_boost_LIB_DIR}/lib") + string(APPEND _boost_LIB_DIR /lib) + elseif(EXISTS "${_boost_LIB_DIR}/stage/lib") + string(APPEND _boost_LIB_DIR "/stage/lib") + else() + set(_boost_LIB_DIR "") + endif() - if(EXISTS "${_boost_LIB_DIR}/lib") - string(APPEND _boost_LIB_DIR /lib) - elseif(EXISTS "${_boost_LIB_DIR}/stage/lib") - string(APPEND _boost_LIB_DIR "/stage/lib") - else() - set(_boost_LIB_DIR "") - endif() + if(_boost_LIB_DIR AND EXISTS "${_boost_LIB_DIR}") + set(Boost_LIBRARY_DIRS ${_boost_LIB_DIR}) + endif() - if(_boost_LIB_DIR AND EXISTS "${_boost_LIB_DIR}") - set(Boost_LIBRARY_DIRS ${_boost_LIB_DIR}) endif() - - endif() else() - # Boost headers were not found so no components were found. - foreach(COMPONENT ${Boost_FIND_COMPONENTS}) - string(TOUPPER ${COMPONENT} UPPERCOMPONENT) - set(Boost_${UPPERCOMPONENT}_FOUND 0) - endforeach() + # Boost headers were not found so no components were found. + foreach(COMPONENT ${Boost_FIND_COMPONENTS}) + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + set(Boost_${UPPERCOMPONENT}_FOUND 0) + endforeach() endif() # ------------------------------------------------------------------------ -# Add imported targets +# Add imported targets # ------------------------------------------------------------------------ if(Boost_FOUND) - # For header-only libraries - if(NOT TARGET Boost::boost) - add_library(Boost::boost INTERFACE IMPORTED) - if(Boost_INCLUDE_DIRS) - set_target_properties(Boost::boost PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}") - endif() - endif() - - foreach(COMPONENT ${Boost_FIND_COMPONENTS}) - if(_Boost_IMPORTED_TARGETS AND NOT TARGET Boost::${COMPONENT}) - string(TOUPPER ${COMPONENT} UPPERCOMPONENT) - if(Boost_${UPPERCOMPONENT}_FOUND) - if(Boost_USE_STATIC_LIBS) - add_library(Boost::${COMPONENT} STATIC IMPORTED) - else() - # Even if Boost_USE_STATIC_LIBS is OFF, we might have static - # libraries as a result. - add_library(Boost::${COMPONENT} UNKNOWN IMPORTED) - endif() + # For header-only libraries + if(NOT TARGET Boost::boost) + add_library(Boost::boost INTERFACE IMPORTED) if(Boost_INCLUDE_DIRS) - set_target_properties(Boost::${COMPONENT} PROPERTIES - INTERFACE_INCLUDE_DIRECTORIES "${Boost_INCLUDE_DIRS}") - endif() - if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY}") - set_target_properties(Boost::${COMPONENT} PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" - IMPORTED_LOCATION "${Boost_${UPPERCOMPONENT}_LIBRARY}") - endif() - if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}") - set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY - IMPORTED_CONFIGURATIONS RELEASE) - set_target_properties(Boost::${COMPONENT} PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" - IMPORTED_LOCATION_RELEASE "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}") - endif() - if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}") - set_property(TARGET Boost::${COMPONENT} APPEND PROPERTY - IMPORTED_CONFIGURATIONS DEBUG) - set_target_properties(Boost::${COMPONENT} PROPERTIES - IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" - IMPORTED_LOCATION_DEBUG "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}") - endif() - if(_Boost_${UPPERCOMPONENT}_DEPENDENCIES) - unset(_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES) - foreach(dep ${_Boost_${UPPERCOMPONENT}_DEPENDENCIES}) - list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Boost::${dep}) - endforeach() - if(COMPONENT STREQUAL "thread") - list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES Threads::Threads) - endif() - set_target_properties(Boost::${COMPONENT} PROPERTIES - INTERFACE_LINK_LIBRARIES "${_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES}") + set_target_properties(Boost::boost PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${Boost_INCLUDE_DIRS}") endif() - if(_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES) - set_target_properties(Boost::${COMPONENT} PROPERTIES - INTERFACE_COMPILE_FEATURES "${_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES}") - endif() - endif() endif() - endforeach() + + foreach(COMPONENT ${Boost_FIND_COMPONENTS}) + if(_Boost_IMPORTED_TARGETS AND NOT TARGET Boost::${COMPONENT}) + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + if(Boost_${UPPERCOMPONENT}_FOUND) + if(Boost_USE_STATIC_LIBS) + add_library(Boost::${COMPONENT} STATIC IMPORTED) + else() + # Even if Boost_USE_STATIC_LIBS is OFF, we might have static libraries + # as a result. + add_library(Boost::${COMPONENT} UNKNOWN IMPORTED) + endif() + if(Boost_INCLUDE_DIRS) + set_target_properties( + Boost::${COMPONENT} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES + "${Boost_INCLUDE_DIRS}") + endif() + if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY}") + set_target_properties( + Boost::${COMPONENT} + PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${Boost_${UPPERCOMPONENT}_LIBRARY}") + endif() + if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}") + set_property( + TARGET Boost::${COMPONENT} + APPEND + PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties( + Boost::${COMPONENT} + PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" + IMPORTED_LOCATION_RELEASE + "${Boost_${UPPERCOMPONENT}_LIBRARY_RELEASE}") + endif() + if(EXISTS "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}") + set_property( + TARGET Boost::${COMPONENT} + APPEND + PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties( + Boost::${COMPONENT} + PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" + IMPORTED_LOCATION_DEBUG + "${Boost_${UPPERCOMPONENT}_LIBRARY_DEBUG}") + endif() + if(_Boost_${UPPERCOMPONENT}_DEPENDENCIES) + unset(_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES) + foreach(dep ${_Boost_${UPPERCOMPONENT}_DEPENDENCIES}) + list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES + Boost::${dep}) + endforeach() + if(COMPONENT STREQUAL "thread") + list(APPEND _Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES + Threads::Threads) + endif() + set_target_properties( + Boost::${COMPONENT} + PROPERTIES INTERFACE_LINK_LIBRARIES + "${_Boost_${UPPERCOMPONENT}_TARGET_DEPENDENCIES}") + endif() + if(_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES) + set_target_properties( + Boost::${COMPONENT} + PROPERTIES INTERFACE_COMPILE_FEATURES + "${_Boost_${UPPERCOMPONENT}_COMPILER_FEATURES}") + endif() + endif() + endif() + endforeach() endif() # ------------------------------------------------------------------------ -# Notification to end user about what was found +# Notification to end user about what was found # ------------------------------------------------------------------------ set(Boost_LIBRARIES "") if(Boost_FOUND) - if(NOT Boost_FIND_QUIETLY) - message(STATUS "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}") - if(Boost_FIND_COMPONENTS) - message(STATUS "Found the following Boost libraries:") - endif() - endif() - foreach( COMPONENT ${Boost_FIND_COMPONENTS} ) - string( TOUPPER ${COMPONENT} UPPERCOMPONENT ) - if( Boost_${UPPERCOMPONENT}_FOUND ) - if(NOT Boost_FIND_QUIETLY) - message (STATUS " ${COMPONENT}") - endif() - list(APPEND Boost_LIBRARIES ${Boost_${UPPERCOMPONENT}_LIBRARY}) - if(COMPONENT STREQUAL "thread") - list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) - endif() - endif() - endforeach() -else() - if(Boost_FIND_REQUIRED) - message(SEND_ERROR "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}") - else() if(NOT Boost_FIND_QUIETLY) - # we opt not to automatically output Boost_ERROR_REASON here as - # it could be quite lengthy and somewhat imposing in its requests - # Since Boost is not always a required dependency we'll leave this - # up to the end-user. - if(Boost_DEBUG OR Boost_DETAILED_FAILURE_MSG) - message(STATUS "Could NOT find Boost\n${Boost_ERROR_REASON}") - else() - message(STATUS "Could NOT find Boost") - endif() - endif() - endif() + message( + STATUS + "Boost version: ${Boost_MAJOR_VERSION}.${Boost_MINOR_VERSION}.${Boost_SUBMINOR_VERSION}" + ) + if(Boost_FIND_COMPONENTS) + message(STATUS "Found the following Boost libraries:") + endif() + endif() + foreach(COMPONENT ${Boost_FIND_COMPONENTS}) + string(TOUPPER ${COMPONENT} UPPERCOMPONENT) + if(Boost_${UPPERCOMPONENT}_FOUND) + if(NOT Boost_FIND_QUIETLY) + message(STATUS " ${COMPONENT}") + endif() + list(APPEND Boost_LIBRARIES ${Boost_${UPPERCOMPONENT}_LIBRARY}) + if(COMPONENT STREQUAL "thread") + list(APPEND Boost_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) + endif() + endif() + endforeach() +else() + if(Boost_FIND_REQUIRED) + message( + SEND_ERROR + "Unable to find the requested Boost libraries.\n${Boost_ERROR_REASON}") + else() + if(NOT Boost_FIND_QUIETLY) + # we opt not to automatically output Boost_ERROR_REASON here as it could be + # quite lengthy and somewhat imposing in its requests Since Boost is not + # always a required dependency we'll leave this up to the end-user. + if(Boost_DEBUG OR Boost_DETAILED_FAILURE_MSG) + message(STATUS "Could NOT find Boost\n${Boost_ERROR_REASON}") + else() + message(STATUS "Could NOT find Boost") + endif() + endif() + endif() endif() # Configure display of cache entries in GUI. foreach(v BOOSTROOT BOOST_ROOT ${_Boost_VARS_INC} ${_Boost_VARS_LIB}) - get_property(_type CACHE ${v} PROPERTY TYPE) - if(_type) - set_property(CACHE ${v} PROPERTY ADVANCED 1) - if("x${_type}" STREQUAL "xUNINITIALIZED") - if("x${v}" STREQUAL "xBoost_ADDITIONAL_VERSIONS") - set_property(CACHE ${v} PROPERTY TYPE STRING) - else() - set_property(CACHE ${v} PROPERTY TYPE PATH) - endif() - endif() - endif() + get_property( + _type + CACHE ${v} + PROPERTY TYPE) + if(_type) + set_property(CACHE ${v} PROPERTY ADVANCED 1) + if("x${_type}" STREQUAL "xUNINITIALIZED") + if("x${v}" STREQUAL "xBoost_ADDITIONAL_VERSIONS") + set_property(CACHE ${v} PROPERTY TYPE STRING) + else() + set_property(CACHE ${v} PROPERTY TYPE PATH) + endif() + endif() + endif() endforeach() -# Record last used values of input variables so we can -# detect on the next run if the user changed them. -foreach(v - ${_Boost_VARS_INC} ${_Boost_VARS_LIB} - ${_Boost_VARS_DIR} ${_Boost_VARS_NAME} - ) - if(DEFINED ${v}) - set(_${v}_LAST "${${v}}" CACHE INTERNAL "Last used ${v} value.") - else() - unset(_${v}_LAST CACHE) - endif() +# Record last used values of input variables so we can detect on the next run if the user +# changed them. +foreach(v ${_Boost_VARS_INC} ${_Boost_VARS_LIB} ${_Boost_VARS_DIR} ${_Boost_VARS_NAME}) + if(DEFINED ${v}) + set(_${v}_LAST + "${${v}}" + CACHE INTERNAL "Last used ${v} value.") + else() + unset(_${v}_LAST CACHE) + endif() endforeach() -# Maintain a persistent list of components requested anywhere since -# the last flush. +# Maintain a persistent list of components requested anywhere since the last flush. set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}") list(APPEND _Boost_COMPONENTS_SEARCHED ${Boost_FIND_COMPONENTS}) list(REMOVE_DUPLICATES _Boost_COMPONENTS_SEARCHED) list(SORT _Boost_COMPONENTS_SEARCHED) -set(_Boost_COMPONENTS_SEARCHED "${_Boost_COMPONENTS_SEARCHED}" - CACHE INTERNAL "Components requested for this build tree.") +set(_Boost_COMPONENTS_SEARCHED + "${_Boost_COMPONENTS_SEARCHED}" + CACHE INTERNAL "Components requested for this build tree.") # Restore project's policies cmake_policy(POP) diff --git a/cmake/Modules/FindLibDebuginfod.cmake b/cmake/Modules/FindLibDebuginfod.cmake index 5ab73e2db6..fce581f4e2 100644 --- a/cmake/Modules/FindLibDebuginfod.cmake +++ b/cmake/Modules/FindLibDebuginfod.cmake @@ -28,49 +28,35 @@ find_package(PkgConfig QUIET) pkg_check_modules(PC_Debuginfod QUIET REQUIRED libdebuginfod>=${ElfUtils_MIN_VERSION}) set(LibDebuginfod_VERSION "${PC_Debuginfod_VERSION}") -find_path(LibDebuginfod_INCLUDE_DIRS - NAMES - debuginfod.h - HINTS - ${PC_Debuginfod_INCLUDEDIR} - ${PC_Debuginfod_INCLUDE_DIRS} - ${LibDebuginfod_ROOT_DIR}/include - ${LibDebuginfod_ROOT_DIR} - ${LibDebuginfod_INCLUDEDIR} - PATHS - ${DYNINST_SYSTEM_INCLUDE_PATHS} - PATH_SUFFIXES - ${_path_suffixes} - DOC - "libdebuginfod include directories") +find_path( + LibDebuginfod_INCLUDE_DIRS + NAMES debuginfod.h + HINTS ${PC_Debuginfod_INCLUDEDIR} ${PC_Debuginfod_INCLUDE_DIRS} + ${LibDebuginfod_ROOT_DIR}/include ${LibDebuginfod_ROOT_DIR} + ${LibDebuginfod_INCLUDEDIR} + PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} + PATH_SUFFIXES ${_path_suffixes} + DOC "libdebuginfod include directories") -find_library(LibDebuginfod_LIBRARIES - NAMES - libdebuginfod.so.1 libdebuginfod.so - HINTS - ${PC_Debuginfod_LIBDIR} - ${PC_Debuginfod_LIBRARY_DIRS} - ${LibDebuginfod_ROOT_DIR}/lib - ${LibDebuginfod_ROOT_DIR} - ${LibDebuginfod_LIBRARYDIR} - PATHS - ${DYNINST_SYSTEM_LIBRARY_PATHS} - PATH_SUFFIXES - ${_path_suffixes}) +find_library( + LibDebuginfod_LIBRARIES + NAMES libdebuginfod.so.1 libdebuginfod.so + HINTS ${PC_Debuginfod_LIBDIR} ${PC_Debuginfod_LIBRARY_DIRS} + ${LibDebuginfod_ROOT_DIR}/lib ${LibDebuginfod_ROOT_DIR} + ${LibDebuginfod_LIBRARYDIR} + PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} + PATH_SUFFIXES ${_path_suffixes}) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibDebuginfod - FOUND_VAR - LibDebuginfod_FOUND - REQUIRED_VARS - LibDebuginfod_INCLUDE_DIRS - LibDebuginfod_LIBRARIES - VERSION_VAR - LibDebuginfod_VERSION) +find_package_handle_standard_args( + LibDebuginfod + FOUND_VAR LibDebuginfod_FOUND + REQUIRED_VARS LibDebuginfod_INCLUDE_DIRS LibDebuginfod_LIBRARIES + VERSION_VAR LibDebuginfod_VERSION) if(LibDebuginfod_FOUND) - set(LibDebuginfod_INCLUDE_DIRS ${LibDebuginfod_INCLUDE_DIRS}) - set(LibDebuginfod_LIBRARIES ${LibDebuginfod_LIBRARIES}) - get_filename_component(_debuginfod_dir ${LibDebuginfod_LIBRARIES} DIRECTORY) - set(LibDebuginfod_LIBRARY_DIRS ${_debuginfod_dir} "${_debuginfod_dir}/elfutils") + set(LibDebuginfod_INCLUDE_DIRS ${LibDebuginfod_INCLUDE_DIRS}) + set(LibDebuginfod_LIBRARIES ${LibDebuginfod_LIBRARIES}) + get_filename_component(_debuginfod_dir ${LibDebuginfod_LIBRARIES} DIRECTORY) + set(LibDebuginfod_LIBRARY_DIRS ${_debuginfod_dir} "${_debuginfod_dir}/elfutils") endif() diff --git a/cmake/Modules/FindLibDwarf.cmake b/cmake/Modules/FindLibDwarf.cmake index 5821b2eb9e..e30d9e4620 100644 --- a/cmake/Modules/FindLibDwarf.cmake +++ b/cmake/Modules/FindLibDwarf.cmake @@ -32,36 +32,35 @@ include(DyninstSystemPaths) # Non-standard subdirectories to search set(_path_suffixes libdw libdwarf elfutils) -find_path(LibDwarf_INCLUDE_DIR - NAMES libdw.h - HINTS ${LibDwarf_ROOT_DIR}/include ${LibDwarf_ROOT_DIR} ${LibDwarf_INCLUDEDIR} - PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} - PATH_SUFFIXES ${_path_suffixes} - DOC "libdw include directories") +find_path( + LibDwarf_INCLUDE_DIR + NAMES libdw.h + HINTS ${LibDwarf_ROOT_DIR}/include ${LibDwarf_ROOT_DIR} ${LibDwarf_INCLUDEDIR} + PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} + PATH_SUFFIXES ${_path_suffixes} + DOC "libdw include directories") -find_library(LibDwarf_LIBRARIES - NAMES libdw.so.1 libdw.so - HINTS ${LibDwarf_ROOT_DIR}/lib ${LibDwarf_ROOT_DIR} ${LibDwarf_LIBRARYDIR} - PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} - PATH_SUFFIXES ${_path_suffixes}) +find_library( + LibDwarf_LIBRARIES + NAMES libdw.so.1 libdw.so + HINTS ${LibDwarf_ROOT_DIR}/lib ${LibDwarf_ROOT_DIR} ${LibDwarf_LIBRARYDIR} + PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} + PATH_SUFFIXES ${_path_suffixes}) # Find the library with the highest version set(_max_ver 0.0) set(_max_ver_lib) foreach(l ${LibDwarf_LIBRARIES}) - get_filename_component(_dw_realpath ${LibDwarf_LIBRARIES} REALPATH) - string(REGEX MATCH - "libdw\\-(.+)\\.so\\.*$" - res - ${_dw_realpath}) + get_filename_component(_dw_realpath ${LibDwarf_LIBRARIES} REALPATH) + string(REGEX MATCH "libdw\\-(.+)\\.so\\.*$" res ${_dw_realpath}) - # The library version number is stored in CMAKE_MATCH_1 - set(_cur_ver ${CMAKE_MATCH_1}) + # The library version number is stored in CMAKE_MATCH_1 + set(_cur_ver ${CMAKE_MATCH_1}) - if(${_cur_ver} VERSION_GREATER ${_max_ver}) - set(_max_ver ${_cur_ver}) - set(_max_ver_lib ${l}) - endif() + if(${_cur_ver} VERSION_GREATER ${_max_ver}) + set(_max_ver ${_cur_ver}) + set(_max_ver_lib ${l}) + endif() endforeach() # Set the exported variables to the best match @@ -69,22 +68,19 @@ set(LibDwarf_LIBRARIES ${_max_ver_lib}) set(LibDwarf_VERSION ${_max_ver}) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibDwarf - FOUND_VAR - LibDwarf_FOUND - REQUIRED_VARS - LibDwarf_LIBRARIES - LibDwarf_INCLUDE_DIR - VERSION_VAR - LibDwarf_VERSION) +find_package_handle_standard_args( + LibDwarf + FOUND_VAR LibDwarf_FOUND + REQUIRED_VARS LibDwarf_LIBRARIES LibDwarf_INCLUDE_DIR + VERSION_VAR LibDwarf_VERSION) # Export cache variables if(LibDwarf_FOUND) - set(LibDwarf_INCLUDE_DIRS ${LibDwarf_INCLUDE_DIR}) - set(LibDwarf_LIBRARIES ${LibDwarf_LIBRARIES}) + set(LibDwarf_INCLUDE_DIRS ${LibDwarf_INCLUDE_DIR}) + set(LibDwarf_LIBRARIES ${LibDwarf_LIBRARIES}) - # Because we only report the library with the largest version, we are - # guaranteed there is only one file in LibDwarf_LIBRARIES - get_filename_component(_dw_dir ${LibDwarf_LIBRARIES} DIRECTORY) - set(LibDwarf_LIBRARY_DIRS ${_dw_dir}) + # Because we only report the library with the largest version, we are guaranteed there + # is only one file in LibDwarf_LIBRARIES + get_filename_component(_dw_dir ${LibDwarf_LIBRARIES} DIRECTORY) + set(LibDwarf_LIBRARY_DIRS ${_dw_dir}) endif() diff --git a/cmake/Modules/FindLibElf.cmake b/cmake/Modules/FindLibElf.cmake index f76ead7158..f2bfcf1705 100644 --- a/cmake/Modules/FindLibElf.cmake +++ b/cmake/Modules/FindLibElf.cmake @@ -35,36 +35,35 @@ include(DyninstSystemPaths) # Non-standard subdirectories to search set(_path_suffixes libelf libelfls elfutils) -find_path(LibElf_INCLUDE_DIR - NAMES libelf.h - HINTS ${LibElf_ROOT_DIR}/include ${LibElf_ROOT_DIR} ${LibElf_INCLUDEDIR} - PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} - PATH_SUFFIXES ${_path_suffixes} - DOC "libelf include directories") +find_path( + LibElf_INCLUDE_DIR + NAMES libelf.h + HINTS ${LibElf_ROOT_DIR}/include ${LibElf_ROOT_DIR} ${LibElf_INCLUDEDIR} + PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} + PATH_SUFFIXES ${_path_suffixes} + DOC "libelf include directories") -find_library(LibElf_LIBRARIES - NAMES libelf.so.1 libelf.so - HINTS ${LibElf_ROOT_DIR}/lib ${LibElf_ROOT_DIR} ${LibElf_LIBRARYDIR} - PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} - PATH_SUFFIXES ${_path_suffixes}) +find_library( + LibElf_LIBRARIES + NAMES libelf.so.1 libelf.so + HINTS ${LibElf_ROOT_DIR}/lib ${LibElf_ROOT_DIR} ${LibElf_LIBRARYDIR} + PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} + PATH_SUFFIXES ${_path_suffixes}) # Find the library with the highest version set(_max_ver 0.0) set(_max_ver_lib) foreach(l ${LibElf_LIBRARIES}) - get_filename_component(_elf_realpath ${LibElf_LIBRARIES} REALPATH) - string(REGEX MATCH - "libelf\\-(.+)\\.so\\.*$" - res - ${_elf_realpath}) + get_filename_component(_elf_realpath ${LibElf_LIBRARIES} REALPATH) + string(REGEX MATCH "libelf\\-(.+)\\.so\\.*$" res ${_elf_realpath}) - # The library version number is stored in CMAKE_MATCH_1 - set(_cur_ver ${CMAKE_MATCH_1}) + # The library version number is stored in CMAKE_MATCH_1 + set(_cur_ver ${CMAKE_MATCH_1}) - if(${_cur_ver} VERSION_GREATER ${_max_ver}) - set(_max_ver ${_cur_ver}) - set(_max_ver_lib ${l}) - endif() + if(${_cur_ver} VERSION_GREATER ${_max_ver}) + set(_max_ver ${_cur_ver}) + set(_max_ver_lib ${l}) + endif() endforeach() # Set the exported variables to the best match @@ -72,22 +71,19 @@ set(LibElf_LIBRARIES ${_max_ver_lib}) set(LibElf_VERSION ${_max_ver}) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibElf - FOUND_VAR - LibElf_FOUND - REQUIRED_VARS - LibElf_LIBRARIES - LibElf_INCLUDE_DIR - VERSION_VAR - LibElf_VERSION) +find_package_handle_standard_args( + LibElf + FOUND_VAR LibElf_FOUND + REQUIRED_VARS LibElf_LIBRARIES LibElf_INCLUDE_DIR + VERSION_VAR LibElf_VERSION) # Export cache variables if(LibElf_FOUND) - set(LibElf_INCLUDE_DIRS ${LibElf_INCLUDE_DIR}) - set(LibElf_LIBRARIES ${LibElf_LIBRARIES}) + set(LibElf_INCLUDE_DIRS ${LibElf_INCLUDE_DIR}) + set(LibElf_LIBRARIES ${LibElf_LIBRARIES}) - # Because we only report the library with the largest version, we are - # guaranteed there is only one file in LibElf_LIBRARIES - get_filename_component(_elf_dir ${LibElf_LIBRARIES} DIRECTORY) - set(LibElf_LIBRARY_DIRS ${_elf_dir} "${_elf_dir}/elfutils") + # Because we only report the library with the largest version, we are guaranteed there + # is only one file in LibElf_LIBRARIES + get_filename_component(_elf_dir ${LibElf_LIBRARIES} DIRECTORY) + set(LibElf_LIBRARY_DIRS ${_elf_dir} "${_elf_dir}/elfutils") endif() diff --git a/cmake/Modules/FindLibIberty.cmake b/cmake/Modules/FindLibIberty.cmake index 88b60d1150..8d560e33c5 100644 --- a/cmake/Modules/FindLibIberty.cmake +++ b/cmake/Modules/FindLibIberty.cmake @@ -30,13 +30,13 @@ #======================================================================================== if(LibIberty_FOUND) - return() + return() endif() -# Keep the semantics of IBERTY_LIBRARIES for backward compatibility -# NB: If both are specified, LibIberty_LIBRARIES is ignored +# Keep the semantics of IBERTY_LIBRARIES for backward compatibility NB: If both are +# specified, LibIberty_LIBRARIES is ignored if(NOT "${IBERTY_LIBRARIES}" STREQUAL "") - set(LibIberty_LIBRARIES ${IBERTY_LIBRARIES}) + set(LibIberty_LIBRARIES ${IBERTY_LIBRARIES}) endif() include(DyninstSystemPaths) @@ -44,38 +44,37 @@ include(DyninstSystemPaths) # Non-standard subdirectories to search set(_path_suffixes libiberty iberty) -find_path(LibIberty_INCLUDE_DIRS - NAMES libiberty.h - HINTS ${LibIberty_ROOT_DIR} ${LibIberty_ROOT_DIR}/include ${LibIberty_INCLUDEDIR} - PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} - PATH_SUFFIXES ${_path_suffixes} - DOC "LibIberty include directories") +find_path( + LibIberty_INCLUDE_DIRS + NAMES libiberty.h + HINTS ${LibIberty_ROOT_DIR} ${LibIberty_ROOT_DIR}/include ${LibIberty_INCLUDEDIR} + PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} + PATH_SUFFIXES ${_path_suffixes} + DOC "LibIberty include directories") # iberty_pic is for Debian <= wheezy -find_library(LibIberty_LIBRARIES - NAMES iberty_pic iberty - HINTS ${LibIberty_ROOT_DIR} - ${LibIberty_LIBRARYDIR} - ${IBERTY_LIBRARIES} - PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} - PATH_SUFFIXES ${_path_suffixes}) +find_library( + LibIberty_LIBRARIES + NAMES iberty_pic iberty + HINTS ${LibIberty_ROOT_DIR} ${LibIberty_LIBRARYDIR} ${IBERTY_LIBRARIES} + PATHS ${DYNINST_SYSTEM_LIBRARY_PATHS} + PATH_SUFFIXES ${_path_suffixes}) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LibIberty - FOUND_VAR - LibIberty_FOUND - REQUIRED_VARS - LibIberty_LIBRARIES) +find_package_handle_standard_args( + LibIberty + FOUND_VAR LibIberty_FOUND + REQUIRED_VARS LibIberty_LIBRARIES) # For backwards compatibility only set(IBERTY_FOUND ${LibIberty_FOUND}) if(LibIberty_FOUND) - foreach(l ${LibIberty_LIBRARIES}) - get_filename_component(_dir ${l} DIRECTORY) - list(APPEND LibIberty_LIBRARY_DIRS ${_dir}) - endforeach() - - # For backwards compatibility only - set(IBERTY_LIBRARIES ${LibIberty_LIBRARIES}) + foreach(l ${LibIberty_LIBRARIES}) + get_filename_component(_dir ${l} DIRECTORY) + list(APPEND LibIberty_LIBRARY_DIRS ${_dir}) + endforeach() + + # For backwards compatibility only + set(IBERTY_LIBRARIES ${LibIberty_LIBRARIES}) endif() diff --git a/cmake/Modules/FindTBB.cmake b/cmake/Modules/FindTBB.cmake index 93a9b8c662..cc62ffe166 100644 --- a/cmake/Modules/FindTBB.cmake +++ b/cmake/Modules/FindTBB.cmake @@ -59,7 +59,7 @@ #====================================================================================================== if(TBB_FOUND) - return() + return() endif() include(FindPackageHandleStandardArgs) @@ -68,15 +68,15 @@ include(FindPackageHandleStandardArgs) # Check the build type # if(NOT DEFINED TBB_USE_DEBUG_BUILD) - if(CMAKE_BUILD_TYPE MATCHES "(Debug|DEBUG|debug)") - set(TBB_BUILD_TYPE DEBUG) - else() - set(TBB_BUILD_TYPE RELEASE) - endif() + if(CMAKE_BUILD_TYPE MATCHES "(Debug|DEBUG|debug)") + set(TBB_BUILD_TYPE DEBUG) + else() + set(TBB_BUILD_TYPE RELEASE) + endif() elseif(TBB_USE_DEBUG_BUILD) - set(TBB_BUILD_TYPE DEBUG) + set(TBB_BUILD_TYPE DEBUG) else() - set(TBB_BUILD_TYPE RELEASE) + set(TBB_BUILD_TYPE RELEASE) endif() # @@ -88,167 +88,160 @@ set(TBB_SEARCH_DIR ${TBB_ROOT_DIR} $ENV{TBB_INSTALL_DIR} $ENV{TBBROOT}) # Define the search directories based on the current platform if(CMAKE_SYSTEM_NAME STREQUAL "Windows") - set(TBB_DEFAULT_SEARCH_DIR "C:/Program Files/Intel/TBB" - "C:/Program Files (x86)/Intel/TBB") + set(TBB_DEFAULT_SEARCH_DIR "C:/Program Files/Intel/TBB" + "C:/Program Files (x86)/Intel/TBB") - # Set the target architecture - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - set(TBB_ARCHITECTURE "intel64") - else() - set(TBB_ARCHITECTURE "ia32") - endif() + # Set the target architecture + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(TBB_ARCHITECTURE "intel64") + else() + set(TBB_ARCHITECTURE "ia32") + endif() - # Set the TBB search library path search suffix based on the version of VC - if(WINDOWS_STORE) - set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc11_ui") - elseif(MSVC14) - set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc14") - elseif(MSVC12) - set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc12") - elseif(MSVC11) - set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc11") - elseif(MSVC10) - set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc10") - endif() + # Set the TBB search library path search suffix based on the version of VC + if(WINDOWS_STORE) + set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc11_ui") + elseif(MSVC14) + set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc14") + elseif(MSVC12) + set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc12") + elseif(MSVC11) + set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc11") + elseif(MSVC10) + set(TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc10") + endif() - # Add the library path search suffix for the VC independent version of TBB - list(APPEND TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc_mt") + # Add the library path search suffix for the VC independent version of TBB + list(APPEND TBB_LIB_PATH_SUFFIX "lib/${TBB_ARCHITECTURE}/vc_mt") elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") - # OS X - set(TBB_DEFAULT_SEARCH_DIR "/opt/intel/tbb") + # OS X + set(TBB_DEFAULT_SEARCH_DIR "/opt/intel/tbb") - # TODO: Check to see which C++ library is being used by the compiler. - if(NOT ${CMAKE_SYSTEM_VERSION} VERSION_LESS 13.0) - # The default C++ library on OS X 10.9 and later is libc++ - set(TBB_LIB_PATH_SUFFIX "lib/libc++" "lib") - else() - set(TBB_LIB_PATH_SUFFIX "lib") - endif() + # TODO: Check to see which C++ library is being used by the compiler. + if(NOT ${CMAKE_SYSTEM_VERSION} VERSION_LESS 13.0) + # The default C++ library on OS X 10.9 and later is libc++ + set(TBB_LIB_PATH_SUFFIX "lib/libc++" "lib") + else() + set(TBB_LIB_PATH_SUFFIX "lib") + endif() elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") - # Linux - set(TBB_DEFAULT_SEARCH_DIR "/opt/intel/tbb") + # Linux + set(TBB_DEFAULT_SEARCH_DIR "/opt/intel/tbb") - # TODO: Check compiler version to see the suffix should be /gcc4.1 or - # /gcc4.1. For now, assume that the compiler is more recent than gcc - # 4.4.x or later. - if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") - set(TBB_LIB_PATH_SUFFIX "lib/intel64/gcc4.4") - elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") - set(TBB_LIB_PATH_SUFFIX "lib/ia32/gcc4.4") - endif() + # TODO: Check compiler version to see the suffix should be /gcc4.1 or + # /gcc4.1. For now, assume that the compiler is more recent than gcc 4.4.x or + # later. + if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") + set(TBB_LIB_PATH_SUFFIX "lib/intel64/gcc4.4") + elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$") + set(TBB_LIB_PATH_SUFFIX "lib/ia32/gcc4.4") + endif() endif() # # Find the TBB include dir # -find_path(TBB_INCLUDE_DIRS tbb/tbb.h - HINTS ${TBB_INCLUDE_DIRS} ${TBB_SEARCH_DIR} - PATHS ${TBB_DEFAULT_SEARCH_DIR} - PATH_SUFFIXES include) +find_path( + TBB_INCLUDE_DIRS tbb/tbb.h + HINTS ${TBB_INCLUDE_DIRS} ${TBB_SEARCH_DIR} + PATHS ${TBB_DEFAULT_SEARCH_DIR} + PATH_SUFFIXES include) # # Set version strings # if(TBB_INCLUDE_DIRS) - # Starting in 2020.1.1, tbb_stddef.h is replaced by version.h - set(_version_files - "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" - "${TBB_INCLUDE_DIRS}/tbb/version.h" - ) - foreach(f IN ITEMS ${_version_files}) - if(EXISTS ${f}) - set(_version_file ${f}) - endif() - endforeach() - unset(_version_files) - - file(READ ${_version_file} _tbb_version_file) - string(REGEX - REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" - "\\1" - TBB_VERSION_MAJOR - "${_tbb_version_file}") - string(REGEX - REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" - "\\1" - TBB_VERSION_MINOR - "${_tbb_version_file}") - string(REGEX - REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" - "\\1" - TBB_INTERFACE_VERSION - "${_tbb_version_file}") + # Starting in 2020.1.1, tbb_stddef.h is replaced by version.h + set(_version_files "${TBB_INCLUDE_DIRS}/tbb/tbb_stddef.h" + "${TBB_INCLUDE_DIRS}/tbb/version.h") + foreach(f IN ITEMS ${_version_files}) + if(EXISTS ${f}) + set(_version_file ${f}) + endif() + endforeach() + unset(_version_files) + + file(READ ${_version_file} _tbb_version_file) + string(REGEX REPLACE ".*#define TBB_VERSION_MAJOR ([0-9]+).*" "\\1" TBB_VERSION_MAJOR + "${_tbb_version_file}") + string(REGEX REPLACE ".*#define TBB_VERSION_MINOR ([0-9]+).*" "\\1" TBB_VERSION_MINOR + "${_tbb_version_file}") + string(REGEX REPLACE ".*#define TBB_INTERFACE_VERSION ([0-9]+).*" "\\1" + TBB_INTERFACE_VERSION "${_tbb_version_file}") - # The TBB_VERSION_MINOR isn't necessarily changed for minor releases - # Hence, we need to read the engineering versioning in TBB_INTERFACE_VERSION - # to get the minor version correct - if("${TBB_VERSION_MINOR}" STREQUAL "0") - math(EXPR _tbb_iface_major_ver "${TBB_INTERFACE_VERSION} / 100") - math(EXPR TBB_VERSION_MINOR "${TBB_INTERFACE_VERSION} - ${_tbb_iface_major_ver} * 100") - endif() - set(TBB_VERSION "${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR}") + # The TBB_VERSION_MINOR isn't necessarily changed for minor releases Hence, we need to + # read the engineering versioning in TBB_INTERFACE_VERSION to get the minor version + # correct + if("${TBB_VERSION_MINOR}" STREQUAL "0") + math(EXPR _tbb_iface_major_ver "${TBB_INTERFACE_VERSION} / 100") + math(EXPR TBB_VERSION_MINOR + "${TBB_INTERFACE_VERSION} - ${_tbb_iface_major_ver} * 100") + endif() + set(TBB_VERSION "${TBB_VERSION_MAJOR}.${TBB_VERSION_MINOR}") endif() # # Find TBB components # if(TBB_VERSION VERSION_LESS 4.3) - set(TBB_SEARCH_COMPOMPONENTS tbb_preview tbbmalloc tbb) + set(TBB_SEARCH_COMPOMPONENTS tbb_preview tbbmalloc tbb) else() - set(TBB_SEARCH_COMPOMPONENTS tbb_preview tbbmalloc_proxy tbbmalloc tbb) + set(TBB_SEARCH_COMPOMPONENTS tbb_preview tbbmalloc_proxy tbbmalloc tbb) endif() set(TBB_LIBRARY_DIRS) # Find each component foreach(_comp ${TBB_SEARCH_COMPOMPONENTS}) - message(STATUS "Searching for ${_comp}...") - message(STATUS "Hints: ${TBB_LIBRARY} ${TBB_SEARCH_DIR}") - if(";${TBB_FIND_COMPONENTS};tbb;" MATCHES ";${_comp};") + message(STATUS "Searching for ${_comp}...") + message(STATUS "Hints: ${TBB_LIBRARY} ${TBB_SEARCH_DIR}") + if(";${TBB_FIND_COMPONENTS};tbb;" MATCHES ";${_comp};") - # Search for the libraries - find_library(TBB_${_comp}_LIBRARY_RELEASE ${_comp} - HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR} - PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH - PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX} lib_release) + # Search for the libraries + find_library( + TBB_${_comp}_LIBRARY_RELEASE ${_comp} + HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR} + PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH + PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX} lib_release) - find_library(TBB_${_comp}_LIBRARY_DEBUG ${_comp}_debug - HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR} - PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH - PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX} lib_debug) + find_library( + TBB_${_comp}_LIBRARY_DEBUG ${_comp}_debug + HINTS ${TBB_LIBRARY} ${TBB_SEARCH_DIR} + PATHS ${TBB_DEFAULT_SEARCH_DIR} ENV LIBRARY_PATH + PATH_SUFFIXES ${TBB_LIB_PATH_SUFFIX} lib_debug) - if(TBB_${_comp}_LIBRARY_DEBUG) - list(APPEND TBB_LIBRARIES_DEBUG "${TBB_${_comp}_LIBRARY_DEBUG}") - message(STATUS "Found ${TBB_${_comp}_LIBRARY_DEBUG}") - endif() - if(TBB_${_comp}_LIBRARY_RELEASE) - list(APPEND TBB_LIBRARIES_RELEASE "${TBB_${_comp}_LIBRARY_RELEASE}") - message(STATUS "Found ${TBB_${_comp}_LIBRARY_RELEASE}") - endif() - if(TBB_${_comp}_LIBRARY_${TBB_BUILD_TYPE} AND NOT TBB_${_comp}_LIBRARY) - set(TBB_${_comp}_LIBRARY "${TBB_${_comp}_LIBRARY_${TBB_BUILD_TYPE}}") - endif() + if(TBB_${_comp}_LIBRARY_DEBUG) + list(APPEND TBB_LIBRARIES_DEBUG "${TBB_${_comp}_LIBRARY_DEBUG}") + message(STATUS "Found ${TBB_${_comp}_LIBRARY_DEBUG}") + endif() + if(TBB_${_comp}_LIBRARY_RELEASE) + list(APPEND TBB_LIBRARIES_RELEASE "${TBB_${_comp}_LIBRARY_RELEASE}") + message(STATUS "Found ${TBB_${_comp}_LIBRARY_RELEASE}") + endif() + if(TBB_${_comp}_LIBRARY_${TBB_BUILD_TYPE} AND NOT TBB_${_comp}_LIBRARY) + set(TBB_${_comp}_LIBRARY "${TBB_${_comp}_LIBRARY_${TBB_BUILD_TYPE}}") + endif() - if(TBB_${_comp}_LIBRARY AND EXISTS "${TBB_${_comp}_LIBRARY}") - set(TBB_${_comp}_FOUND TRUE) - else() - set(TBB_${_comp}_FOUND FALSE) - endif() + if(TBB_${_comp}_LIBRARY AND EXISTS "${TBB_${_comp}_LIBRARY}") + set(TBB_${_comp}_FOUND TRUE) + else() + set(TBB_${_comp}_FOUND FALSE) + endif() - # Mark internal variables as advanced - mark_as_advanced(TBB_${_comp}_LIBRARY_RELEASE) - mark_as_advanced(TBB_${_comp}_LIBRARY_DEBUG) - mark_as_advanced(TBB_${_comp}_LIBRARY) + # Mark internal variables as advanced + mark_as_advanced(TBB_${_comp}_LIBRARY_RELEASE) + mark_as_advanced(TBB_${_comp}_LIBRARY_DEBUG) + mark_as_advanced(TBB_${_comp}_LIBRARY) - # Save the directory names for each library component - if(TBB_USE_DEBUG_BUILD) - get_filename_component(_dir ${TBB_${_comp}_LIBRARY_DEBUG} DIRECTORY) - else() - get_filename_component(_dir ${TBB_${_comp}_LIBRARY_RELEASE} DIRECTORY) + # Save the directory names for each library component + if(TBB_USE_DEBUG_BUILD) + get_filename_component(_dir ${TBB_${_comp}_LIBRARY_DEBUG} DIRECTORY) + else() + get_filename_component(_dir ${TBB_${_comp}_LIBRARY_RELEASE} DIRECTORY) + endif() + list(APPEND TBB_LIBRARY_DIRS ${_dir}) endif() - list(APPEND TBB_LIBRARY_DIRS ${_dir}) - endif() endforeach() # @@ -258,53 +251,42 @@ set(TBB_DEFINITIONS_RELEASE "") set(TBB_DEFINITIONS_DEBUG "-DTBB_USE_DEBUG=1") if(TBB_LIBRARIES_${TBB_BUILD_TYPE}) - set(TBB_DEFINITIONS "${TBB_DEFINITIONS_${TBB_BUILD_TYPE}}") - set(TBB_LIBRARIES "${TBB_LIBRARIES_${TBB_BUILD_TYPE}}") + set(TBB_DEFINITIONS "${TBB_DEFINITIONS_${TBB_BUILD_TYPE}}") + set(TBB_LIBRARIES "${TBB_LIBRARIES_${TBB_BUILD_TYPE}}") elseif(TBB_LIBRARIES_RELEASE) - set(TBB_DEFINITIONS "${TBB_DEFINITIONS_RELEASE}") - set(TBB_LIBRARIES "${TBB_LIBRARIES_RELEASE}") + set(TBB_DEFINITIONS "${TBB_DEFINITIONS_RELEASE}") + set(TBB_LIBRARIES "${TBB_LIBRARIES_RELEASE}") elseif(TBB_LIBRARIES_DEBUG) - set(TBB_DEFINITIONS "${TBB_DEFINITIONS_DEBUG}") - set(TBB_LIBRARIES "${TBB_LIBRARIES_DEBUG}") + set(TBB_DEFINITIONS "${TBB_DEFINITIONS_DEBUG}") + set(TBB_LIBRARIES "${TBB_LIBRARIES_DEBUG}") endif() -find_package_handle_standard_args(TBB - REQUIRED_VARS - TBB_INCLUDE_DIRS - TBB_LIBRARIES - HANDLE_COMPONENTS - VERSION_VAR - TBB_VERSION) +find_package_handle_standard_args( + TBB + REQUIRED_VARS TBB_INCLUDE_DIRS TBB_LIBRARIES + HANDLE_COMPONENTS + VERSION_VAR TBB_VERSION) # # Create targets # if(NOT CMAKE_VERSION VERSION_LESS 3.0 AND TBB_FOUND) - add_library(TBB SHARED IMPORTED) - set_target_properties(TBB - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES - ${TBB_INCLUDE_DIRS} - IMPORTED_LOCATION - ${TBB_LIBRARIES}) - if(TBB_LIBRARIES_RELEASE AND TBB_LIBRARIES_DEBUG) - set_target_properties(TBB - PROPERTIES INTERFACE_COMPILE_DEFINITIONS - "$<$:TBB_USE_DEBUG=1>" - IMPORTED_LOCATION_DEBUG - ${TBB_LIBRARIES_DEBUG} - IMPORTED_LOCATION_RELWITHDEBINFO - ${TBB_LIBRARIES_DEBUG} - IMPORTED_LOCATION_RELEASE - ${TBB_LIBRARIES_RELEASE} - IMPORTED_LOCATION_MINSIZEREL - ${TBB_LIBRARIES_RELEASE}) - elseif(TBB_LIBRARIES_RELEASE) - set_target_properties(TBB - PROPERTIES IMPORTED_LOCATION ${TBB_LIBRARIES_RELEASE}) - else() - set_target_properties(TBB - PROPERTIES IMPORTED_LOCATION ${TBB_LIBRARIES_DEBUG}) - endif() + add_library(TBB SHARED IMPORTED) + set_target_properties(TBB PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${TBB_INCLUDE_DIRS} + IMPORTED_LOCATION ${TBB_LIBRARIES}) + if(TBB_LIBRARIES_RELEASE AND TBB_LIBRARIES_DEBUG) + set_target_properties( + TBB + PROPERTIES INTERFACE_COMPILE_DEFINITIONS "$<$:TBB_USE_DEBUG=1>" + IMPORTED_LOCATION_DEBUG ${TBB_LIBRARIES_DEBUG} + IMPORTED_LOCATION_RELWITHDEBINFO ${TBB_LIBRARIES_DEBUG} + IMPORTED_LOCATION_RELEASE ${TBB_LIBRARIES_RELEASE} + IMPORTED_LOCATION_MINSIZEREL ${TBB_LIBRARIES_RELEASE}) + elseif(TBB_LIBRARIES_RELEASE) + set_target_properties(TBB PROPERTIES IMPORTED_LOCATION ${TBB_LIBRARIES_RELEASE}) + else() + set_target_properties(TBB PROPERTIES IMPORTED_LOCATION ${TBB_LIBRARIES_DEBUG}) + endif() endif() mark_as_advanced(TBB_INCLUDE_DIRS TBB_LIBRARIES TBB_LIBRARY_DIRS) diff --git a/cmake/Modules/FindThreadDB.cmake b/cmake/Modules/FindThreadDB.cmake index 35bd118d04..333063e478 100644 --- a/cmake/Modules/FindThreadDB.cmake +++ b/cmake/Modules/FindThreadDB.cmake @@ -7,46 +7,43 @@ # THREAD_DB_DEFINITIONS - Compiler switches required for using thread_db # -if (THREAD_DB_LIBRARIES AND THREAD_DB_INCLUDE_DIRS) - set (Thread_Db_FIND_QUIETLY TRUE) -endif (THREAD_DB_LIBRARIES AND THREAD_DB_INCLUDE_DIRS) +if(THREAD_DB_LIBRARIES AND THREAD_DB_INCLUDE_DIRS) + set(Thread_Db_FIND_QUIETLY TRUE) +endif(THREAD_DB_LIBRARIES AND THREAD_DB_INCLUDE_DIRS) -find_path (THREAD_DB_INCLUDE_DIR - NAMES - thread_db.h - HINTS - ${THREAD_DB_INCLUDE_DIRS} - PATHS - /usr/include - /usr/include/thread_db - /usr/local/include - /opt/local/include - /sw/include - ENV CPATH) # PATH and INCLUDE will also work +find_path( + THREAD_DB_INCLUDE_DIR + NAMES thread_db.h + HINTS ${THREAD_DB_INCLUDE_DIRS} + PATHS /usr/include + /usr/include/thread_db + /usr/local/include + /opt/local/include + /sw/include + ENV + CPATH) # PATH and INCLUDE will also work -find_library (THREAD_DB_LIBRARIES - NAMES - thread_db - HINTS - ${THREAD_DB_LIBRARIES} - PATHS - /usr/lib - /usr/lib64 - /usr/local/lib - /usr/local/lib64 - /opt/local/lib - /opt/local/lib64 - /sw/lib - ENV LIBRARY_PATH # PATH and LIB will also work - ENV LD_LIBRARY_PATH) -include (FindPackageHandleStandardArgs) - - -# handle the QUIETLY and REQUIRED arguments and set THREAD_DB_FOUND to TRUE -# if all listed variables are TRUE -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Thread_Db DEFAULT_MSG +find_library( THREAD_DB_LIBRARIES - THREAD_DB_INCLUDE_DIR) + NAMES thread_db + HINTS ${THREAD_DB_LIBRARIES} + PATHS /usr/lib + /usr/lib64 + /usr/local/lib + /usr/local/lib64 + /opt/local/lib + /opt/local/lib64 + /sw/lib + ENV + LIBRARY_PATH # PATH and LIB will also work + ENV + LD_LIBRARY_PATH) +include(FindPackageHandleStandardArgs) + +# handle the QUIETLY and REQUIRED arguments and set THREAD_DB_FOUND to TRUE if all listed +# variables are TRUE +find_package_handle_standard_args(Thread_Db DEFAULT_MSG THREAD_DB_LIBRARIES + THREAD_DB_INCLUDE_DIR) -#mark_as_advanced(LIBDW_INCLUDE_DIR DWARF_INCLUDE_DIR) -#mark_as_advanced(THREAD_DB_INCLUDE_DIRS THREAD_DB_LIBRARIES) +# mark_as_advanced(LIBDW_INCLUDE_DIR DWARF_INCLUDE_DIR) +# mark_as_advanced(THREAD_DB_INCLUDE_DIRS THREAD_DB_LIBRARIES) diff --git a/cmake/Modules/FindValgrind.cmake b/cmake/Modules/FindValgrind.cmake index e286e671d1..6bd5aa0f6d 100644 --- a/cmake/Modules/FindValgrind.cmake +++ b/cmake/Modules/FindValgrind.cmake @@ -25,21 +25,21 @@ include(DyninstSystemPaths) -find_path(Valgrind_INCLUDE_DIR - NAMES valgrind.h - HINTS ${Valgrind_ROOT_DIR}/include ${Valgrind_ROOT_DIR} ${Valgrind_INCLUDEDIR} - PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} - PATH_SUFFIXES valgrind - DOC "Valgrind include directory") +find_path( + Valgrind_INCLUDE_DIR + NAMES valgrind.h + HINTS ${Valgrind_ROOT_DIR}/include ${Valgrind_ROOT_DIR} ${Valgrind_INCLUDEDIR} + PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} + PATH_SUFFIXES valgrind + DOC "Valgrind include directory") include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Valgrind - FOUND_VAR - Valgrind_FOUND - REQUIRED_VARS - Valgrind_INCLUDE_DIR) +find_package_handle_standard_args( + Valgrind + FOUND_VAR Valgrind_FOUND + REQUIRED_VARS Valgrind_INCLUDE_DIR) # Export cache variables if(Valgrind_FOUND) - set(Valgrind_INCLUDE_DIRS ${Valgrind_INCLUDE_DIR}) + set(Valgrind_INCLUDE_DIRS ${Valgrind_INCLUDE_DIR}) endif() diff --git a/cmake/ThreadingBuildingBlocks.cmake b/cmake/ThreadingBuildingBlocks.cmake index 551f83156c..4e61dcf5c8 100644 --- a/cmake/ThreadingBuildingBlocks.cmake +++ b/cmake/ThreadingBuildingBlocks.cmake @@ -38,139 +38,162 @@ #===================================================================================== if(TBB_FOUND) - return() + return() endif() # -------------- RUNTIME CONFIGURATION ---------------------------------------- # Use debug versions of TBB libraries -set(TBB_USE_DEBUG_BUILD OFF CACHE BOOL "Use debug versions of TBB libraries") +set(TBB_USE_DEBUG_BUILD + OFF + CACHE BOOL "Use debug versions of TBB libraries") # Minimum version of TBB (assumes a dotted-decimal format: YYYY.XX) if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - set(_tbb_min_version 2019.7) + set(_tbb_min_version 2019.7) else() - set(_tbb_min_version 2018.6) + set(_tbb_min_version 2018.6) endif() -set(TBB_MIN_VERSION ${_tbb_min_version} CACHE STRING "Minimum version of TBB (assumes a dotted-decimal format: YYYY.XX)") +set(TBB_MIN_VERSION + ${_tbb_min_version} + CACHE STRING "Minimum version of TBB (assumes a dotted-decimal format: YYYY.XX)") if(${TBB_MIN_VERSION} VERSION_LESS ${_tbb_min_version}) - message( - FATAL_ERROR - "Requested TBB version ${TBB_MIN_VERSION} is less than minimum supported version ${_tbb_min_version}" - ) + message( + FATAL_ERROR + "Requested TBB version ${TBB_MIN_VERSION} is less than minimum supported version ${_tbb_min_version}" + ) endif() # -------------- PATHS -------------------------------------------------------- # TBB root directory -set(TBB_ROOT_DIR "/usr" CACHE PATH "TBB root directory") +set(TBB_ROOT_DIR + "/usr" + CACHE PATH "TBB root directory") # TBB include directory hint -set(TBB_INCLUDEDIR "${TBB_ROOT_DIR}/include" CACHE PATH "TBB include directory") +set(TBB_INCLUDEDIR + "${TBB_ROOT_DIR}/include" + CACHE PATH "TBB include directory") # TBB library directory hint -set(TBB_LIBRARYDIR "${TBB_ROOT_DIR}/lib" CACHE PATH "TBB library directory") +set(TBB_LIBRARYDIR + "${TBB_ROOT_DIR}/lib" + CACHE PATH "TBB library directory") # Translate to FindTBB names set(TBB_LIBRARY ${TBB_LIBRARYDIR}) set(TBB_INCLUDE_DIR ${TBB_INCLUDEDIR}) -# The specific TBB libraries we need -# NB: This should _NOT_ be a cache variable +# The specific TBB libraries we need NB: This should _NOT_ be a cache variable set(_tbb_components tbb tbbmalloc tbbmalloc_proxy) find_package(TBB ${TBB_MIN_VERSION} COMPONENTS ${_tbb_components}) # -------------- SOURCE BUILD ------------------------------------------------- if(TBB_FOUND) - # Force the cache entries to be updated - # Normally, these would not be exported. However, we need them in the Testsuite - set(TBB_INCLUDE_DIRS ${TBB_INCLUDE_DIRS} CACHE PATH "TBB include directory" FORCE) - set(TBB_LIBRARY_DIRS ${TBB_LIBRARY_DIRS} CACHE PATH "TBB library directory" FORCE) - set(TBB_DEFINITIONS ${TBB_DEFINITIONS} CACHE STRING "TBB compiler definitions" FORCE) - set(TBB_LIBRARIES ${TBB_LIBRARIES} CACHE FILEPATH "TBB library files" FORCE) - - if(NOT TARGET TBB) - add_library(TBB SHARED IMPORTED) - endif() + # Force the cache entries to be updated Normally, these would not be exported. + # However, we need them in the Testsuite + set(TBB_INCLUDE_DIRS + ${TBB_INCLUDE_DIRS} + CACHE PATH "TBB include directory" FORCE) + set(TBB_LIBRARY_DIRS + ${TBB_LIBRARY_DIRS} + CACHE PATH "TBB library directory" FORCE) + set(TBB_DEFINITIONS + ${TBB_DEFINITIONS} + CACHE STRING "TBB compiler definitions" FORCE) + set(TBB_LIBRARIES + ${TBB_LIBRARIES} + CACHE FILEPATH "TBB library files" FORCE) + + if(NOT TARGET TBB) + add_library(TBB SHARED IMPORTED) + endif() elseif(NOT TBB_FOUND AND STERILE_BUILD) - message(FATAL_ERROR "TBB not found and cannot be downloaded because build is sterile.") + message( + FATAL_ERROR "TBB not found and cannot be downloaded because build is sterile.") else() - # If we didn't find a suitable version on the system, then download one from the web - message(STATUS "${ThreadingBuildingBlocks_ERROR_REASON}") - message(STATUS "Attempting to build TBB(${TBB_MIN_VERSION}) as external project") - - if(NOT UNIX) - message(FATAL_ERROR "Building TBB from source is not supported on this platform") - endif() - - # Forcibly update the cache variables - set(TBB_ROOT_DIR ${CMAKE_INSTALL_PREFIX} CACHE PATH "TBB root directory" FORCE) - set(TBB_INCLUDE_DIRS ${TBB_ROOT_DIR}/include CACHE PATH "TBB include directory" FORCE) - set(TBB_LIBRARY_DIRS ${TBB_ROOT_DIR}/lib CACHE PATH "TBB library directory" FORCE) - set(TBB_DEFINITIONS "" CACHE STRING "TBB compiler definitions" FORCE) - - set(_tbb_libraries) - set(_tbb_components_cfg) - - foreach(c ${_tbb_components}) - # Generate make target names - if(${c} STREQUAL tbbmalloc_proxy) - # tbbmalloc_proxy is spelled tbbproxy in their Makefiles - list(APPEND _tbb_components_cfg tbbproxy_release) - else() - list(APPEND _tbb_components_cfg ${c}_release) - endif() - - # Generate library filenames - list(APPEND _tbb_libraries "${TBB_LIBRARY_DIRS}/lib${c}.so") - - foreach(t RELEASE DEBUG) - set(TBB_${c}_LIBRARY_${t} "${TBB_LIBRARY_DIRS}/lib${c}.so" CACHE FILEPATH "" FORCE) + # If we didn't find a suitable version on the system, then download one from the web + message(STATUS "${ThreadingBuildingBlocks_ERROR_REASON}") + message(STATUS "Attempting to build TBB(${TBB_MIN_VERSION}) as external project") + + if(NOT UNIX) + message(FATAL_ERROR "Building TBB from source is not supported on this platform") + endif() + + # Forcibly update the cache variables + set(TBB_ROOT_DIR + ${CMAKE_INSTALL_PREFIX} + CACHE PATH "TBB root directory" FORCE) + set(TBB_INCLUDE_DIRS + ${TBB_ROOT_DIR}/include + CACHE PATH "TBB include directory" FORCE) + set(TBB_LIBRARY_DIRS + ${TBB_ROOT_DIR}/lib + CACHE PATH "TBB library directory" FORCE) + set(TBB_DEFINITIONS + "" + CACHE STRING "TBB compiler definitions" FORCE) + + set(_tbb_libraries) + set(_tbb_components_cfg) + + foreach(c ${_tbb_components}) + # Generate make target names + if(${c} STREQUAL tbbmalloc_proxy) + # tbbmalloc_proxy is spelled tbbproxy in their Makefiles + list(APPEND _tbb_components_cfg tbbproxy_release) + else() + list(APPEND _tbb_components_cfg ${c}_release) + endif() + + # Generate library filenames + list(APPEND _tbb_libraries "${TBB_LIBRARY_DIRS}/lib${c}.so") + + foreach(t RELEASE DEBUG) + set(TBB_${c}_LIBRARY_${t} + "${TBB_LIBRARY_DIRS}/lib${c}.so" + CACHE FILEPATH "" FORCE) + endforeach() endforeach() - endforeach() - - set(TBB_LIBRARIES ${_tbb_libraries} CACHE FILEPATH "TBB library files" FORCE) - - # Split the dotted decimal version into major/minor parts - string(REGEX REPLACE "\\." ";" _tbb_download_name ${TBB_MIN_VERSION}) - list(GET _tbb_download_name 0 _tbb_ver_major) - list(GET _tbb_download_name 1 _tbb_ver_minor) - - include(ExternalProject) - set(_tbb_prefix_dir ${CMAKE_BINARY_DIR}/tbb) - - # Set the compiler for TBB - # It assumes gcc and tests for Intel, so clang is the only - # one that needs special treatment. - if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - set(_tbb_compiler "compiler=clang") - endif() - - ExternalProject_Add( - TBB - PREFIX ${_tbb_prefix_dir} - URL https://github.com/01org/tbb/archive/${_tbb_ver_major}_U${_tbb_ver_minor}.tar.gz - BUILD_IN_SOURCE 1 - CONFIGURE_COMMAND "" - BUILD_COMMAND - CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} - $(MAKE) -C src - ${_tbb_components_cfg} - tbb_build_dir=${_tbb_prefix_dir}/src - tbb_build_prefix=tbb - ${_tbb_compiler} - INSTALL_COMMAND - ${CMAKE_COMMAND} - -DLIBDIR=${TBB_LIBRARY_DIRS} - -DINCDIR=${TBB_INCLUDE_DIRS} - -DPREFIX=${_tbb_prefix_dir} - -P ${CMAKE_CURRENT_LIST_DIR}/ThreadingBuildingBlocks.install.cmake - ) + + set(TBB_LIBRARIES + ${_tbb_libraries} + CACHE FILEPATH "TBB library files" FORCE) + + # Split the dotted decimal version into major/minor parts + string(REGEX REPLACE "\\." ";" _tbb_download_name ${TBB_MIN_VERSION}) + list(GET _tbb_download_name 0 _tbb_ver_major) + list(GET _tbb_download_name 1 _tbb_ver_minor) + + include(ExternalProject) + set(_tbb_prefix_dir ${CMAKE_BINARY_DIR}/tbb) + + # Set the compiler for TBB It assumes gcc and tests for Intel, so clang is the only + # one that needs special treatment. + if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") + set(_tbb_compiler "compiler=clang") + endif() + + externalproject_add( + TBB + PREFIX ${_tbb_prefix_dir} + URL https://github.com/01org/tbb/archive/${_tbb_ver_major}_U${_tbb_ver_minor}.tar.gz + BUILD_IN_SOURCE 1 + CONFIGURE_COMMAND "" + BUILD_COMMAND + CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} $(MAKE) -C src + ${_tbb_components_cfg} tbb_build_dir=${_tbb_prefix_dir}/src + tbb_build_prefix=tbb ${_tbb_compiler} + INSTALL_COMMAND + ${CMAKE_COMMAND} -DLIBDIR=${TBB_LIBRARY_DIRS} -DINCDIR=${TBB_INCLUDE_DIRS} + -DPREFIX=${_tbb_prefix_dir} -P + ${CMAKE_CURRENT_LIST_DIR}/ThreadingBuildingBlocks.install.cmake) endif() - + include_directories(SYSTEM ${TBB_INCLUDE_DIRS}) link_directories(${TBB_LIBRARY_DIRS}) diff --git a/cmake/ThreadingBuildingBlocks.install.cmake b/cmake/ThreadingBuildingBlocks.install.cmake index c1043c389e..e1f60c770b 100644 --- a/cmake/ThreadingBuildingBlocks.install.cmake +++ b/cmake/ThreadingBuildingBlocks.install.cmake @@ -11,14 +11,16 @@ ################################################################# file(MAKE_DIRECTORY ${LIBDIR} ${INCDIR}) -file(COPY ${PREFIX}/src/tbb_release/ DESTINATION ${LIBDIR} FILES_MATCHING PATTERN "*.so.*") +file( + COPY ${PREFIX}/src/tbb_release/ + DESTINATION ${LIBDIR} + FILES_MATCHING + PATTERN "*.so.*") file(COPY ${PREFIX}/src/TBB/include/tbb DESTINATION ${INCDIR}) file(GLOB _tbb_libs ${LIBDIR}/libtbb*.so.*) foreach(l ${_tbb_libs}) - string(REGEX REPLACE "\\.2$" "" _l_short ${l}) - execute_process( - COMMAND ${CMAKE_COMMAND} -E create_symlink ${l} ${_l_short} - ) + string(REGEX REPLACE "\\.2$" "" _l_short ${l}) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${l} ${_l_short}) endforeach() diff --git a/cmake/cap_arch_def.cmake b/cmake/cap_arch_def.cmake index 91fa984f55..b36281b905 100644 --- a/cmake/cap_arch_def.cmake +++ b/cmake/cap_arch_def.cmake @@ -4,121 +4,97 @@ # cap_32_64 - This host 64-bit platform supports modifying 32-bit binaries # -set (CAP_DEFINES - -Dcap_dynamic_heap - -Dcap_liveness - -Dcap_threads -) - -if (PLATFORM MATCHES i386) -set (ARCH_DEFINES -Darch_x86) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_fixpoint_gen - -Dcap_noaddr_gen - -Dcap_stripped_binaries - -Dcap_tramp_liveness - -Dcap_virtual_registers - -Dcap_stack_mods - ) - -elseif (PLATFORM MATCHES x86_64 OR PLATFORM MATCHES amd64) -set (ARCH_DEFINES -Darch_x86_64 -Darch_64bit) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_32_64 - -Dcap_fixpoint_gen - -Dcap_noaddr_gen - -Dcap_registers - -Dcap_stripped_binaries - -Dcap_tramp_liveness - -Dcap_stack_mods - ) - -elseif (PLATFORM MATCHES ppc64) - set (ARCH_DEFINES -Darch_power -Darch_64bit) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64") - set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_32_64 - -Dcap_registers - -Dcap_toc_64 - ) -elseif (PLATFORM MATCHES aarch64) - #set (ARCH_DEFINES -Daarch_64 -Darch_64bit) - set (ARCH_DEFINES -Darch_aarch64 -Darch_64bit) - set (CAP_DEFINES ${CAP_DEFINES} -Dcap_registers) -endif (PLATFORM MATCHES i386) - -if (PLATFORM MATCHES linux) -set (OS_DEFINES -Dos_linux) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_async_events - -Dcap_binary_rewriter - -Dcap_dwarf - -Dcap_mutatee_traps - -Dcap_ptrace - ) -set (BUG_DEFINES -Dbug_syscall_changepc_rewind -Dbug_force_terminate_failure) - -elseif (PLATFORM MATCHES freebsd) -set (OS_DEFINES -Dos_freebsd) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_binary_rewriter - -Dcap_dwarf - -Dcap_mutatee_traps - ) -set (BUG_DEFINES -Dbug_freebsd_missing_sigstop - -Dbug_freebsd_mt_suspend - -Dbug_freebsd_change_pc - -Dbug_phdrs_first_page - -Dbug_syscall_changepc_rewind - ) - -elseif (PLATFORM STREQUAL i386-unknown-nt4.0) -set (OS_DEFINES -Dos_windows) -set (CAP_DEFINES ${CAP_DEFINES} - -Dcap_mutatee_traps - ) -endif (PLATFORM MATCHES linux) - - -if (PLATFORM STREQUAL i386-unknown-linux2.4) -set (OLD_DEFINES -Di386_unknown_linux2_0) - -elseif (PLATFORM STREQUAL x86_64-unknown-linux2.4) -set (OLD_DEFINES -Dx86_64_unknown_linux2_4) - -elseif (PLATFORM STREQUAL ppc64_linux) -set (OLD_DEFINES -Dppc64_linux) -set (BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit) - -elseif (PLATFORM STREQUAL i386-unknown-freebsd7.2) -set (OLD_DEFINES -Di386_unknown_freebsd7_0) - -elseif (PLATFORM STREQUAL amd64-unknown-freebsd7.2) -set (OLD_DEFINES -Damd64_unknown_freebsd7_0) - -elseif (PLATFORM STREQUAL i386-unknown-nt4.0) -set (OLD_DEFINES -Di386_unknown_nt4_0) -elseif (PLATFORM STREQUAL aarch64-unknown-linux) - set (OLD_DEFINES -Daarch64_unknown_linux) -else (PLATFORM STREQUAL i386-unknown-linux2.4) - message (FATAL_ERROR "Unknown platform: ${PLATFORM}") -endif (PLATFORM STREQUAL i386-unknown-linux2.4) - -if (THREAD_DB_FOUND) -message (STATUS "-- Enabling ThreadDB support") -set (CAP_DEFINES ${CAP_DEFINES} -Dcap_thread_db) -endif (THREAD_DB_FOUND) - -set (UNIFIED_DEFINES ${CAP_DEFINES} ${BUG_DEFINES} ${ARCH_DEFINES} ${OS_DEFINES} ${OLD_DEFINES}) - -foreach (def ${UNIFIED_DEFINES}) - add_definitions (${def}) +set(CAP_DEFINES -Dcap_dynamic_heap -Dcap_liveness -Dcap_threads) + +if(PLATFORM MATCHES i386) + set(ARCH_DEFINES -Darch_x86) + set(CAP_DEFINES + ${CAP_DEFINES} + -Dcap_fixpoint_gen + -Dcap_noaddr_gen + -Dcap_stripped_binaries + -Dcap_tramp_liveness + -Dcap_virtual_registers + -Dcap_stack_mods) + +elseif(PLATFORM MATCHES x86_64 OR PLATFORM MATCHES amd64) + set(ARCH_DEFINES -Darch_x86_64 -Darch_64bit) + set(CAP_DEFINES + ${CAP_DEFINES} + -Dcap_32_64 + -Dcap_fixpoint_gen + -Dcap_noaddr_gen + -Dcap_registers + -Dcap_stripped_binaries + -Dcap_tramp_liveness + -Dcap_stack_mods) + +elseif(PLATFORM MATCHES ppc64) + set(ARCH_DEFINES -Darch_power -Darch_64bit) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m64") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m64") + set(CAP_DEFINES ${CAP_DEFINES} -Dcap_32_64 -Dcap_registers -Dcap_toc_64) +elseif(PLATFORM MATCHES aarch64) + # set (ARCH_DEFINES -Daarch_64 -Darch_64bit) + set(ARCH_DEFINES -Darch_aarch64 -Darch_64bit) + set(CAP_DEFINES ${CAP_DEFINES} -Dcap_registers) +endif(PLATFORM MATCHES i386) + +if(PLATFORM MATCHES linux) + set(OS_DEFINES -Dos_linux) + set(CAP_DEFINES ${CAP_DEFINES} -Dcap_async_events -Dcap_binary_rewriter -Dcap_dwarf + -Dcap_mutatee_traps -Dcap_ptrace) + set(BUG_DEFINES -Dbug_syscall_changepc_rewind -Dbug_force_terminate_failure) + +elseif(PLATFORM MATCHES freebsd) + set(OS_DEFINES -Dos_freebsd) + set(CAP_DEFINES ${CAP_DEFINES} -Dcap_binary_rewriter -Dcap_dwarf -Dcap_mutatee_traps) + set(BUG_DEFINES + -Dbug_freebsd_missing_sigstop -Dbug_freebsd_mt_suspend -Dbug_freebsd_change_pc + -Dbug_phdrs_first_page -Dbug_syscall_changepc_rewind) + +elseif(PLATFORM STREQUAL i386-unknown-nt4.0) + set(OS_DEFINES -Dos_windows) + set(CAP_DEFINES ${CAP_DEFINES} -Dcap_mutatee_traps) +endif(PLATFORM MATCHES linux) + +if(PLATFORM STREQUAL i386-unknown-linux2.4) + set(OLD_DEFINES -Di386_unknown_linux2_0) + +elseif(PLATFORM STREQUAL x86_64-unknown-linux2.4) + set(OLD_DEFINES -Dx86_64_unknown_linux2_4) + +elseif(PLATFORM STREQUAL ppc64_linux) + set(OLD_DEFINES -Dppc64_linux) + set(BUG_DEFINES ${BUG_DEFINES} -Dbug_registers_after_exit) + +elseif(PLATFORM STREQUAL i386-unknown-freebsd7.2) + set(OLD_DEFINES -Di386_unknown_freebsd7_0) + +elseif(PLATFORM STREQUAL amd64-unknown-freebsd7.2) + set(OLD_DEFINES -Damd64_unknown_freebsd7_0) + +elseif(PLATFORM STREQUAL i386-unknown-nt4.0) + set(OLD_DEFINES -Di386_unknown_nt4_0) +elseif(PLATFORM STREQUAL aarch64-unknown-linux) + set(OLD_DEFINES -Daarch64_unknown_linux) +else(PLATFORM STREQUAL i386-unknown-linux2.4) + message(FATAL_ERROR "Unknown platform: ${PLATFORM}") +endif(PLATFORM STREQUAL i386-unknown-linux2.4) + +if(THREAD_DB_FOUND) + message(STATUS "-- Enabling ThreadDB support") + set(CAP_DEFINES ${CAP_DEFINES} -Dcap_thread_db) +endif(THREAD_DB_FOUND) + +set(UNIFIED_DEFINES ${CAP_DEFINES} ${BUG_DEFINES} ${ARCH_DEFINES} ${OS_DEFINES} + ${OLD_DEFINES}) + +foreach(def ${UNIFIED_DEFINES}) + add_definitions(${def}) endforeach() - -set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${UNIFIED_DEF_STRING}") -set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UNIFIED_DEF_STRING}") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${UNIFIED_DEF_STRING}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${UNIFIED_DEF_STRING}") message(STATUS "Set arch and platform based definitions") - diff --git a/cmake/endian.cmake b/cmake/endian.cmake index c0be21b772..b24c512dee 100644 --- a/cmake/endian.cmake +++ b/cmake/endian.cmake @@ -1,8 +1,8 @@ -INCLUDE(TestBigEndian) +include(TestBigEndian) -TEST_BIG_ENDIAN(BIGENDIAN) +test_big_endian(BIGENDIAN) if(${BIGENDIAN}) - ADD_DEFINITIONS(-DDYNINST_BIG_ENDIAN) + add_definitions(-DDYNINST_BIG_ENDIAN) else() - ADD_DEFINITIONS(-DDYNINST_LITTLE_ENDIAN) + add_definitions(-DDYNINST_LITTLE_ENDIAN) endif(${BIGENDIAN}) diff --git a/cmake/optimization.cmake b/cmake/optimization.cmake index a06912707e..d887c1f049 100644 --- a/cmake/optimization.cmake +++ b/cmake/optimization.cmake @@ -1,56 +1,56 @@ -if (CMAKE_COMPILER_IS_GNUCXX - OR ${CMAKE_C_COMPILER_ID} MATCHES Clang - OR ${CMAKE_C_COMPILER_ID} MATCHES GNU - OR ${CMAKE_C_COMPILER_ID} MATCHES Intel) -if(ENABLE_LTO) - set(LTO_FLAGS "-flto") - set(LTO_LINK_FLAGS "-fuse-ld=bfd") -else() - set(LTO_FLAGS "") - set(LTO_LINK_FLAGS "") -endif() -set (CMAKE_C_FLAGS_DEBUG "-Og -g3") -set (CMAKE_CXX_FLAGS_DEBUG "-Og -g3") - -set (CMAKE_C_FLAGS_RELEASE "-O2 ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_RELEASE "-O2 ${LTO_FLAGS}") - -set (CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}") - -set (CMAKE_C_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}") - -set (FORCE_FRAME_POINTER "-fno-omit-frame-pointer") -# Ensure each library is fully linked -set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") - -set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LTO_LINK_FLAGS}") -set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LTO_LINK_FLAGS}") -else (MSVC) -if(ENABLE_LTO) - set(LTO_FLAGS "/GL") - set(LTO_LINK_FLAGS "/LTCG") -else() - set(LTO_FLAGS "") - set(LTO_LINK_FLAGS "") -endif() -set (CMAKE_C_FLAGS_DEBUG "/MP /Od /Zi /MDd /D_DEBUG") -set (CMAKE_CXX_FLAGS_DEBUG "/MP /Od /Zi /MDd /D_DEBUG") - -set (CMAKE_C_FLAGS_RELEASE "/MP /O2 /MD ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_RELEASE "/MP /O2 /MD ${LTO_FLAGS}") - -set (CMAKE_C_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD ${LTO_FLAGS}") - -set (CMAKE_C_FLAGS_MINSIZEREL "/MP /O1 /MD ${LTO_FLAGS}") -set (CMAKE_CXX_FLAGS_MINSIZEREL "/MP /O1 /MD ${LTO_FLAGS}") - -set (FORCE_FRAME_POINTER "/Oy-") - -set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LTO_LINK_FLAGS}") -set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LTO_LINK_FLAGS}") -set (CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LTO_LINK_FLAGS}") +if(CMAKE_COMPILER_IS_GNUCXX + OR ${CMAKE_C_COMPILER_ID} MATCHES Clang + OR ${CMAKE_C_COMPILER_ID} MATCHES GNU + OR ${CMAKE_C_COMPILER_ID} MATCHES Intel) + if(ENABLE_LTO) + set(LTO_FLAGS "-flto") + set(LTO_LINK_FLAGS "-fuse-ld=bfd") + else() + set(LTO_FLAGS "") + set(LTO_LINK_FLAGS "") + endif() + set(CMAKE_C_FLAGS_DEBUG "-Og -g3") + set(CMAKE_CXX_FLAGS_DEBUG "-Og -g3") + + set(CMAKE_C_FLAGS_RELEASE "-O2 ${LTO_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "-O2 ${LTO_FLAGS}") + + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g3 ${LTO_FLAGS}") + + set(CMAKE_C_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}") + set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os ${LTO_FLAGS}") + + set(FORCE_FRAME_POINTER "-fno-omit-frame-pointer") + # Ensure each library is fully linked + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined") + + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LTO_LINK_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LTO_LINK_FLAGS}") +else(MSVC) + if(ENABLE_LTO) + set(LTO_FLAGS "/GL") + set(LTO_LINK_FLAGS "/LTCG") + else() + set(LTO_FLAGS "") + set(LTO_LINK_FLAGS "") + endif() + set(CMAKE_C_FLAGS_DEBUG "/MP /Od /Zi /MDd /D_DEBUG") + set(CMAKE_CXX_FLAGS_DEBUG "/MP /Od /Zi /MDd /D_DEBUG") + + set(CMAKE_C_FLAGS_RELEASE "/MP /O2 /MD ${LTO_FLAGS}") + set(CMAKE_CXX_FLAGS_RELEASE "/MP /O2 /MD ${LTO_FLAGS}") + + set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD ${LTO_FLAGS}") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MP /O2 /Zi /MD ${LTO_FLAGS}") + + set(CMAKE_C_FLAGS_MINSIZEREL "/MP /O1 /MD ${LTO_FLAGS}") + set(CMAKE_CXX_FLAGS_MINSIZEREL "/MP /O1 /MD ${LTO_FLAGS}") + + set(FORCE_FRAME_POINTER "/Oy-") + + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LTO_LINK_FLAGS}") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LTO_LINK_FLAGS}") + set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} ${LTO_LINK_FLAGS}") endif() message(STATUS "Set optimization flags") diff --git a/cmake/options.cmake b/cmake/options.cmake index 35ec0779e0..7cbe66bcb2 100644 --- a/cmake/options.cmake +++ b/cmake/options.cmake @@ -1,27 +1,30 @@ # Use OpenMP? -option (USE_OpenMP "Use OpenMP for parallel parsing" ON) +option(USE_OpenMP "Use OpenMP for parallel parsing" ON) # Use SymtabAPI or SymLite? -option (LIGHTWEIGHT_SYMTAB "Use lightweight symtab interface for ParseAPI, ProcControl, and Stackwalker; disables DyninstAPI build" OFF) +option( + LIGHTWEIGHT_SYMTAB + "Use lightweight symtab interface for ParseAPI, ProcControl, and Stackwalker; disables DyninstAPI build" + OFF) # Use ParseAPI analysis in Stackwalker? -option (SW_ANALYSIS_STEPPER "Use ParseAPI-based analysis stepper in Stackwalker" ON) +option(SW_ANALYSIS_STEPPER "Use ParseAPI-based analysis stepper in Stackwalker" ON) -option (BUILD_RTLIB_32 "Build 32-bit runtime library on mixed 32/64 systems" OFF) +option(BUILD_RTLIB_32 "Build 32-bit runtime library on mixed 32/64 systems" OFF) -option (ENABLE_LTO "Enable Link-Time Optimization" OFF) +option(ENABLE_LTO "Enable Link-Time Optimization" OFF) option(ENABLE_DEBUGINFOD "Enable debuginfod support" OFF) # Some global on/off switches -if (LIGHTWEIGHT_SYMTAB) -add_definitions (-DWITHOUT_SYMTAB_API -DWITH_SYMLITE) +if(LIGHTWEIGHT_SYMTAB) + add_definitions(-DWITHOUT_SYMTAB_API -DWITH_SYMLITE) else() -add_definitions (-DWITH_SYMTAB_API -DWITHOUT_SYMLITE) + add_definitions(-DWITH_SYMTAB_API -DWITHOUT_SYMLITE) endif() -if (SW_ANALYSIS_STEPPER) -add_definitions (-DUSE_PARSE_API) +if(SW_ANALYSIS_STEPPER) + add_definitions(-DUSE_PARSE_API) endif() message(STATUS "Options set") diff --git a/cmake/platform.cmake b/cmake/platform.cmake index 02627009dc..5976700510 100644 --- a/cmake/platform.cmake +++ b/cmake/platform.cmake @@ -1,5 +1,5 @@ -if (UNIX) -include (${DYNINST_ROOT}/cmake/platform_unix.cmake) -else () -include (${DYNINST_ROOT}/cmake/platform_windows.cmake) +if(UNIX) + include(${DYNINST_ROOT}/cmake/platform_unix.cmake) +else() + include(${DYNINST_ROOT}/cmake/platform_windows.cmake) endif() diff --git a/cmake/platform_unix.cmake b/cmake/platform_unix.cmake index 7b1bea840c..4709fe8eb2 100644 --- a/cmake/platform_unix.cmake +++ b/cmake/platform_unix.cmake @@ -1,39 +1,34 @@ -set (PLATFORM $ENV{PLATFORM}) +set(PLATFORM $ENV{PLATFORM}) message(STATUS "-- Input platform: ${PLATFORM}") -set (VALID_PLATFORMS - amd64-unknown-freebsd7.2 - i386-unknown-freebsd7.2 - i386-unknown-linux2.4 - ppc64_linux - x86_64-unknown-linux2.4 - aarch64-unknown-linux - ) +set(VALID_PLATFORMS + amd64-unknown-freebsd7.2 i386-unknown-freebsd7.2 i386-unknown-linux2.4 ppc64_linux + x86_64-unknown-linux2.4 aarch64-unknown-linux) -if (NOT PLATFORM) -set (INVALID_PLATFORM true) +if(NOT PLATFORM) + set(INVALID_PLATFORM true) else() -list (FIND VALID_PLATFORMS ${PLATFORM} PLATFORM_FOUND) - if (PLATFORM_FOUND EQUAL -1) - set (INVALID_PLATFORM true) - endif() + list(FIND VALID_PLATFORMS ${PLATFORM} PLATFORM_FOUND) + if(PLATFORM_FOUND EQUAL -1) + set(INVALID_PLATFORM true) + endif() endif() - -execute_process (COMMAND ${DYNINST_ROOT}/scripts/sysname OUTPUT_VARIABLE SYSNAME_OUT) +execute_process(COMMAND ${DYNINST_ROOT}/scripts/sysname OUTPUT_VARIABLE SYSNAME_OUT) string(REPLACE "\n" "" SYSPLATFORM ${SYSNAME_OUT}) -if (INVALID_PLATFORM) -# Try to set it automatically -execute_process (COMMAND ${DYNINST_ROOT}/scripts/dynsysname ${SYSNAME_OUT} - OUTPUT_VARIABLE DYNSYSNAME_OUT - ) -string (REPLACE "\n" "" PLATFORM ${DYNSYSNAME_OUT}) -message (STATUS "-- Attempting to automatically identify platform: ${PLATFORM}") +if(INVALID_PLATFORM) + # Try to set it automatically + execute_process(COMMAND ${DYNINST_ROOT}/scripts/dynsysname ${SYSNAME_OUT} + OUTPUT_VARIABLE DYNSYSNAME_OUT) + string(REPLACE "\n" "" PLATFORM ${DYNSYSNAME_OUT}) + message(STATUS "-- Attempting to automatically identify platform: ${PLATFORM}") endif() -list (FIND VALID_PLATFORMS ${PLATFORM} PLATFORM_FOUND) +list(FIND VALID_PLATFORMS ${PLATFORM} PLATFORM_FOUND) -if (PLATFORM_FOUND EQUAL -1) -message (FATAL_ERROR "Error: unknown platform ${PLATFORM}; please set the PLATFORM environment variable to one of the following options: ${VALID_PLATFORMS}") +if(PLATFORM_FOUND EQUAL -1) + message( + FATAL_ERROR + "Error: unknown platform ${PLATFORM}; please set the PLATFORM environment variable to one of the following options: ${VALID_PLATFORMS}" + ) endif() - diff --git a/cmake/platform_windows.cmake b/cmake/platform_windows.cmake index dd03b4ebbb..6fa44dd691 100644 --- a/cmake/platform_windows.cmake +++ b/cmake/platform_windows.cmake @@ -1 +1 @@ -set (PLATFORM i386-unknown-nt4.0) +set(PLATFORM i386-unknown-nt4.0) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index a95a9d4ba5..5c9a39355a 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,131 +1,162 @@ -set (DYNINST_MAJOR_VERSION 12) -set (DYNINST_MINOR_VERSION 1) -set (DYNINST_PATCH_VERSION 0) +set(DYNINST_MAJOR_VERSION 12) +set(DYNINST_MINOR_VERSION 1) +set(DYNINST_PATCH_VERSION 0) -set (SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") -set (LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") -set (DYNINST_VERSION "${LIBVERSION}") +set(SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") +set(LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") +set(DYNINST_VERSION "${LIBVERSION}") if(CMAKE_CONFIGURATION_TYPES) - set(CMAKE_CONFIGURATION_TYPES Debug Release) - set(CMAKE_CONFIGURATION_TYPES "${CMAKE_CONFIGURATION_TYPES}" CACHE STRING - "Reset the available configurations to exclude MinSizeRel and RelWithDebugInfo" FORCE) + set(CMAKE_CONFIGURATION_TYPES Debug Release) + set(CMAKE_CONFIGURATION_TYPES + "${CMAKE_CONFIGURATION_TYPES}" + CACHE + STRING + "Reset the available configurations to exclude MinSizeRel and RelWithDebugInfo" + FORCE) endif() -if (LIGHTWEIGHT_SYMTAB) - set(SYMREADER symLite) +if(LIGHTWEIGHT_SYMTAB) + set(SYMREADER symLite) else() - set(SYMREADER symtabAPI) + set(SYMREADER symtabAPI) endif() # Link libraries privately when possible -function (target_link_private_libraries target) - if(${CMAKE_VERSION} VERSION_LESS "2.8.7") - target_link_libraries (${target} ${ARGN}) - else() - target_link_libraries (${target} LINK_PRIVATE ${ARGN}) - endif() -endfunction () - -set(ALL_DYNINST_TARGETS "" CACHE INTERNAL "") - -function (dyninst_library target) - add_library (${target} ${SRC_LIST}) - # add boost as a universal dependencies for all sub libraries - if(TARGET boost) - add_dependencies (${target} boost) - endif() - target_link_private_libraries (${target} ${ARGN}) - FILE (GLOB headers "h/*.h" "${CMAKE_CURRENT_BINARY_DIR}/h/*.h") - set (ACTUAL_TARGETS ${target}) - set (ALL_TARGETS "${ARGN};${target}") - if(${ENABLE_STATIC_LIBS}) - set (ACTUAL_TARGETS ${ACTUAL_TARGETS} ${target}_static) - add_library (${target}_static STATIC ${SRC_LIST}) - endif() - message(STATUS "Building ${ACTUAL_TARGETS}...") - set_target_properties (${ACTUAL_TARGETS} PROPERTIES PUBLIC_HEADER "${headers}") - set_target_properties (${ACTUAL_TARGETS} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - set_target_properties (${target} PROPERTIES SOVERSION ${SOVERSION} VERSION ${LIBVERSION} CLEAN_DIRECT_OUTPUT 1) - set (INSTALL_TARGETS ${ACTUAL_TARGETS}) - foreach (dep ${ARGN}) - message(STATUS "Processing dependent target ${dep}...") - if(TARGET ${dep}) - get_target_property(dep_dir ${dep} LIBRARY_OUTPUT_DIRECTORY) - if(EXISTS ${dep_dir} AND IS_DIRECTORY ${dep_dir}) - message(STATUS "Found dependency location ${dep_dir}") - install(SCRIPT ${dep_dir}/cmake_install.cmake) - endif() +function(target_link_private_libraries target) + if(${CMAKE_VERSION} VERSION_LESS "2.8.7") + target_link_libraries(${target} ${ARGN}) + else() + target_link_libraries(${target} LINK_PRIVATE ${ARGN}) endif() - endforeach() - install (TARGETS ${INSTALL_TARGETS} - EXPORT ${target}Targets - COMPONENT ${target} - RUNTIME DESTINATION ${INSTALL_LIB_DIR} - LIBRARY DESTINATION ${INSTALL_LIB_DIR} - ARCHIVE DESTINATION ${INSTALL_LIB_DIR} - PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) - add_custom_target(${target}-install - DEPENDS ${target} - COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake" - ) - set(ALL_DYNINST_TARGETS "${ALL_DYNINST_TARGETS};${target}" CACHE INTERNAL "") - install (EXPORT ${target}Targets - DESTINATION "${INSTALL_CMAKE_DIR}") - configure_file("${DYNINST_ROOT}/cmake/${PROJECT_NAME}Config.cmake.in" "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake" @ONLY) - configure_file("${DYNINST_ROOT}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in" "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}ConfigVersion.cmake" @ONLY) - install (FILES - "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake" - "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}ConfigVersion.cmake" - DESTINATION "${INSTALL_CMAKE_DIR}") endfunction() +set(ALL_DYNINST_TARGETS + "" + CACHE INTERNAL "") -include (${DYNINST_ROOT}/cmake/platform.cmake) -include (${DYNINST_ROOT}/cmake/cap_arch_def.cmake) -include (${DYNINST_ROOT}/cmake/visibility.cmake) -include (${DYNINST_ROOT}/cmake/warnings.cmake) -include (${DYNINST_ROOT}/cmake/options.cmake) -include (${DYNINST_ROOT}/cmake/optimization.cmake) -include (${DYNINST_ROOT}/cmake/endian.cmake) - -set (BUILD_SHARED_LIBS ON) +function(dyninst_library target) + add_library(${target} ${SRC_LIST}) + # add boost as a universal dependencies for all sub libraries + if(TARGET boost) + add_dependencies(${target} boost) + endif() + target_link_private_libraries(${target} ${ARGN}) + file(GLOB headers "h/*.h" "${CMAKE_CURRENT_BINARY_DIR}/h/*.h") + set(ACTUAL_TARGETS ${target}) + set(ALL_TARGETS "${ARGN};${target}") + if(${ENABLE_STATIC_LIBS}) + set(ACTUAL_TARGETS ${ACTUAL_TARGETS} ${target}_static) + add_library(${target}_static STATIC ${SRC_LIST}) + endif() + message(STATUS "Building ${ACTUAL_TARGETS}...") + set_target_properties(${ACTUAL_TARGETS} PROPERTIES PUBLIC_HEADER "${headers}") + set_target_properties(${ACTUAL_TARGETS} PROPERTIES LIBRARY_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + set_target_properties( + ${target} + PROPERTIES SOVERSION ${SOVERSION} + VERSION ${LIBVERSION} + CLEAN_DIRECT_OUTPUT 1) + set(INSTALL_TARGETS ${ACTUAL_TARGETS}) + foreach(dep ${ARGN}) + message(STATUS "Processing dependent target ${dep}...") + if(TARGET ${dep}) + get_target_property(dep_dir ${dep} LIBRARY_OUTPUT_DIRECTORY) + if(EXISTS ${dep_dir} AND IS_DIRECTORY ${dep_dir}) + message(STATUS "Found dependency location ${dep_dir}") + install(SCRIPT ${dep_dir}/cmake_install.cmake) + endif() + endif() + endforeach() + install( + TARGETS ${INSTALL_TARGETS} + EXPORT ${target}Targets + COMPONENT ${target} + RUNTIME DESTINATION ${INSTALL_LIB_DIR} + LIBRARY DESTINATION ${INSTALL_LIB_DIR} + ARCHIVE DESTINATION ${INSTALL_LIB_DIR} + PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) + add_custom_target( + ${target}-install + DEPENDS ${target} + COMMAND "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_install.cmake") + set(ALL_DYNINST_TARGETS + "${ALL_DYNINST_TARGETS};${target}" + CACHE INTERNAL "") + install(EXPORT ${target}Targets DESTINATION "${INSTALL_CMAKE_DIR}") + configure_file( + "${DYNINST_ROOT}/cmake/${PROJECT_NAME}Config.cmake.in" + "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake" + @ONLY) + configure_file( + "${DYNINST_ROOT}/cmake/${PROJECT_NAME}ConfigVersion.cmake.in" + "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}ConfigVersion.cmake" + @ONLY) + install( + FILES + "${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake" + "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION "${INSTALL_CMAKE_DIR}") +endfunction() -set (INSTALL_BIN_DIR bin CACHE PATH "Installation directory for executables") -set (INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries") -set (INSTALL_INCLUDE_DIR include CACHE PATH "Installation directory for header files") -set (INSTALL_CMAKE_DIR lib/cmake/${PROJECT_NAME} CACHE PATH "Installation directory for CMake files") -set (INSTALL_DOC_DIR share/doc CACHE PATH "Installation directory for manuals") +include(${DYNINST_ROOT}/cmake/platform.cmake) +include(${DYNINST_ROOT}/cmake/cap_arch_def.cmake) +include(${DYNINST_ROOT}/cmake/visibility.cmake) +include(${DYNINST_ROOT}/cmake/warnings.cmake) +include(${DYNINST_ROOT}/cmake/options.cmake) +include(${DYNINST_ROOT}/cmake/optimization.cmake) +include(${DYNINST_ROOT}/cmake/endian.cmake) + +set(BUILD_SHARED_LIBS ON) + +set(INSTALL_BIN_DIR + bin + CACHE PATH "Installation directory for executables") +set(INSTALL_LIB_DIR + lib + CACHE PATH "Installation directory for libraries") +set(INSTALL_INCLUDE_DIR + include + CACHE PATH "Installation directory for header files") +set(INSTALL_CMAKE_DIR + lib/cmake/${PROJECT_NAME} + CACHE PATH "Installation directory for CMake files") +set(INSTALL_DOC_DIR + share/doc + CACHE PATH "Installation directory for manuals") # Make the above absolute paths if necessary -foreach (p BIN LIB INCLUDE CMAKE) - set (var INSTALL_${p}_DIR) - if (NOT IS_ABSOLUTE "${${var}}") - set (${var} "${CMAKE_INSTALL_PREFIX}/${${var}}") - endif() +foreach(p BIN LIB INCLUDE CMAKE) + set(var INSTALL_${p}_DIR) + if(NOT IS_ABSOLUTE "${${var}}") + set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}") + endif() endforeach() if(PLATFORM MATCHES nt OR PLATFORM MATCHES windows) - add_definitions(-DWIN32_LEAN_AND_MEAN) - if (CMAKE_C_COMPILER_VERSION VERSION_GREATER 19) - add_definitions(-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1) - else() - add_definitions(-Dsnprintf=_snprintf) - endif() + add_definitions(-DWIN32_LEAN_AND_MEAN) + if(CMAKE_C_COMPILER_VERSION VERSION_GREATER 19) + add_definitions(-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS=1) + else() + add_definitions(-Dsnprintf=_snprintf) + endif() endif() # # DyninstConfig.cmake -file (RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}") +file(RELATIVE_PATH REL_INCLUDE_DIR "${INSTALL_CMAKE_DIR}" "${INSTALL_INCLUDE_DIR}") # For the install tree -set (CONF_INCLUDE_DIRS "\${DYNINST_CMAKE_DIR}/${REL_INCLUDE_DIR}") +set(CONF_INCLUDE_DIRS "\${DYNINST_CMAKE_DIR}/${REL_INCLUDE_DIR}") # set default configuration type -if (NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING - "Choose the build type (None, Debug, Release, RelWithDebInfo, MinSizeRel)" FORCE) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE + RelWithDebInfo + CACHE STRING + "Choose the build type (None, Debug, Release, RelWithDebInfo, MinSizeRel)" + FORCE) endif() - diff --git a/cmake/visibility.cmake b/cmake/visibility.cmake index e9935e0041..035598fca0 100644 --- a/cmake/visibility.cmake +++ b/cmake/visibility.cmake @@ -1,5 +1,6 @@ -if(CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_C_COMPILER_ID} MATCHES Clang) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden") +if(CMAKE_COMPILER_IS_GNUCXX OR ${CMAKE_C_COMPILER_ID} MATCHES Clang) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") + set(CMAKE_CXX_FLAGS + "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden") message(STATUS "Found g++, enabling -fvisibility=hidden") endif() diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index f9f5c7f827..1b55898ff9 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -2,174 +2,184 @@ # cmake warning options # -option(DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS "Disable all warning suppressions and frame size overrides." OFF) - -set(DYNINST_EXTRA_WARNINGS "" CACHE STRING "Additional warning options to enable if available. ;-separated without leading '-' (Wopt1[;Wopt2]...).") +option(DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS + "Disable all warning suppressions and frame size overrides." OFF) + +set(DYNINST_EXTRA_WARNINGS + "" + CACHE + STRING + "Additional warning options to enable if available. ;-separated without leading '-' (Wopt1[;Wopt2]...)." + ) option(DYNINST_WARNINGS_AS_ERRORS "Treat compilation warnings as errors" OFF) - -if (DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) - add_definitions(-DDYNINST_DIAGNOSTIC_NO_SUPPRESSIONS) - message(STATUS "DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS set: disabling all dyninst warning suppressions and frame size overrides") +if(DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) + add_definitions(-DDYNINST_DIAGNOSTIC_NO_SUPPRESSIONS) + message( + STATUS + "DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS set: disabling all dyninst warning suppressions and frame size overrides" + ) endif() - -# Frame sizes are larger for debug build, so adjust based on build type -# files with functions containing large frames are adjust below -# (the value could be made significantly maller if more files are adjusted). +# Frame sizes are larger for debug build, so adjust based on build type files with +# functions containing large frames are adjust below (the value could be made +# significantly maller if more files are adjusted). # set(defaultDebugMaxFrameSize 24576) set(defaultNonDebugMaxFrameSize 20480) - -# REQUESTED_WARNING_FLAGS is a list of warning flags for C and C++ programs -# to enable if supported by the compiler. The values do not include the -# the initial '-' - -list(APPEND REQUESTED_WARNING_FLAGS - Wall - Wextra - Wpedantic - - Walloca - Wcast-align - Wcast-qual - Wcomma-subscript - Wctor-dtor-privacy - Wdeprecated-copy-dtor - Wdouble-promotion - Wduplicated-branches - Wduplicated-cond - Wenum-conversion - Wextra-semi - Wfloat-equal - Wformat-overflow=2 - Wformat-signedness - Wformat=2 - Wframe-larger-than=${defaultNonDebugMaxFrameSize} - Wjump-misses-init - Wlogical-op - Wmismatched-tags - Wmissing-braces - Wmultichar - Wnoexcept - Wnon-virtual-dtor - Woverloaded-virtual - Wpointer-arith - Wrange-loop-construct - Wrestrict - Wshadow - Wstrict-null-sentinel - Wsuggest-attribute=format - Wsuggest-attribute=malloc - Wuninitialized - Wvla - Wvolatile - Wwrite-strings - ) - -#list(APPEND REQUESTED_WARNING_FLAGS Werror) - -#list(APPEND REQUESTED_WARNING_FLAGS Wredundant-tags) -#list(APPEND REQUESTED_WARNING_FLAGS Wnull-dereference) -#list(APPEND REQUESTED_WARNING_FLAGS Wconversion) -#list(APPEND REQUESTED_WARNING_FLAGS Wzero-as-null-pointer-constant) -#list(APPEND REQUESTED_WARNING_FLAGS Wuseless-cast) -#list(APPEND REQUESTED_WARNING_FLAGS Wsuggest-override) -#list(APPEND REQUESTED_WARNING_FLAGS Wsuggest-final-types) -#list(APPEND REQUESTED_WARNING_FLAGS Wsuggest-final-methods) -#list(APPEND REQUESTED_WARNING_FLAGS Wsign-promo) -#list(APPEND REQUESTED_WARNING_FLAGS Wold-style-cast) -#list(APPEND REQUESTED_WARNING_FLAGS Walloc-zero) - -if (DYNINST_EXTRA_WARNINGS) +# REQUESTED_WARNING_FLAGS is a list of warning flags for C and C++ programs to enable if +# supported by the compiler. The values do not include the the initial '-' + +list( + APPEND + REQUESTED_WARNING_FLAGS + Wall + Wextra + Wpedantic + Walloca + Wcast-align + Wcast-qual + Wcomma-subscript + Wctor-dtor-privacy + Wdeprecated-copy-dtor + Wdouble-promotion + Wduplicated-branches + Wduplicated-cond + Wenum-conversion + Wextra-semi + Wfloat-equal + Wformat-overflow=2 + Wformat-signedness + Wformat=2 + Wframe-larger-than=${defaultNonDebugMaxFrameSize} + Wjump-misses-init + Wlogical-op + Wmismatched-tags + Wmissing-braces + Wmultichar + Wnoexcept + Wnon-virtual-dtor + Woverloaded-virtual + Wpointer-arith + Wrange-loop-construct + Wrestrict + Wshadow + Wstrict-null-sentinel + Wsuggest-attribute=format + Wsuggest-attribute=malloc + Wuninitialized + Wvla + Wvolatile + Wwrite-strings) + +# list(APPEND REQUESTED_WARNING_FLAGS Werror) + +# list(APPEND REQUESTED_WARNING_FLAGS Wredundant-tags) list(APPEND REQUESTED_WARNING_FLAGS +# Wnull-dereference) list(APPEND REQUESTED_WARNING_FLAGS Wconversion) list(APPEND +# REQUESTED_WARNING_FLAGS Wzero-as-null-pointer-constant) list(APPEND +# REQUESTED_WARNING_FLAGS Wuseless-cast) list(APPEND REQUESTED_WARNING_FLAGS +# Wsuggest-override) list(APPEND REQUESTED_WARNING_FLAGS Wsuggest-final-types) list(APPEND +# REQUESTED_WARNING_FLAGS Wsuggest-final-methods) list(APPEND REQUESTED_WARNING_FLAGS +# Wsign-promo) list(APPEND REQUESTED_WARNING_FLAGS Wold-style-cast) list(APPEND +# REQUESTED_WARNING_FLAGS Walloc-zero) + +if(DYNINST_EXTRA_WARNINGS) list(APPEND REQUESTED_WARNING_FLAGS ${DYNINST_EXTRA_WARNINGS}) - message(STATUS "DYNINST_EXTRA_WARNINGS set, adding extra warnings: ${DYNINST_EXTRA_WARNINGS}") + message( + STATUS + "DYNINST_EXTRA_WARNINGS set, adding extra warnings: ${DYNINST_EXTRA_WARNINGS}" + ) endif() -if (DYNINST_WARNINGS_AS_ERRORS) +if(DYNINST_WARNINGS_AS_ERRORS) list(APPEND REQUESTED_WARNING_FLAGS "Werror") message(STATUS "DYNINST_WARNINGS_AS_ERRORS set: treating warnings as errors") endif() -if (CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang)$") - include(CheckCCompilerFlag) - foreach (f IN LISTS REQUESTED_WARNING_FLAGS) - string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_C_FLAG_${f}") - set(CMAKE_REQUIRED_FLAGS "-${f}") - check_c_source_compiles("int main(){return 0;}" "${v}" FAIL_REGEX "warning: *command[- ]line option|-Wunknown-warning-option") - # Previous two lines are equivalent to below, but also catches - # a 0 exit status with a warning message output: - # check_c_compiler_flag("-${f}" "${v}") - if (${v}) - string(APPEND SUPPORTED_C_WARNING_FLAGS " -${f}") - if (f MATCHES "^(.*)=[0-9]+$") - # set generic variable if warning is parameterized with a number - string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_C_FLAG_${CMAKE_MATCH_1}") - set("${v}" 1) +if(CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang)$") + include(CheckCCompilerFlag) + foreach(f IN LISTS REQUESTED_WARNING_FLAGS) + string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_C_FLAG_${f}") + set(CMAKE_REQUIRED_FLAGS "-${f}") + check_c_source_compiles( + "int main(){return 0;}" "${v}" FAIL_REGEX + "warning: *command[- ]line option|-Wunknown-warning-option") + # Previous two lines are equivalent to below, but also catches a 0 exit status + # with a warning message output: check_c_compiler_flag("-${f}" "${v}") + if(${v}) + string(APPEND SUPPORTED_C_WARNING_FLAGS " -${f}") + if(f MATCHES "^(.*)=[0-9]+$") + # set generic variable if warning is parameterized with a number + string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_C_FLAG_${CMAKE_MATCH_1}") + set("${v}" 1) + endif() endif() - endif() - endforeach() + endforeach() endif() -if (CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$") - include(CheckCXXCompilerFlag) - foreach (f IN LISTS REQUESTED_WARNING_FLAGS) - string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_CPP_FLAG_${f}") - set(CMAKE_REQUIRED_FLAGS "-${f}") - check_cxx_source_compiles("int main(){return 0;}" "${v}" FAIL_REGEX "warning: *command[- ]line option|-Wunknown-warning-option") - if (${v}) - string(APPEND SUPPORTED_CXX_WARNING_FLAGS " -${f}") - if (f MATCHES "^(.*)=[0-9]+$") - string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_CPP_FLAG_${CMAKE_MATCH_1}") - set("${v}" 1) +if(CMAKE_CXX_COMPILER_ID MATCHES "^(GNU|Clang)$") + include(CheckCXXCompilerFlag) + foreach(f IN LISTS REQUESTED_WARNING_FLAGS) + string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_CPP_FLAG_${f}") + set(CMAKE_REQUIRED_FLAGS "-${f}") + check_cxx_source_compiles( + "int main(){return 0;}" "${v}" FAIL_REGEX + "warning: *command[- ]line option|-Wunknown-warning-option") + if(${v}) + string(APPEND SUPPORTED_CXX_WARNING_FLAGS " -${f}") + if(f MATCHES "^(.*)=[0-9]+$") + string(REGEX REPLACE "[^a-zA-Z0-9]" "_" v "HAS_CPP_FLAG_${CMAKE_MATCH_1}") + set("${v}" 1) + endif() endif() - endif() - endforeach() + endforeach() endif() -# If -Wframe-larger-than is available adjust the value to allow for larger -# frames based on compiler version and build type for the following 3 files: +# If -Wframe-larger-than is available adjust the value to allow for larger frames based on +# compiler version and build type for the following 3 files: # -# instructionAPI/src/InstructionDecoder-power.C -# (includes instructionAPI/src/power-opcode-table.C) -# instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C -# (includes instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C) -# common/src/MachSyscall.C -# (includes common/src/SyscallInformation.C) +# instructionAPI/src/InstructionDecoder-power.C (includes +# instructionAPI/src/power-opcode-table.C) +# instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C (includes +# instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C) common/src/MachSyscall.C (includes +# common/src/SyscallInformation.C) # -if (HAS_CPP_FLAG_Wframe_larger_than AND NOT DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) - # Override the default frame size maximum for DEBUG (-O0) build types - # as there stack frames are larger: +if(HAS_CPP_FLAG_Wframe_larger_than AND NOT DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS) + # Override the default frame size maximum for DEBUG (-O0) build types as there stack + # frames are larger: # - add_compile_options($<$:-Wframe-larger-than=${defaultDebugMaxFrameSize}>) + add_compile_options( + $<$:-Wframe-larger-than=${defaultDebugMaxFrameSize}>) - # Use worst-case values discovered so far. For most gcc versions - # SyscallInformation.C stack frame size is less than than the default and - # InstructionDecoder-power.C is less than 76800, but for some environments - # and compiler configurations the following are needed: + # Use worst-case values discovered so far. For most gcc versions SyscallInformation.C + # stack frame size is less than than the default and InstructionDecoder-power.C is + # less than 76800, but for some environments and compiler configurations the following + # are needed: # set(debugMaxFrameSizeOverrideSyscallInformation 81920) set(debugMaxFrameSizeOverridePowerOpcodeTable 358400) - if (${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[7](\.|$)") - set(nonDebugMaxFrameSizeOverridePowerOpcodeTable 38912) + if(${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[7](\.|$)") + set(nonDebugMaxFrameSizeOverridePowerOpcodeTable 38912) endif() # most gcc's are under the default using -Og, but rhel's requires 30000 set(debugMaxFrameSizeOverrideFinalizeOperands 30000) - if (${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[6](\.|$)") - set(nonDebugMaxFrameSizeOverrideFinalizeOperands 30000) + if(${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[6](\.|$)") + set(nonDebugMaxFrameSizeOverrideFinalizeOperands 30000) endif() endif() unset(CMAKE_REQUIRED_FLAGS) -if (MSVC) - message(STATUS "TODO: Set up custom warning flags for MSVC") +if(MSVC) + message(STATUS "TODO: Set up custom warning flags for MSVC") endif() message(STATUS "Using C warning flags: ${SUPPORTED_C_WARNING_FLAGS}") message(STATUS "Using CXX warning flags: ${SUPPORTED_CXX_WARNING_FLAGS}") -message(STATUS "Extra CXX DEBUG warning flags: -Wframe-larger-than=${defaultDebugMaxFrameSize}") +message( + STATUS + "Extra CXX DEBUG warning flags: -Wframe-larger-than=${defaultDebugMaxFrameSize}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SUPPORTED_C_WARNING_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SUPPORTED_CXX_WARNING_FLAGS}") diff --git a/common/CMakeLists.txt b/common/CMakeLists.txt index 91e0ea258a..0a9ff1cee2 100644 --- a/common/CMakeLists.txt +++ b/common/CMakeLists.txt @@ -1,145 +1,132 @@ # CMake configuration for common directory if(NOT WIN32) -include_directories ( - ${PROJECT_SOURCE_DIR}/common/h - ${PROJECT_SOURCE_DIR}/common/src - ) + include_directories(${PROJECT_SOURCE_DIR}/common/h ${PROJECT_SOURCE_DIR}/common/src) else() -include_directories ( - ${PROJECT_SOURCE_DIR}/common/h # don't include common/src; anything from there can still collide with default includes. - # stupid Windows case-insensitive naming. - ) + include_directories( + ${PROJECT_SOURCE_DIR}/common/h # don't include common/src; anything from there can + # still collide with default includes. + # stupid Windows case-insensitive naming. + ) endif() - -set (SRC_LIST +set(SRC_LIST src/pfq-rwlock.C src/concurrent.C - src/Timer.C - src/Types.C + src/Timer.C + src/Types.C src/lprintf.C - src/pathName.C - src/stats.C - src/Annotatable.C - src/MappedFile.C - src/sha1.C + src/pathName.C + src/stats.C + src/Annotatable.C + src/MappedFile.C + src/sha1.C src/util.C - src/Node.C - src/Graph.C - src/Edge.C - src/DOT.C - src/dyn_regs.C - src/AST.C - src/addrtranslate.C - src/arch-x86.C - src/arch-power.C - src/arch-aarch64.C - src/debug_common.C - src/VariableLocation.C + src/Node.C + src/Graph.C + src/Edge.C + src/DOT.C + src/dyn_regs.C + src/AST.C + src/addrtranslate.C + src/arch-x86.C + src/arch-power.C + src/arch-aarch64.C + src/debug_common.C + src/VariableLocation.C src/Buffer.C - src/MachSyscall.C - ) - -set (C_SRC_LIST -) - -if (PLATFORM MATCHES freebsd) - set (SRC_LIST ${SRC_LIST} - src/freebsdKludges.C - src/addrtranslate-sysv.C - src/addrtranslate-freebsd.C - src/symbolDemangleWithCache.C - ) - set (C_SRC_LIST ${C_SRC_LIST} - src/symbolDemangle.c - ) + src/MachSyscall.C) + +set(C_SRC_LIST) + +if(PLATFORM MATCHES freebsd) + set(SRC_LIST ${SRC_LIST} src/freebsdKludges.C src/addrtranslate-sysv.C + src/addrtranslate-freebsd.C src/symbolDemangleWithCache.C) + set(C_SRC_LIST ${C_SRC_LIST} src/symbolDemangle.c) +endif() + +if(PLATFORM MATCHES linux) + set(SRC_LIST + ${SRC_LIST} + src/linuxKludges.C + src/parseauxv.C + src/addrtranslate-sysv.C + src/addrtranslate-auxv.C + src/addrtranslate-linux.C + src/symbolDemangleWithCache.C) + set(C_SRC_LIST ${C_SRC_LIST} src/symbolDemangle.c) endif() -if (PLATFORM MATCHES linux) - set (SRC_LIST ${SRC_LIST} - src/linuxKludges.C - src/parseauxv.C - src/addrtranslate-sysv.C - src/addrtranslate-auxv.C - src/addrtranslate-linux.C - src/symbolDemangleWithCache.C - ) - set (C_SRC_LIST ${C_SRC_LIST} - src/symbolDemangle.c - ) +if(PLATFORM MATCHES nt OR PLATFORM MATCHES windows) + set(SRC_LIST + ${SRC_LIST} src/ntKludges.C + # src/dthread-win.C src/dthread.C + src/addrtranslate-win.C) + add_definitions(-DWIN32 -D_WIN32_WINNT=0x500) endif() -if (PLATFORM MATCHES nt OR PLATFORM MATCHES windows) - set (SRC_LIST ${SRC_LIST} - src/ntKludges.C -# src/dthread-win.C -# src/dthread.C - src/addrtranslate-win.C - ) - add_definitions(-DWIN32 -D_WIN32_WINNT=0x500) -endif() - - -SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) -SET_SOURCE_FILES_PROPERTIES(${C_SRC_LIST} PROPERTIES LANGUAGE C) -set (SRC_LIST ${SRC_LIST} - ${C_SRC_LIST} -) - -if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - if (${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[789](\.|$)") - # Disable var-tracking-assignments for arch-x86.C for gcc 7, 8, & 9. - # The default max size for these compilers is too small so it fails, - # adjusting it using - # - # PROPERTIES COMPILE_FLAGS "--param=max-vartrack-size=600000000" - # - # succeeds, but just disable it. - SET_SOURCE_FILES_PROPERTIES(src/arch-x86.C - PROPERTIES COMPILE_FLAGS "-fno-var-tracking-assignments") +set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) +set_source_files_properties(${C_SRC_LIST} PROPERTIES LANGUAGE C) +set(SRC_LIST ${SRC_LIST} ${C_SRC_LIST}) + +if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + if(${CMAKE_CXX_COMPILER_VERSION} MATCHES "^[789](\.|$)") + # Disable var-tracking-assignments for arch-x86.C for gcc 7, 8, & 9. The default + # max size for these compilers is too small so it fails, adjusting it using + # + # PROPERTIES COMPILE_FLAGS "--param=max-vartrack-size=600000000" + # + # succeeds, but just disable it. + set_source_files_properties( + src/arch-x86.C PROPERTIES COMPILE_FLAGS "-fno-var-tracking-assignments") endif() endif() # adjust warning threshold if set in cmake/warnings.cmake -if (debugMaxFrameSizeOverrideSyscallInformation) - SET_SOURCE_FILES_PROPERTIES(src/MachSyscall.C PROPERTIES COMPILE_FLAGS - $<$:-Wframe-larger-than=${debugMaxFrameSizeOverrideSyscallInformation}>) +if(debugMaxFrameSizeOverrideSyscallInformation) + set_source_files_properties( + src/MachSyscall.C + PROPERTIES + COMPILE_FLAGS + $<$:-Wframe-larger-than=${debugMaxFrameSizeOverrideSyscallInformation}> + ) endif() -if (nonDebugMaxFrameSizeOverrideSyscallInformation) - SET_SOURCE_FILES_PROPERTIES(src/MachSyscall.C PROPERTIES COMPILE_FLAGS - $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverrideSyscallInformation}>) +if(nonDebugMaxFrameSizeOverrideSyscallInformation) + set_source_files_properties( + src/MachSyscall.C + PROPERTIES + COMPILE_FLAGS + $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverrideSyscallInformation}> + ) endif() -ADD_DEFINITIONS(-DCOMMON_LIB) +add_definitions(-DCOMMON_LIB) dyninst_library(common) if(TARGET LibIberty) - add_dependencies(common LibIberty) - target_link_libraries(common PRIVATE LibIberty) + add_dependencies(common LibIberty) + target_link_libraries(common PRIVATE LibIberty) - if(${ENABLE_STATIC_LIBS}) - target_link_libraries(common_static PRIVATE LibIberty) - endif() + if(${ENABLE_STATIC_LIBS}) + target_link_libraries(common_static PRIVATE LibIberty) + endif() endif() if(TARGET TBB) add_dependencies(common TBB) endif() if(PLATFORM MATCHES nt OR PLATFORM MATCHES windows) - target_link_private_libraries(common Psapi WS2_32 dbghelp) + target_link_private_libraries(common Psapi WS2_32 dbghelp) endif() target_link_private_libraries(common ${Boost_LIBRARIES}) target_link_libraries(common PUBLIC ${TBB_LIBRARIES}) if(USE_OpenMP) - set_target_properties(common PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} LINK_FLAGS ${OpenMP_CXX_FLAGS}) + set_target_properties(common PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} + LINK_FLAGS ${OpenMP_CXX_FLAGS}) endif() # Install AMDGPU headers under subdirectory of common/h/AMDGPU -set(AMDGPU_HEADER - ${DYNINST_ROOT}/common/h/AMDGPU -) +set(AMDGPU_HEADER ${DYNINST_ROOT}/common/h/AMDGPU) install(DIRECTORY ${AMDGPU_HEADER} DESTINATION ${INSTALL_INCLUDE_DIR}) - diff --git a/dwarf/CMakeLists.txt b/dwarf/CMakeLists.txt index e959351b20..e4ef428141 100644 --- a/dwarf/CMakeLists.txt +++ b/dwarf/CMakeLists.txt @@ -1,24 +1,14 @@ # CMake configuration for dynDwarf (dwarf) directory -if (NOT UNIX) - return() +if(NOT UNIX) + return() endif() -include_directories ( - src - h - ${PROJECT_SOURCE_DIR}/elf/h - ${PROJECT_SOURCE_DIR}/common/src - ) +include_directories(src h ${PROJECT_SOURCE_DIR}/elf/h ${PROJECT_SOURCE_DIR}/common/src) add_definitions(-DDYNDWARF_LIB) -set (SRC_LIST - src/dwarfResult.C - src/dwarfExprParser.C - src/dwarfFrameParser.C - src/dwarfHandle.C - ) - +set(SRC_LIST src/dwarfResult.C src/dwarfExprParser.C src/dwarfFrameParser.C + src/dwarfHandle.C) dyninst_library(dynDwarf dynElf common ${LibDwarf_LIBRARIES}) add_dependencies(dynDwarf ElfUtils) diff --git a/dynC_API/CMakeLists.txt b/dynC_API/CMakeLists.txt index 9c0d49605e..0dc95115dc 100644 --- a/dynC_API/CMakeLists.txt +++ b/dynC_API/CMakeLists.txt @@ -1,16 +1,12 @@ - file(GLOB SRC_LIST "src/*.C") -include_directories(h - src - ${PROJECT_SOURCE_DIR}/dyninstAPI/src - ${PROJECT_SOURCE_DIR}/proccontrol/h -) +include_directories(h src ${PROJECT_SOURCE_DIR}/dyninstAPI/src + ${PROJECT_SOURCE_DIR}/proccontrol/h) set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) add_definitions(-DDYNC_EXPORTS) if(WIN32) -add_definitions(-DYY_NO_UNISTD_H) + add_definitions(-DYY_NO_UNISTD_H) endif() dyninst_library(dynC_API dyninstAPI) diff --git a/dyninstAPI/CMakeLists.txt b/dyninstAPI/CMakeLists.txt index 518e6aacc9..e9ee10cd87 100644 --- a/dyninstAPI/CMakeLists.txt +++ b/dyninstAPI/CMakeLists.txt @@ -1,219 +1,213 @@ # CMake configuration for dyninstAPI directory -include_directories ( - src - h - ${PROJECT_SOURCE_DIR}/proccontrol/h - ) +include_directories(src h ${PROJECT_SOURCE_DIR}/proccontrol/h) -set (SRC_LIST - src/BPatch.C - src/BPatch_image.C - src/BPatch_function.C - src/BPatch_snippet.C - src/BPatch_thread.C - src/BPatch_process.C - src/BPatch_type.C - src/BPatch_module.C - src/BPatch_object.C - src/BPatch_point.C - src/BPatch_collections.C - src/BPatch_sourceBlock.C - src/BPatch_basicBlock.C - src/BPatch_basicBlockLoop.C - src/BPatch_edge.C - src/BPatch_loopTreeNode.C - src/BPatch_flowGraph.C - src/BPatch_frame.C - src/BPatch_parRegion.C - src/BPatch_statement.C - src/BPatch_addressSpace.C - src/BPatch_binaryEdit.C - src/BPatch_memoryAccess.C - src/debug.C - src/ast.C - src/registerSpace.C - src/codegen.C - src/inst.C - src/instPoint.C - src/baseTramp.C - src/addressSpace.C - src/binaryEdit.C - src/infHeap.C - src/frame.C - src/codeRange.C - src/image.C - src/parse-cfg.C - src/mapped_object.C - src/mapped_module.C - src/function.C - src/block.C - src/edge.C - src/variable.C - src/util.C - src/BPatch_instruction.C - src/parRegion.C - src/Parsing.C - src/Parsing-arch.C - src/hybridInstrumentation.C - src/hybridOverwrites.C - src/hybridCallbacks.C - src/dynProcess.C - src/dynThread.C - src/pcEventHandler.C - src/pcEventMuxer.C - src/Relocation/CodeMover.C - src/Relocation/CFG/RelocGraph.C - src/Relocation/CFG/RelocBlock.C - src/Relocation/CFG/RelocEdge.C - src/Relocation/CFG/RelocTarget.C - src/Relocation/Springboard.C - src/Relocation/Widgets/ASTWidget.C - src/Relocation/Widgets/CFWidget.C - src/Relocation/Widgets/CallbackWidget.C - src/Relocation/Widgets/InsnWidget.C - src/Relocation/Widgets/InstWidget.C - src/Relocation/Widgets/PCWidget.C - src/Relocation/Widgets/RelDataWidget.C - src/Relocation/Widgets/StackModWidget.C - src/Relocation/Transformers/Transformer.C - src/Relocation/Transformers/Instrumenter.C - src/Relocation/Transformers/Modification.C - src/Relocation/Transformers/Movement-adhoc.C - src/Relocation/Transformers/Movement-analysis.C - src/Relocation/CodeTracker.C - src/Relocation/CodeBuffer.C - src/Relocation/patchapi_debug.C - src/Relocation/DynObject.C - src/Relocation/DynAddrSpace.C - src/Relocation/DynPointMaker.C - src/Relocation/DynCFGMaker.C - src/Relocation/DynInstrumenter.C - src/Patching.C - src/frameChecker.C - src/BPatch_memoryAccessAdapter.C -) +set(SRC_LIST + src/BPatch.C + src/BPatch_image.C + src/BPatch_function.C + src/BPatch_snippet.C + src/BPatch_thread.C + src/BPatch_process.C + src/BPatch_type.C + src/BPatch_module.C + src/BPatch_object.C + src/BPatch_point.C + src/BPatch_collections.C + src/BPatch_sourceBlock.C + src/BPatch_basicBlock.C + src/BPatch_basicBlockLoop.C + src/BPatch_edge.C + src/BPatch_loopTreeNode.C + src/BPatch_flowGraph.C + src/BPatch_frame.C + src/BPatch_parRegion.C + src/BPatch_statement.C + src/BPatch_addressSpace.C + src/BPatch_binaryEdit.C + src/BPatch_memoryAccess.C + src/debug.C + src/ast.C + src/registerSpace.C + src/codegen.C + src/inst.C + src/instPoint.C + src/baseTramp.C + src/addressSpace.C + src/binaryEdit.C + src/infHeap.C + src/frame.C + src/codeRange.C + src/image.C + src/parse-cfg.C + src/mapped_object.C + src/mapped_module.C + src/function.C + src/block.C + src/edge.C + src/variable.C + src/util.C + src/BPatch_instruction.C + src/parRegion.C + src/Parsing.C + src/Parsing-arch.C + src/hybridInstrumentation.C + src/hybridOverwrites.C + src/hybridCallbacks.C + src/dynProcess.C + src/dynThread.C + src/pcEventHandler.C + src/pcEventMuxer.C + src/Relocation/CodeMover.C + src/Relocation/CFG/RelocGraph.C + src/Relocation/CFG/RelocBlock.C + src/Relocation/CFG/RelocEdge.C + src/Relocation/CFG/RelocTarget.C + src/Relocation/Springboard.C + src/Relocation/Widgets/ASTWidget.C + src/Relocation/Widgets/CFWidget.C + src/Relocation/Widgets/CallbackWidget.C + src/Relocation/Widgets/InsnWidget.C + src/Relocation/Widgets/InstWidget.C + src/Relocation/Widgets/PCWidget.C + src/Relocation/Widgets/RelDataWidget.C + src/Relocation/Widgets/StackModWidget.C + src/Relocation/Transformers/Transformer.C + src/Relocation/Transformers/Instrumenter.C + src/Relocation/Transformers/Modification.C + src/Relocation/Transformers/Movement-adhoc.C + src/Relocation/Transformers/Movement-analysis.C + src/Relocation/CodeTracker.C + src/Relocation/CodeBuffer.C + src/Relocation/patchapi_debug.C + src/Relocation/DynObject.C + src/Relocation/DynAddrSpace.C + src/Relocation/DynPointMaker.C + src/Relocation/DynCFGMaker.C + src/Relocation/DynInstrumenter.C + src/Patching.C + src/frameChecker.C + src/BPatch_memoryAccessAdapter.C) # This is just .. messy. Sorry. get_directory_property(local_comp_defs COMPILE_DEFINITIONS) -list (FIND local_comp_defs cap_stack_mods cap_stack_mods_found) -if (cap_stack_mods_found GREATER -1) -set (SRC_LIST ${SRC_LIST} - src/StackMod/OffsetVector.C - src/StackMod/StackAccess.C - src/StackMod/StackLocation.C - src/StackMod/StackMod.C - src/StackMod/StackModExpr.C - src/StackMod/StackModChecker.C - src/StackMod/TMap.C -) -endif () +list(FIND local_comp_defs cap_stack_mods cap_stack_mods_found) +if(cap_stack_mods_found GREATER -1) + set(SRC_LIST + ${SRC_LIST} + src/StackMod/OffsetVector.C + src/StackMod/StackAccess.C + src/StackMod/StackLocation.C + src/StackMod/StackMod.C + src/StackMod/StackModExpr.C + src/StackMod/StackModChecker.C + src/StackMod/TMap.C) +endif() -if (PLATFORM MATCHES i386 OR PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64) -set (SRC_LIST ${SRC_LIST} - src/RegisterConversion-x86.C - src/Relocation/Widgets/CFWidget-x86.C - src/Relocation/Widgets/PCWidget-x86.C - src/inst-x86.C - src/emit-x86.C - src/codegen-x86.C - src/stackwalk-x86.C - src/dynProcess-x86.C - src/parse-x86.C - src/IAPI_to_AST.C -) -elseif (PLATFORM MATCHES ppc) -set (SRC_LIST ${SRC_LIST} - src/inst-power.C - src/codegen-power.C - src/parse-power.C - src/RegisterConversion-ppc.C - src/stackwalk-ppc.C - src/Relocation/Widgets/CFWidget-ppc.C - src/Relocation/Widgets/PCWidget-ppc.C -) -elseif (PLATFORM MATCHES aarch64) -set (SRC_LIST ${SRC_LIST} - src/inst-aarch64.C - src/emit-aarch64.C - src/codegen-aarch64.C - src/parse-aarch64.C - src/RegisterConversion-aarch64.C - src/stackwalk-aarch64.C - src/Relocation/Widgets/CFWidget-aarch64.C - src/Relocation/Widgets/PCWidget-aarch64.C -) -endif () +if(PLATFORM MATCHES i386 + OR PLATFORM MATCHES amd64 + OR PLATFORM MATCHES x86_64) + set(SRC_LIST + ${SRC_LIST} + src/RegisterConversion-x86.C + src/Relocation/Widgets/CFWidget-x86.C + src/Relocation/Widgets/PCWidget-x86.C + src/inst-x86.C + src/emit-x86.C + src/codegen-x86.C + src/stackwalk-x86.C + src/dynProcess-x86.C + src/parse-x86.C + src/IAPI_to_AST.C) +elseif(PLATFORM MATCHES ppc) + set(SRC_LIST + ${SRC_LIST} + src/inst-power.C + src/codegen-power.C + src/parse-power.C + src/RegisterConversion-ppc.C + src/stackwalk-ppc.C + src/Relocation/Widgets/CFWidget-ppc.C + src/Relocation/Widgets/PCWidget-ppc.C) +elseif(PLATFORM MATCHES aarch64) + set(SRC_LIST + ${SRC_LIST} + src/inst-aarch64.C + src/emit-aarch64.C + src/codegen-aarch64.C + src/parse-aarch64.C + src/RegisterConversion-aarch64.C + src/stackwalk-aarch64.C + src/Relocation/Widgets/CFWidget-aarch64.C + src/Relocation/Widgets/PCWidget-aarch64.C) +endif() -if (PLATFORM MATCHES freebsd) -set (SRC_LIST ${SRC_LIST} - src/freebsd.C - src/unix.C - src/freebsd-x86.C - src/syscallNotification.C - src/syscall-freebsd.C -) -elseif (PLATFORM MATCHES linux) -set (SRC_LIST ${SRC_LIST} - src/linux.C - src/inst-linux.C - src/unix.C - src/syscallNotification.C - src/syscall-linux.C -) - if (PLATFORM MATCHES i386 OR PLATFORM MATCHES x86_64) - set (SRC_LIST ${SRC_LIST} src/linux-x86.C) - elseif (PLATFORM MATCHES ppc) - set (SRC_LIST ${SRC_LIST} src/linux-power.C) - elseif (PLATFORM MATCHES aarch64) - set (SRC_LIST ${SRC_LIST} src/linux-aarch64.C) - endif() +if(PLATFORM MATCHES freebsd) + set(SRC_LIST ${SRC_LIST} src/freebsd.C src/unix.C src/freebsd-x86.C + src/syscallNotification.C src/syscall-freebsd.C) +elseif(PLATFORM MATCHES linux) + set(SRC_LIST ${SRC_LIST} src/linux.C src/inst-linux.C src/unix.C + src/syscallNotification.C src/syscall-linux.C) + if(PLATFORM MATCHES i386 OR PLATFORM MATCHES x86_64) + set(SRC_LIST ${SRC_LIST} src/linux-x86.C) + elseif(PLATFORM MATCHES ppc) + set(SRC_LIST ${SRC_LIST} src/linux-power.C) + elseif(PLATFORM MATCHES aarch64) + set(SRC_LIST ${SRC_LIST} src/linux-aarch64.C) + endif() elseif(PLATFORM MATCHES windows OR PLATFORM MATCHES nt) - set (SRC_LIST ${SRC_LIST} - src/hybridCallbacks.C - src/hybridInstrumentation.C - src/hybridOverwrites.C + set(SRC_LIST + ${SRC_LIST} + src/hybridCallbacks.C + src/hybridInstrumentation.C + src/hybridOverwrites.C src/inst-winnt.C src/pdwinnt.C src/syscall-nt.C - src/Relocation/DynAddrSpace.C - src/Relocation/DynCFGMaker.C - src/Relocation/DynInstrumenter.C - src/Relocation/DynObject.C - src/Relocation/DynPointMaker.C - ) + src/Relocation/DynAddrSpace.C + src/Relocation/DynCFGMaker.C + src/Relocation/DynInstrumenter.C + src/Relocation/DynObject.C + src/Relocation/DynPointMaker.C) endif() set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) add_definitions(-DBPATCH_DLL_BUILD) -if (PLATFORM MATCHES i386 AND UNIX) -set (SRC_LIST ${SRC_LIST} src/cpuid-x86.S) -set_source_files_properties(src/cpuid-x86.S PROPERTIES LANGUAGE C) -endif () +if(PLATFORM MATCHES i386 AND UNIX) + set(SRC_LIST ${SRC_LIST} src/cpuid-x86.S) + set_source_files_properties(src/cpuid-x86.S PROPERTIES LANGUAGE C) +endif() -dyninst_library(dyninstAPI common instructionAPI stackwalk pcontrol patchAPI parseAPI symtabAPI) +dyninst_library( + dyninstAPI + common + instructionAPI + stackwalk + pcontrol + patchAPI + parseAPI + symtabAPI) target_link_private_libraries(dyninstAPI ${Boost_LIBRARIES} ${TBB_LIBRARIES}) -if (UNIX) - # Boost auto-links on Windows; don't double-link - target_link_private_libraries (dyninstAPI pthread) +if(UNIX) + # Boost auto-links on Windows; don't double-link + target_link_private_libraries(dyninstAPI pthread) else() - target_link_private_libraries(dyninstAPI dbghelp WS2_32 imagehlp) + target_link_private_libraries(dyninstAPI dbghelp WS2_32 imagehlp) endif() if(UNIX) - # gcc/clang search directories - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - execute_process( - COMMAND ${CMAKE_CXX_COMPILER} -print-search-dirs - OUTPUT_VARIABLE SEARCH_DIRS - ) - if(SEARCH_DIRS MATCHES "libraries:[ ]?[=]?(.+)\n") - set(DYNINST_COMPILER_SEARCH_DIRS ${CMAKE_MATCH_1}) - endif() - endif() - target_compile_definitions(dyninstAPI PRIVATE DYNINST_COMPILER_SEARCH_DIRS=${DYNINST_COMPILER_SEARCH_DIRS}) + # gcc/clang search directories + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + execute_process(COMMAND ${CMAKE_CXX_COMPILER} -print-search-dirs + OUTPUT_VARIABLE SEARCH_DIRS) + if(SEARCH_DIRS MATCHES "libraries:[ ]?[=]?(.+)\n") + set(DYNINST_COMPILER_SEARCH_DIRS ${CMAKE_MATCH_1}) + endif() + endif() + target_compile_definitions( + dyninstAPI PRIVATE DYNINST_COMPILER_SEARCH_DIRS=${DYNINST_COMPILER_SEARCH_DIRS}) endif() install(SCRIPT "${RT_BINARY_DIR}/cmake_install.cmake") diff --git a/dyninstAPI_RT/CMakeLists.txt b/dyninstAPI_RT/CMakeLists.txt index b454688d79..0922804f27 100644 --- a/dyninstAPI_RT/CMakeLists.txt +++ b/dyninstAPI_RT/CMakeLists.txt @@ -1,247 +1,230 @@ # CMake configuration for dyninstAPI_RT directory -cmake_minimum_required (VERSION 2.6.4) -project (DyninstRT C) - -set (DYNINST_ROOT ${PROJECT_SOURCE_DIR}/..) - -include (${DYNINST_ROOT}/cmake/LanguageStandards.cmake) -include (${DYNINST_ROOT}/cmake/shared.cmake) - -include_directories ( - ${DYNINST_ROOT}/dyninstAPI_RT/src - ${DYNINST_ROOT}/dyninstAPI_RT/h - ${DYNINST_ROOT} - ) - -set (SRC_LIST - src/RTcommon.c -) - -if (PLATFORM MATCHES freebsd) -set (SRC_LIST ${SRC_LIST} - src/RTposix.c - src/RTfreebsd.c - src/RTheap.c - src/RTheap-freebsd.c - src/RTthread.c - src/RTspace.S - src/RTsignal.c -) -elseif (PLATFORM MATCHES linux) -set (SRC_LIST ${SRC_LIST} - src/RTposix.c - src/RTlinux.c - src/RTheap.c - src/RTheap-linux.c - src/RTthread.c - src/RTspace.S - src/RTsignal.c -) -set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} - src/RTstatic_ctors_dtors_begin.c - src/RTstatic_ctors_dtors_end.c -) -elseif (PLATFORM MATCHES nt OR PLATFORM MATCHES windows) -set (SRC_LIST ${SRC_LIST} - src/RTheap.c - src/RTheap-win.c - src/RTwinnt.c - src/RTthread.c - src/RTthread-x86.c -) -endif () - -set (SRC_LIST_i386 - src/RTthread-x86.c - src/RTtlsgetaddr-x86.S -) -set (RT_STATIC_ONLY_SRC_LIST_i386 - src/RTstatic_ctors_dtors-x86.c -) -set (SRC_LIST_x86_64 - src/RTthread-x86-64.c - src/RTtlsgetaddr-x86.S -) -set (RT_STATIC_ONLY_SRC_LIST_x86_64 - src/RTstatic_ctors_dtors-x86.c -) -set (SRC_LIST_ppc64 - src/RTthread-powerpc.c - src/RTthread-powerpc-asm.S -) -set (RT_STATIC_ONLY_SRC_LIST_ppc64 - src/RTstatic_ctors_dtors-ppc64.c -) -set (SRC_LIST_aarch64 - src/RTthread-aarch64.c - #src/RTthread-aarch64-asm.S -) -set (RT_STATIC_ONLY_SRC_LIST_aarch64 - src/RTstatic_ctors_dtors-aarch64.c -) - - -# We use gcc to compile the various assembly files, but -# cmake doesn't default to knowing that gcc can -# handle .S. -ENABLE_LANGUAGE(ASM) -file (GLOB SRC_ASSEMBLY "src/*.S") +cmake_minimum_required(VERSION 2.6.4) +project(DyninstRT C) + +set(DYNINST_ROOT ${PROJECT_SOURCE_DIR}/..) + +include(${DYNINST_ROOT}/cmake/LanguageStandards.cmake) +include(${DYNINST_ROOT}/cmake/shared.cmake) + +include_directories(${DYNINST_ROOT}/dyninstAPI_RT/src ${DYNINST_ROOT}/dyninstAPI_RT/h + ${DYNINST_ROOT}) + +set(SRC_LIST src/RTcommon.c) + +if(PLATFORM MATCHES freebsd) + set(SRC_LIST + ${SRC_LIST} + src/RTposix.c + src/RTfreebsd.c + src/RTheap.c + src/RTheap-freebsd.c + src/RTthread.c + src/RTspace.S + src/RTsignal.c) +elseif(PLATFORM MATCHES linux) + set(SRC_LIST + ${SRC_LIST} + src/RTposix.c + src/RTlinux.c + src/RTheap.c + src/RTheap-linux.c + src/RTthread.c + src/RTspace.S + src/RTsignal.c) + set(RT_STATIC_ONLY_SRC_LIST + ${RT_STATIC_ONLY_SRC_LIST} src/RTstatic_ctors_dtors_begin.c + src/RTstatic_ctors_dtors_end.c) +elseif(PLATFORM MATCHES nt OR PLATFORM MATCHES windows) + set(SRC_LIST ${SRC_LIST} src/RTheap.c src/RTheap-win.c src/RTwinnt.c src/RTthread.c + src/RTthread-x86.c) +endif() + +set(SRC_LIST_i386 src/RTthread-x86.c src/RTtlsgetaddr-x86.S) +set(RT_STATIC_ONLY_SRC_LIST_i386 src/RTstatic_ctors_dtors-x86.c) +set(SRC_LIST_x86_64 src/RTthread-x86-64.c src/RTtlsgetaddr-x86.S) +set(RT_STATIC_ONLY_SRC_LIST_x86_64 src/RTstatic_ctors_dtors-x86.c) +set(SRC_LIST_ppc64 src/RTthread-powerpc.c src/RTthread-powerpc-asm.S) +set(RT_STATIC_ONLY_SRC_LIST_ppc64 src/RTstatic_ctors_dtors-ppc64.c) +set(SRC_LIST_aarch64 src/RTthread-aarch64.c + # src/RTthread-aarch64-asm.S + ) +set(RT_STATIC_ONLY_SRC_LIST_aarch64 src/RTstatic_ctors_dtors-aarch64.c) + +# We use gcc to compile the various assembly files, but cmake doesn't default to knowing +# that gcc can handle .S. +enable_language(ASM) +file(GLOB SRC_ASSEMBLY "src/*.S") if(NEED_NATIVE_ASSEMBER MATCHES YES) -set_source_files_properties(${SRC_ASSEMBLY} - PROPERTIES - LANGUAGE ASM) + set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE ASM) else() -set_source_files_properties(${SRC_ASSEMBLY} - PROPERTIES - LANGUAGE C) + set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE C) endif() # The arch-specific files other than RTthread-x86 are Unix-only. if(UNIX) -if (PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64) -set (SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_i386}) -set (RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_i386}) -set (SRC_LIST ${SRC_LIST} ${SRC_LIST_x86_64}) -set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_x86_64}) -elseif (PLATFORM MATCHES ppc64) -set (SRC_LIST_mabi ${SRC_LIST}) -set (RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST}) -set (SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc64}) -set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_ppc64}) -elseif (PLATFORM MATCHES i386) -set (SRC_LIST ${SRC_LIST} ${SRC_LIST_i386}) -set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_i386}) -elseif (PLATFORM MATCHES aarch64) -set (SRC_LIST ${SRC_LIST} ${SRC_LIST_aarch64}) -set (RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST_aarch64}) -endif() + if(PLATFORM MATCHES amd64 OR PLATFORM MATCHES x86_64) + set(SRC_LIST_mabi ${SRC_LIST} ${SRC_LIST_i386}) + set(RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST} + ${RT_STATIC_ONLY_SRC_LIST_i386}) + set(SRC_LIST ${SRC_LIST} ${SRC_LIST_x86_64}) + set(RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} + ${RT_STATIC_ONLY_SRC_LIST_x86_64}) + elseif(PLATFORM MATCHES ppc64) + set(SRC_LIST_mabi ${SRC_LIST}) + set(RT_STATIC_ONLY_SRC_LIST_mabi ${RT_STATIC_ONLY_SRC_LIST}) + set(SRC_LIST ${SRC_LIST} ${SRC_LIST_ppc64}) + set(RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} + ${RT_STATIC_ONLY_SRC_LIST_ppc64}) + elseif(PLATFORM MATCHES i386) + set(SRC_LIST ${SRC_LIST} ${SRC_LIST_i386}) + set(RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} + ${RT_STATIC_ONLY_SRC_LIST_i386}) + elseif(PLATFORM MATCHES aarch64) + set(SRC_LIST ${SRC_LIST} ${SRC_LIST_aarch64}) + set(RT_STATIC_ONLY_SRC_LIST ${RT_STATIC_ONLY_SRC_LIST} + ${RT_STATIC_ONLY_SRC_LIST_aarch64}) + endif() endif() -add_library (dyninstAPI_RT SHARED ${SRC_LIST}) +add_library(dyninstAPI_RT SHARED ${SRC_LIST}) if(TARGET TBB) add_dependencies(dyninstAPI_RT TBB) endif() -if (NOT PLATFORM MATCHES nt AND NOT PLATFORM MATCHES windows) - target_link_libraries (dyninstAPI_RT ${CMAKE_DL_LIBS}) +if(NOT PLATFORM MATCHES nt AND NOT PLATFORM MATCHES windows) + target_link_libraries(dyninstAPI_RT ${CMAKE_DL_LIBS}) else() # windows - target_link_libraries (dyninstAPI_RT ws2_32 dbghelp psapi) + target_link_libraries(dyninstAPI_RT ws2_32 dbghelp psapi) endif() -add_library (dyninstAPI_RT_static STATIC ${SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST}) +add_library(dyninstAPI_RT_static STATIC ${SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST}) if(TARGET TBB) add_dependencies(dyninstAPI_RT_static TBB) endif() # this should carry over from CMakeLists.txt -set_target_properties (dyninstAPI_RT - PROPERTIES - OUTPUT_NAME dyninstAPI_RT - SOVERSION ${SOVERSION} - VERSION ${LIBVERSION}) +set_target_properties( + dyninstAPI_RT + PROPERTIES OUTPUT_NAME dyninstAPI_RT + SOVERSION ${SOVERSION} + VERSION ${LIBVERSION}) # this will not -set_target_properties (dyninstAPI_RT_static - PROPERTIES - OUTPUT_NAME dyninstAPI_RT - COMPILE_DEFINITIONS DYNINST_RT_STATIC_LIB) - -set_target_properties (dyninstAPI_RT PROPERTIES CLEAN_DIRECT_OUTPUT 1) -set_target_properties (dyninstAPI_RT_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) +set_target_properties( + dyninstAPI_RT_static PROPERTIES OUTPUT_NAME dyninstAPI_RT COMPILE_DEFINITIONS + DYNINST_RT_STATIC_LIB) +set_target_properties(dyninstAPI_RT PROPERTIES CLEAN_DIRECT_OUTPUT 1) +set_target_properties(dyninstAPI_RT_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) message(STATUS "dyninstAPI RT library SOVERSION: ${SOVERSION}") message(STATUS "dyninstAPI RT library LIBVERSION: ${LIBVERSION}") -FILE (GLOB headers "h/*.h") +file(GLOB headers "h/*.h") # append, you fool! -set_target_properties (dyninstAPI_RT dyninstAPI_RT_static PROPERTIES PUBLIC_HEADER "${headers}") +set_target_properties(dyninstAPI_RT dyninstAPI_RT_static PROPERTIES PUBLIC_HEADER + "${headers}") -INSTALL (TARGETS dyninstAPI_RT dyninstAPI_RT_static - EXPORT DyninstTargets - RUNTIME DESTINATION ${INSTALL_LIB_DIR} - LIBRARY DESTINATION ${INSTALL_LIB_DIR} - ARCHIVE DESTINATION ${INSTALL_LIB_DIR} - PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) +install( + TARGETS dyninstAPI_RT dyninstAPI_RT_static + EXPORT DyninstTargets + RUNTIME DESTINATION ${INSTALL_LIB_DIR} + LIBRARY DESTINATION ${INSTALL_LIB_DIR} + ARCHIVE DESTINATION ${INSTALL_LIB_DIR} + PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) # Test to see if we want the 32-bit library -if (SRC_LIST_mabi) - -# The following code is from CheckCCompilerFlag.cmake. It uses a -# simple program that can be compiled even if 32-bit includes are -# missing; we need to extend it somewhat - -INCLUDE(CheckCSourceCompiles) - -MACRO (CHECK_C_COMPILER_FLAG_EXTENDED _FLAG _RESULT) - SET(SAFE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - SET(CMAKE_C_FLAGS "${_FLAG}") - -# Addition here: use signal.h - CHECK_C_SOURCE_COMPILES("#include - int main(void) { return 0; }" - ${_RESULT} -# End addition - # Some compilers do not fail with a bad flag - FAIL_REGEX "warning: command line option .* is valid for .* but not for C" - # Apple gcc - FAIL_REGEX "unrecognized .*option" # GNU - FAIL_REGEX "unknown .*option" # Clang - FAIL_REGEX "ignoring unknown option" # MSVC - FAIL_REGEX "warning D9002" # MSVC, any lang - FAIL_REGEX "[Uu]nknown option" # HP - FAIL_REGEX "[Ww]arning: [Oo]ption" # SunPro - FAIL_REGEX "command option .* is not recognized" # XL - ) - SET(CMAKE_C_FLAGS "${SAFE_CMAKE_C_FLAGS}") -ENDMACRO (CHECK_C_COMPILER_FLAG_EXTENDED) - - -message (STATUS "Checking for 32-bit runtime library...") - -CHECK_C_COMPILER_FLAG_EXTENDED ("-m32" CHECK_RT_LIB_32) -if (CHECK_RT_LIB_32 AND NOT ${BUILD_RTLIB_32} MATCHES "OFF") -message (STATUS "Enabling 32-bit runtime library; change BUILD_RTLIB_32 to OFF to disable") -SET (BUILD_RTLIB_32 ON) -ELSE () -message (STATUS "Disabling 32-bit runtime library; change BUILD_RTLIB_32 to ON and install 32-bit build environment to enable") -SET (BUILD_RTLIB_32 OFF) -ENDIF() - -if (BUILD_RTLIB_32 MATCHES "ON") - -add_library (dyninstAPI_RT_m32 SHARED ${SRC_LIST_mabi}) -target_link_libraries (dyninstAPI_RT_m32 ${CMAKE_DL_LIBS}) -add_library (dyninstAPI_RT_m32_static STATIC ${SRC_LIST_mabi} ${RT_STATIC_ONLY_SRC_LIST_mabi}) - -set_target_properties (dyninstAPI_RT_m32 - PROPERTIES - COMPILE_FLAGS "-DMUTATEE_32 -m32" - LINK_FLAGS "-m32" - OUTPUT_NAME dyninstAPI_RT_m32 - SOVERSION ${SOVERSION} - VERSION ${LIBVERSION}) - -set_target_properties (dyninstAPI_RT_m32_static - PROPERTIES - OUTPUT_NAME dyninstAPI_RT_m32 - COMPILE_FLAGS "-DMUTATEE_32 -m32" - LINK_FLAGS "-m32" - COMPILE_DEFINITIONS DYNINST_RT_STATIC_LIB) - -set_target_properties (dyninstAPI_RT_m32 PROPERTIES CLEAN_DIRECT_OUTPUT 1) -set_target_properties (dyninstAPI_RT_m32_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) - -INSTALL (TARGETS dyninstAPI_RT_m32 dyninstAPI_RT_m32_static - EXPORT DyninstTargets - RUNTIME DESTINATION ${INSTALL_LIB_DIR} - LIBRARY DESTINATION ${INSTALL_LIB_DIR} - ARCHIVE DESTINATION ${INSTALL_LIB_DIR} - PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) - -install (EXPORT DyninstTargets - DESTINATION "${INSTALL_CMAKE_DIR}") - -endif() +if(SRC_LIST_mabi) + + # The following code is from CheckCCompilerFlag.cmake. It uses a simple program that + # can be compiled even if 32-bit includes are missing; we need to extend it somewhat + + include(CheckCSourceCompiles) + + macro(CHECK_C_COMPILER_FLAG_EXTENDED _FLAG _RESULT) + set(SAFE_CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(CMAKE_C_FLAGS "${_FLAG}") + + # Addition here: use signal.h + check_c_source_compiles( + "#include + int main(void) { return 0; }" + ${_RESULT} + # End addition Some compilers do not fail with a bad flag + FAIL_REGEX + "warning: command line option .* is valid for .* but not for C" + # Apple gcc + FAIL_REGEX + "unrecognized .*option" # GNU + FAIL_REGEX + "unknown .*option" # Clang + FAIL_REGEX + "ignoring unknown option" # MSVC + FAIL_REGEX + "warning D9002" # MSVC, any lang + FAIL_REGEX + "[Uu]nknown option" # HP + FAIL_REGEX + "[Ww]arning: [Oo]ption" # SunPro + FAIL_REGEX + "command option .* is not recognized" # XL + ) + set(CMAKE_C_FLAGS "${SAFE_CMAKE_C_FLAGS}") + endmacro(CHECK_C_COMPILER_FLAG_EXTENDED) + + message(STATUS "Checking for 32-bit runtime library...") + + check_c_compiler_flag_extended("-m32" CHECK_RT_LIB_32) + if(CHECK_RT_LIB_32 AND NOT ${BUILD_RTLIB_32} MATCHES "OFF") + message( + STATUS + "Enabling 32-bit runtime library; change BUILD_RTLIB_32 to OFF to disable" + ) + set(BUILD_RTLIB_32 ON) + else() + message( + STATUS + "Disabling 32-bit runtime library; change BUILD_RTLIB_32 to ON and install 32-bit build environment to enable" + ) + set(BUILD_RTLIB_32 OFF) + endif() + + if(BUILD_RTLIB_32 MATCHES "ON") + + add_library(dyninstAPI_RT_m32 SHARED ${SRC_LIST_mabi}) + target_link_libraries(dyninstAPI_RT_m32 ${CMAKE_DL_LIBS}) + add_library(dyninstAPI_RT_m32_static STATIC ${SRC_LIST_mabi} + ${RT_STATIC_ONLY_SRC_LIST_mabi}) + + set_target_properties( + dyninstAPI_RT_m32 + PROPERTIES COMPILE_FLAGS "-DMUTATEE_32 -m32" + LINK_FLAGS "-m32" + OUTPUT_NAME dyninstAPI_RT_m32 + SOVERSION ${SOVERSION} + VERSION ${LIBVERSION}) + + set_target_properties( + dyninstAPI_RT_m32_static + PROPERTIES OUTPUT_NAME dyninstAPI_RT_m32 + COMPILE_FLAGS "-DMUTATEE_32 -m32" + LINK_FLAGS "-m32" + COMPILE_DEFINITIONS DYNINST_RT_STATIC_LIB) + + set_target_properties(dyninstAPI_RT_m32 PROPERTIES CLEAN_DIRECT_OUTPUT 1) + set_target_properties(dyninstAPI_RT_m32_static PROPERTIES CLEAN_DIRECT_OUTPUT 1) + + install( + TARGETS dyninstAPI_RT_m32 dyninstAPI_RT_m32_static + EXPORT DyninstTargets + RUNTIME DESTINATION ${INSTALL_LIB_DIR} + LIBRARY DESTINATION ${INSTALL_LIB_DIR} + ARCHIVE DESTINATION ${INSTALL_LIB_DIR} + PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) + + install(EXPORT DyninstTargets DESTINATION "${INSTALL_CMAKE_DIR}") + + endif() endif() diff --git a/elf/CMakeLists.txt b/elf/CMakeLists.txt index 4f80f46170..94f6f77fb7 100644 --- a/elf/CMakeLists.txt +++ b/elf/CMakeLists.txt @@ -1,17 +1,12 @@ # CMake configuration for dynElf (elf) directory -if (NOT UNIX) - return() +if(NOT UNIX) + return() endif() -include_directories ( - src - h - ) +include_directories(src h) -set (SRC_LIST - src/Elf_X.C - ) +set(SRC_LIST src/Elf_X.C) dyninst_library(dynElf ${LibElf_LIBRARIES}) if(TARGET TBB) @@ -20,8 +15,8 @@ endif() add_dependencies(dynElf ElfUtils) target_link_private_libraries(dynElf ${ElfUtils_LIBRARIES}) -if (ENABLE_DEBUGINFOD AND LibDebuginfod_FOUND) - add_definitions(-DDEBUGINFOD_LIB) +if(ENABLE_DEBUGINFOD AND LibDebuginfod_FOUND) + add_definitions(-DDEBUGINFOD_LIB) endif() add_definitions(-DDYNELF_LIB) diff --git a/instructionAPI/CMakeLists.txt b/instructionAPI/CMakeLists.txt index f780902f1f..3d81cec4e5 100644 --- a/instructionAPI/CMakeLists.txt +++ b/instructionAPI/CMakeLists.txt @@ -1,42 +1,39 @@ # CMake configuration for instructionAPI directory -include_directories ( +include_directories( ${PROJECT_SOURCE_DIR}/instructionAPI/src ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/cdna2 - ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/vega - ) + ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/vega) - -set (SRC_LIST - src/Instruction.C - src/InstructionAST.C - src/Operation.C - src/Operand.C - src/Register.C - src/Ternary.C - src/Expression.C - src/BinaryFunction.C - src/InstructionCategories.C - src/ArchSpecificFormatters.C - src/Immediate.C - src/InstructionDecoder.C - src/InstructionDecoder-x86.C - src/InstructionDecoder-power.C - src/InstructionDecoder-aarch64.C - src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C - src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C - src/InstructionDecoderImpl.C - ) -SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) +set(SRC_LIST + src/Instruction.C + src/InstructionAST.C + src/Operation.C + src/Operand.C + src/Register.C + src/Ternary.C + src/Expression.C + src/BinaryFunction.C + src/InstructionCategories.C + src/ArchSpecificFormatters.C + src/Immediate.C + src/InstructionDecoder.C + src/InstructionDecoder-x86.C + src/InstructionDecoder-power.C + src/InstructionDecoder-aarch64.C + src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C + src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C + src/InstructionDecoderImpl.C) +set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) set(instructionDecoderPowerExtraFlags "") -if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - if (${CMAKE_CXX_COMPILER_VERSION} MATCHES "^([1-9]|1[01])(\.|$)") - # Disable var-tracking-assignments for InstructionDecoder-power.C for - # all known versions of gcc.. The default max size is too small so it - # fails, and adjusting it using +if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + if(${CMAKE_CXX_COMPILER_VERSION} MATCHES "^([1-9]|1[01])(\.|$)") + # Disable var-tracking-assignments for InstructionDecoder-power.C for all known + # versions of gcc.. The default max size is too small so it fails, and adjusting + # it using # - # PROPERTIES COMPILE_FLAGS "--param=max-vartrack-size=900000000" + # PROPERTIES COMPILE_FLAGS "--param=max-vartrack-size=900000000" # # succeeds, but the object file produced is >1GB, so disable it. string(APPEND instructionDecoderPowerExtraFlags "-fno-var-tracking-assignments") @@ -44,37 +41,51 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") endif() # adjust warning threshold if set in cmake/warnings.cmake -if (debugMaxFrameSizeOverridePowerOpcodeTable) - string(APPEND instructionDecoderPowerExtraFlags - " $<$:-Wframe-larger-than=${debugMaxFrameSizeOverridePowerOpcodeTable}>") +if(debugMaxFrameSizeOverridePowerOpcodeTable) + string( + APPEND + instructionDecoderPowerExtraFlags + " $<$:-Wframe-larger-than=${debugMaxFrameSizeOverridePowerOpcodeTable}>" + ) endif() -if (nonDebugMaxFrameSizeOverridePowerOpcodeTable) - string(APPEND instructionDecoderPowerExtraFlags - " $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverridePowerOpcodeTable}>") +if(nonDebugMaxFrameSizeOverridePowerOpcodeTable) + string( + APPEND + instructionDecoderPowerExtraFlags + " $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverridePowerOpcodeTable}>" + ) endif() -if (NOT instructionDecoderPowerExtraFlags STREQUAL "") - SET_SOURCE_FILES_PROPERTIES(src/InstructionDecoder-power.C - PROPERTIES COMPILE_FLAGS "${instructionDecoderPowerExtraFlags}") +if(NOT instructionDecoderPowerExtraFlags STREQUAL "") + set_source_files_properties( + src/InstructionDecoder-power.C PROPERTIES COMPILE_FLAGS + "${instructionDecoderPowerExtraFlags}") endif() set(finalizeOperandsExtraFlags "") -if (debugMaxFrameSizeOverrideFinalizeOperands) - string(APPEND finalizeOperandsExtraFlags - " $<$:-Wframe-larger-than=${debugMaxFrameSizeOverrideFinalizeOperands}>") +if(debugMaxFrameSizeOverrideFinalizeOperands) + string( + APPEND + finalizeOperandsExtraFlags + " $<$:-Wframe-larger-than=${debugMaxFrameSizeOverrideFinalizeOperands}>" + ) endif() -if (nonDebugMaxFrameSizeOverrideFinalizeOperands) - string(APPEND finalizeOperandsExtraFlags - " $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverrideFinalizeOperands}>") +if(nonDebugMaxFrameSizeOverrideFinalizeOperands) + string( + APPEND + finalizeOperandsExtraFlags + " $<$>:-Wframe-larger-than=${nonDebugMaxFrameSizeOverrideFinalizeOperands}>" + ) endif() -if (NOT finalizeOperandsExtraFlags STREQUAL "") - SET_SOURCE_FILES_PROPERTIES(src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C - PROPERTIES COMPILE_FLAGS "${finalizeOperandsExtraFlags}") +if(NOT finalizeOperandsExtraFlags STREQUAL "") + set_source_files_properties(src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C + PROPERTIES COMPILE_FLAGS "${finalizeOperandsExtraFlags}") endif() -ADD_DEFINITIONS(-DINSTRUCTION_LIB) +add_definitions(-DINSTRUCTION_LIB) dyninst_library(instructionAPI common) -target_link_private_libraries(instructionAPI ${Boost_LIBRARIES} ${TBB_LIBRARIES} tbbmalloc) +target_link_private_libraries(instructionAPI ${Boost_LIBRARIES} ${TBB_LIBRARIES} + tbbmalloc) diff --git a/parseAPI/CMakeLists.txt b/parseAPI/CMakeLists.txt index 41245da9af..8faa83141e 100644 --- a/parseAPI/CMakeLists.txt +++ b/parseAPI/CMakeLists.txt @@ -1,139 +1,129 @@ # CMake configuration for parseAPI directory -include_directories ( - ${PROJECT_SOURCE_DIR}/parseAPI/src - ) +include_directories(${PROJECT_SOURCE_DIR}/parseAPI/src) -set (SRC_LIST - src/ParserDetails.C - src/Parser.C - src/CFGFactory.C - src/Function.C - src/Block.C - src/CodeObject.C - src/debug_parse.C - src/CodeSource.C - src/ParseData.C - src/InstructionAdapter.C - src/Parser-speculative.C - src/ParseCallback.C - src/IA_IAPI.C - src/IA_x86.C - src/IA_power.C - src/IA_aarch64.C +set(SRC_LIST + src/ParserDetails.C + src/Parser.C + src/CFGFactory.C + src/Function.C + src/Block.C + src/CodeObject.C + src/debug_parse.C + src/CodeSource.C + src/ParseData.C + src/InstructionAdapter.C + src/Parser-speculative.C + src/ParseCallback.C + src/IA_IAPI.C + src/IA_x86.C + src/IA_power.C + src/IA_aarch64.C src/IA_amdgpu.C - src/CFGModifier.C - src/StackTamperVisitor.C - src/JumpTableFormatPred.C - src/JumpTableIndexPred.C - src/IndirectAnalyzer.C - src/IndirectASTVisitor.C - src/SymbolicExpression.C - src/BoundFactCalculator.C - src/BoundFactData.C - src/ThunkData.C - ../dataflowAPI/src/ABI.C - src/dominator.C - src/LoopAnalyzer.C - src/Loop.C - src/LoopTreeNode.C - src/IdiomModelDesc.C - src/ProbabilisticParser.C - ) + src/CFGModifier.C + src/StackTamperVisitor.C + src/JumpTableFormatPred.C + src/JumpTableIndexPred.C + src/IndirectAnalyzer.C + src/IndirectASTVisitor.C + src/SymbolicExpression.C + src/BoundFactCalculator.C + src/BoundFactData.C + src/ThunkData.C + ../dataflowAPI/src/ABI.C + src/dominator.C + src/LoopAnalyzer.C + src/Loop.C + src/LoopTreeNode.C + src/IdiomModelDesc.C + src/ProbabilisticParser.C) set(ROSE_SRC - ../dataflowAPI/src/ABI.C - ../dataflowAPI/src/Absloc.C - ../dataflowAPI/src/AbslocInterface.C - ../dataflowAPI/src/convertOpcodes.C - ../dataflowAPI/src/debug_dataflow.C - ../dataflowAPI/src/ExpressionConversionVisitor.C - ../dataflowAPI/src/InstructionCache.C - ../dataflowAPI/src/liveness.C - ../dataflowAPI/src/RegisterMap.C - ../dataflowAPI/src/RoseImpl.C - ../dataflowAPI/src/RoseInsnFactory.C - ../dataflowAPI/src/slicing.C - ../dataflowAPI/src/stackanalysis.C - ../dataflowAPI/src/SymbolicExpansion.C - ../dataflowAPI/src/SymEval.C - ../dataflowAPI/src/SymEvalPolicy.C - ../dataflowAPI/src/templates.C - ../dataflowAPI/src/Visitors.C - ../dataflowAPI/rose/ExtentMap.C - ../dataflowAPI/rose/rangemap.C - ../dataflowAPI/rose/util/Assert.C - ../dataflowAPI/rose/util/Message.C - ../dataflowAPI/rose/util/Sawyer.C - ../dataflowAPI/rose/util/Synchronization.C - ../dataflowAPI/rose/util/rose_getline.C - ../dataflowAPI/rose/util/SmallObject.C - ../dataflowAPI/rose/util/Stopwatch.C - ../dataflowAPI/rose/util/StringUtility.C - ../dataflowAPI/rose/util/Attribute.C - ../dataflowAPI/rose/util/Combinatorics.C - ../dataflowAPI/rose/util/LinearCongruentialGenerator.C - ../dataflowAPI/rose/semantics/BaseSemantics2.C - ../dataflowAPI/rose/semantics/DispatcherARM64.C - ../dataflowAPI/rose/semantics/DispatcherAmdgpuVega.C - ../dataflowAPI/rose/semantics/DispatcherPowerpc.C - ../dataflowAPI/rose/semantics/RegisterParts.C - ../dataflowAPI/rose/semantics/Registers.C - ../dataflowAPI/rose/semantics/BinarySymbolicExpr.C - ../dataflowAPI/rose/semantics/RegisterStateGeneric.C - ../dataflowAPI/rose/semantics/SymEvalSemantics.C -) + ../dataflowAPI/src/ABI.C + ../dataflowAPI/src/Absloc.C + ../dataflowAPI/src/AbslocInterface.C + ../dataflowAPI/src/convertOpcodes.C + ../dataflowAPI/src/debug_dataflow.C + ../dataflowAPI/src/ExpressionConversionVisitor.C + ../dataflowAPI/src/InstructionCache.C + ../dataflowAPI/src/liveness.C + ../dataflowAPI/src/RegisterMap.C + ../dataflowAPI/src/RoseImpl.C + ../dataflowAPI/src/RoseInsnFactory.C + ../dataflowAPI/src/slicing.C + ../dataflowAPI/src/stackanalysis.C + ../dataflowAPI/src/SymbolicExpansion.C + ../dataflowAPI/src/SymEval.C + ../dataflowAPI/src/SymEvalPolicy.C + ../dataflowAPI/src/templates.C + ../dataflowAPI/src/Visitors.C + ../dataflowAPI/rose/ExtentMap.C + ../dataflowAPI/rose/rangemap.C + ../dataflowAPI/rose/util/Assert.C + ../dataflowAPI/rose/util/Message.C + ../dataflowAPI/rose/util/Sawyer.C + ../dataflowAPI/rose/util/Synchronization.C + ../dataflowAPI/rose/util/rose_getline.C + ../dataflowAPI/rose/util/SmallObject.C + ../dataflowAPI/rose/util/Stopwatch.C + ../dataflowAPI/rose/util/StringUtility.C + ../dataflowAPI/rose/util/Attribute.C + ../dataflowAPI/rose/util/Combinatorics.C + ../dataflowAPI/rose/util/LinearCongruentialGenerator.C + ../dataflowAPI/rose/semantics/BaseSemantics2.C + ../dataflowAPI/rose/semantics/DispatcherARM64.C + ../dataflowAPI/rose/semantics/DispatcherAmdgpuVega.C + ../dataflowAPI/rose/semantics/DispatcherPowerpc.C + ../dataflowAPI/rose/semantics/RegisterParts.C + ../dataflowAPI/rose/semantics/Registers.C + ../dataflowAPI/rose/semantics/BinarySymbolicExpr.C + ../dataflowAPI/rose/semantics/RegisterStateGeneric.C + ../dataflowAPI/rose/semantics/SymEvalSemantics.C) # FIXME: Rose needs a bunch of warning cleanup -SET_SOURCE_FILES_PROPERTIES(${ROSE_SRC} PROPERTIES LANGUAGE CXX COMPILE_FLAGS -w) -set (SRC_LIST ${SRC_LIST} - ${ROSE_SRC} -) +set_source_files_properties(${ROSE_SRC} PROPERTIES LANGUAGE CXX COMPILE_FLAGS -w) +set(SRC_LIST ${SRC_LIST} ${ROSE_SRC}) -if (LIGHTWEIGHT_SYMTAB) -set (SRC_LIST ${SRC_LIST} - src/SymLiteCodeSource.C -) +if(LIGHTWEIGHT_SYMTAB) + set(SRC_LIST ${SRC_LIST} src/SymLiteCodeSource.C) else() -set (SRC_LIST ${SRC_LIST} - src/SymtabCodeSource.C -) + set(SRC_LIST ${SRC_LIST} src/SymtabCodeSource.C) endif() -if (ENABLE_PARSE_API_GRAPHS) -set (SRC_LIST ${SRC_LIST} - src/GraphAdapter.C - ) +if(ENABLE_PARSE_API_GRAPHS) + set(SRC_LIST ${SRC_LIST} src/GraphAdapter.C) endif() - -ADD_DEFINITIONS(-DPARSER_LIB) -ADD_DEFINITIONS(-DDATAFLOW_LIB) +add_definitions(-DPARSER_LIB) +add_definitions(-DDATAFLOW_LIB) if(WIN32) -ADD_DEFINITIONS(-DROSE_UTIL_EXPORTS) -ADD_DEFINITIONS(-DNOMINMAX) + add_definitions(-DROSE_UTIL_EXPORTS) + add_definitions(-DNOMINMAX) endif() dyninst_library(parseAPI common instructionAPI ${SYMREADER}) target_link_private_libraries(parseAPI ${Boost_LIBRARIES} ${TBB_LIBRARIES} tbbmalloc) -if (WIN32) -target_link_private_libraries(parseAPI shlwapi) +if(WIN32) + target_link_private_libraries(parseAPI shlwapi) endif() message(STATUS "Architecture is: ${CMAKE_LIBRARY_ARCHITECTURE}") -FILE (GLOB headers "h/*.h") -FILE (GLOB dataflowheaders "../dataflowAPI/h/*.h") -set_target_properties (parseAPI PROPERTIES PUBLIC_HEADER "${headers};${dataflowheaders}") +file(GLOB headers "h/*.h") +file(GLOB dataflowheaders "../dataflowAPI/h/*.h") +set_target_properties(parseAPI PROPERTIES PUBLIC_HEADER "${headers};${dataflowheaders}") -if (USE_OpenMP) -set_target_properties (parseAPI PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} LINK_FLAGS ${OpenMP_CXX_FLAGS}) +if(USE_OpenMP) + set_target_properties(parseAPI PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} + LINK_FLAGS ${OpenMP_CXX_FLAGS}) endif() if(${ENABLE_STATIC_LIBS}) - set_target_properties (parseAPI_static PROPERTIES PUBLIC_HEADER "${headers};${dataflowheaders}") + set_target_properties(parseAPI_static PROPERTIES PUBLIC_HEADER + "${headers};${dataflowheaders}") endif() -install (TARGETS parseAPI +install( + TARGETS parseAPI RUNTIME DESTINATION ${INSTALL_LIB_DIR} LIBRARY DESTINATION ${INSTALL_LIB_DIR} ARCHIVE DESTINATION ${INSTALL_LIB_DIR} diff --git a/parseThat/CMakeLists.txt b/parseThat/CMakeLists.txt index 96121b3b9b..bdbe14fd7d 100644 --- a/parseThat/CMakeLists.txt +++ b/parseThat/CMakeLists.txt @@ -1,9 +1,35 @@ -add_executable(parseThat src/parseThat.C src/config.C src/ipc.C src/record.C src/strlist.C src/reglist.C src/log.C src/utils.C src/sha1.C src/dyninstCore.C src/dyninstCompat.v5.C) +add_executable( + parseThat + src/parseThat.C + src/config.C + src/ipc.C + src/record.C + src/strlist.C + src/reglist.C + src/log.C + src/utils.C + src/sha1.C + src/dyninstCore.C + src/dyninstCompat.v5.C) add_definitions(-DHAVE_BPATCH_PROCESS_H) -if (USE_OpenMP) -set_target_properties (parseThat PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} LINK_FLAGS ${OpenMP_CXX_FLAGS}) +if(USE_OpenMP) + set_target_properties(parseThat PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} + LINK_FLAGS ${OpenMP_CXX_FLAGS}) endif() -target_link_private_libraries(parseThat dyninstAPI patchAPI parseAPI instructionAPI stackwalk symtabAPI common pcontrol dynDwarf dynElf ${Boost_LIBRARIES} ${ElfUtils_LIBRARIES}) +target_link_private_libraries( + parseThat + dyninstAPI + patchAPI + parseAPI + instructionAPI + stackwalk + symtabAPI + common + pcontrol + dynDwarf + dynElf + ${Boost_LIBRARIES} + ${ElfUtils_LIBRARIES}) install(TARGETS parseThat RUNTIME DESTINATION bin) diff --git a/patchAPI/CMakeLists.txt b/patchAPI/CMakeLists.txt index 237e870f06..3ba62c7bc0 100644 --- a/patchAPI/CMakeLists.txt +++ b/patchAPI/CMakeLists.txt @@ -1,31 +1,28 @@ # CMake configuration for patchAPI directory -include_directories ( - ${PROJECT_SOURCE_DIR}/patchAPI/src - ) +include_directories(${PROJECT_SOURCE_DIR}/patchAPI/src) -set (SRC_LIST - src/AddrSpace.C - src/Instrumenter.C - src/PatchObject.C - src/PatchBlock.C - src/PatchEdge.C - src/PatchFunction.C - src/PatchMgr.C - src/Point.C - src/CFGMaker.C - src/PointMaker.C - src/Command.C - src/PatchCallback.C - src/ParseCallback.C - src/PatchModifier.C - src/PatchLoop.C - src/PatchLoopTreeNode.C - ) +set(SRC_LIST + src/AddrSpace.C + src/Instrumenter.C + src/PatchObject.C + src/PatchBlock.C + src/PatchEdge.C + src/PatchFunction.C + src/PatchMgr.C + src/Point.C + src/CFGMaker.C + src/PointMaker.C + src/Command.C + src/PatchCallback.C + src/ParseCallback.C + src/PatchModifier.C + src/PatchLoop.C + src/PatchLoopTreeNode.C) -SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) +set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) -ADD_DEFINITIONS(-DPATCHAPI_LIB) +add_definitions(-DPATCHAPI_LIB) dyninst_library(patchAPI common instructionAPI parseAPI) target_link_private_libraries(patchAPI ${Boost_LIBRARIES}) diff --git a/proccontrol/CMakeLists.txt b/proccontrol/CMakeLists.txt index d0b6ed3e04..c39cb3514f 100644 --- a/proccontrol/CMakeLists.txt +++ b/proccontrol/CMakeLists.txt @@ -1,86 +1,77 @@ # CMake configuration for proccontrol directory -include_directories ( - src - h - ) +include_directories(src h) -set (SRC_LIST - src/event.C - src/generator.C - src/handler.C - src/mailbox.C - src/process.C - src/pcerrors.C - src/procpool.C - src/irpc.C - src/response.C - src/resp.C - src/memcache.C - src/procset.C - src/processplat.C - src/loadLibrary/injector.C - src/loadLibrary/codegen.C - src/loadLibrary/codegen-x86.C - src/loadLibrary/codegen-ppc.C - src/loadLibrary/codegen-aarch64.C - src/x86_process.C - src/ppc_process.C - src/arm_process.C - src/pcmachsyscall.C - ) +set(SRC_LIST + src/event.C + src/generator.C + src/handler.C + src/mailbox.C + src/process.C + src/pcerrors.C + src/procpool.C + src/irpc.C + src/response.C + src/resp.C + src/memcache.C + src/procset.C + src/processplat.C + src/loadLibrary/injector.C + src/loadLibrary/codegen.C + src/loadLibrary/codegen-x86.C + src/loadLibrary/codegen-ppc.C + src/loadLibrary/codegen-aarch64.C + src/x86_process.C + src/ppc_process.C + src/arm_process.C + src/pcmachsyscall.C) if(UNIX) -set (SRC_LIST ${SRC_LIST} - src/sysv.C - src/int_thread_db.C - src/mmapalloc.C -) + set(SRC_LIST ${SRC_LIST} src/sysv.C src/int_thread_db.C src/mmapalloc.C) elseif(WIN32) -set (SRC_LIST ${SRC_LIST} - src/GeneratorWindows.C - src/DecoderWindows.C - src/windows_handler.C - src/windows_process.C - src/windows_thread.C - src/loadLibrary/codegen-win.C - ../common/src/dthread-win.C - ../common/src/dthread.C -) + set(SRC_LIST + ${SRC_LIST} + src/GeneratorWindows.C + src/DecoderWindows.C + src/windows_handler.C + src/windows_process.C + src/windows_thread.C + src/loadLibrary/codegen-win.C + ../common/src/dthread-win.C + ../common/src/dthread.C) endif() -if (PLATFORM MATCHES freebsd) -set (SRC_LIST ${SRC_LIST} - src/freebsd.C - src/unix.C - src/notify_pipe.C - ../common/src/dthread-unix.C - ../common/src/dthread.C - src/loadLibrary/codegen-freebsd.C - ) -elseif (PLATFORM MATCHES linux) -set (SRC_LIST ${SRC_LIST} - src/linux.C - src/unix.C - src/notify_pipe.C - ../common/src/dthread-unix.C - ../common/src/dthread.C - src/loadLibrary/codegen-linux.C - ) +if(PLATFORM MATCHES freebsd) + set(SRC_LIST + ${SRC_LIST} + src/freebsd.C + src/unix.C + src/notify_pipe.C + ../common/src/dthread-unix.C + ../common/src/dthread.C + src/loadLibrary/codegen-freebsd.C) +elseif(PLATFORM MATCHES linux) + set(SRC_LIST + ${SRC_LIST} + src/linux.C + src/unix.C + src/notify_pipe.C + ../common/src/dthread-unix.C + ../common/src/dthread.C + src/loadLibrary/codegen-linux.C) endif() -SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) +set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) -ADD_DEFINITIONS(-DPROCCONTROL_EXPORTS) +add_definitions(-DPROCCONTROL_EXPORTS) -set (DEPS common ${SYMREADER}) +set(DEPS common ${SYMREADER}) dyninst_library(pcontrol ${DEPS}) target_link_private_libraries(pcontrol ${CMAKE_DL_LIBS}) target_link_private_libraries(pcontrol ${Boost_LIBRARIES}) -if (UNIX) -# Boost auto-links on Windows; don't double-link -target_link_private_libraries(pcontrol pthread) +if(UNIX) + # Boost auto-links on Windows; don't double-link + target_link_private_libraries(pcontrol pthread) endif() - diff --git a/stackwalk/CMakeLists.txt b/stackwalk/CMakeLists.txt index 106717e693..c9374818f2 100644 --- a/stackwalk/CMakeLists.txt +++ b/stackwalk/CMakeLists.txt @@ -1,103 +1,72 @@ # CMake configuration for proccontrol directory -include_directories ( - ${PROJECT_SOURCE_DIR}/proccontrol/h - ${PROJECT_SOURCE_DIR}/elf/h - ${PROJECT_SOURCE_DIR}/dwarf/h - src - h - ) +include_directories(${PROJECT_SOURCE_DIR}/proccontrol/h ${PROJECT_SOURCE_DIR}/elf/h + ${PROJECT_SOURCE_DIR}/dwarf/h src h) -set (SRC_LIST - src/frame.C - src/framestepper.C - src/swk_errors.C - src/symlookup.C - src/walker.C - src/procstate.C - src/steppergroup.C - src/libstate.C - src/sw_pcontrol.C -) +set(SRC_LIST + src/frame.C + src/framestepper.C + src/swk_errors.C + src/symlookup.C + src/walker.C + src/procstate.C + src/steppergroup.C + src/libstate.C + src/sw_pcontrol.C) -if (PLATFORM MATCHES freebsd) -set (SRC_LIST ${SRC_LIST} - src/freebsd-swk.C - src/x86-swk.C - src/symtab-swk.C - src/dbginfo-stepper.C - src/x86-wanderer.C - src/linuxbsd-swk.C - src/linuxbsd-x86-swk.C - src/freebsd-x86-swk.C -) -elseif (PLATFORM MATCHES linux OR PLATFORM MATCHES freebsd) - set (SRC_LIST ${SRC_LIST} - src/symtab-swk.C - src/linuxbsd-swk.C - src/linux-swk.C - ) - if (PLATFORM MATCHES ppc) - set (SRC_LIST ${SRC_LIST} - src/linux-ppc-swk.C - src/ppc-swk.C - ) +if(PLATFORM MATCHES freebsd) + set(SRC_LIST + ${SRC_LIST} + src/freebsd-swk.C + src/x86-swk.C + src/symtab-swk.C + src/dbginfo-stepper.C + src/x86-wanderer.C + src/linuxbsd-swk.C + src/linuxbsd-x86-swk.C + src/freebsd-x86-swk.C) +elseif(PLATFORM MATCHES linux OR PLATFORM MATCHES freebsd) + set(SRC_LIST ${SRC_LIST} src/symtab-swk.C src/linuxbsd-swk.C src/linux-swk.C) + if(PLATFORM MATCHES ppc) + set(SRC_LIST ${SRC_LIST} src/linux-ppc-swk.C src/ppc-swk.C) - elseif (PLATFORM MATCHES aarch64) - set (SRC_LIST ${SRC_LIST} - src/linux-aarch64-swk.C - src/aarch64-swk.C - src/dbginfo-stepper.C - ) + elseif(PLATFORM MATCHES aarch64) + set(SRC_LIST ${SRC_LIST} src/linux-aarch64-swk.C src/aarch64-swk.C + src/dbginfo-stepper.C) - elseif (PLATFORM MATCHES i386 OR PLATFORM MATCHES x86_64) - set (SRC_LIST ${SRC_LIST} - src/dbginfo-stepper.C - src/linux-x86-swk.C - src/x86-wanderer.C - src/linuxbsd-x86-swk.C - src/x86-swk.C - ) + elseif(PLATFORM MATCHES i386 OR PLATFORM MATCHES x86_64) + set(SRC_LIST ${SRC_LIST} src/dbginfo-stepper.C src/linux-x86-swk.C + src/x86-wanderer.C src/linuxbsd-x86-swk.C src/x86-swk.C) endif() endif() -if (PLATFORM MATCHES nt OR PLATFORM MATCHES windows) - set (SRC_LIST ${SRC_LIST} - src/x86-wanderer.C - src/x86-swk.C - src/win-x86-swk.C - src/symtab-swk.C - ) +if(PLATFORM MATCHES nt OR PLATFORM MATCHES windows) + set(SRC_LIST ${SRC_LIST} src/x86-wanderer.C src/x86-swk.C src/win-x86-swk.C + src/symtab-swk.C) endif() -if (SW_ANALYSIS_STEPPER) - set (SRC_LIST ${SRC_LIST} - src/analysis_stepper.C - src/callchecker-IAPI.C - ) -else () - set (SRC_LIST ${SRC_LIST} - src/callchecker.C - ) +if(SW_ANALYSIS_STEPPER) + set(SRC_LIST ${SRC_LIST} src/analysis_stepper.C src/callchecker-IAPI.C) +else() + set(SRC_LIST ${SRC_LIST} src/callchecker.C) endif() -SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) +set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) -ADD_DEFINITIONS(-DSTACKWALKER_EXPORTS) +add_definitions(-DSTACKWALKER_EXPORTS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${FORCE_FRAME_POINTER}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${FORCE_FRAME_POINTER}") set(DEPS common instructionAPI pcontrol) -if (UNIX) -set (DEPS ${DEPS} dynDwarf dynElf) +if(UNIX) + set(DEPS ${DEPS} dynDwarf dynElf) endif() -set (DEPS ${DEPS} ${SYMREADER}) +set(DEPS ${DEPS} ${SYMREADER}) -if (SW_ANALYSIS_STEPPER) -set (DEPS ${DEPS} parseAPI) +if(SW_ANALYSIS_STEPPER) + set(DEPS ${DEPS} parseAPI) endif() - dyninst_library(stackwalk ${DEPS}) target_link_private_libraries(stackwalk ${Boost_LIBRARIES}) diff --git a/symlite/CMakeLists.txt b/symlite/CMakeLists.txt index 343ae92f86..7bac328fed 100644 --- a/symlite/CMakeLists.txt +++ b/symlite/CMakeLists.txt @@ -1,31 +1,22 @@ # CMake configuration for symlite directory -if (NOT UNIX) - return() +if(NOT UNIX) + return() endif() -include_directories ( - src - ${PROJECT_SOURCE_DIR}/elf/h - ) +include_directories(src ${PROJECT_SOURCE_DIR}/elf/h) -set (SRC_LIST - src/SymLite-elf.C - ) +set(SRC_LIST src/SymLite-elf.C) add_definitions(-DSYMLITE_LIB) -#add_library (symLite ${SRC_LIST}) -#add_library (symLite_static STATIC ${SRC_LIST}) -#FILE (GLOB headers "h/*.h") -#set_target_properties (symLite symLite_static PROPERTIES PUBLIC_HEADER "${headers}") +# add_library (symLite ${SRC_LIST}) add_library (symLite_static STATIC ${SRC_LIST}) FILE +# (GLOB headers "h/*.h") set_target_properties (symLite symLite_static PROPERTIES +# PUBLIC_HEADER "${headers}") -#target_link_private_libraries (symLite common) -#target_link_private_libraries (symLite dynElf) +# target_link_private_libraries (symLite common) target_link_private_libraries (symLite +# dynElf) -#INSTALL (TARGETS symLite symLite_static -# EXPORT DyninstTargets -# RUNTIME DESTINATION ${INSTALL_LIB_DIR} -# LIBRARY DESTINATION ${INSTALL_LIB_DIR} -# ARCHIVE DESTINATION ${INSTALL_LIB_DIR} -# PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) +# INSTALL (TARGETS symLite symLite_static EXPORT DyninstTargets RUNTIME DESTINATION +# ${INSTALL_LIB_DIR} LIBRARY DESTINATION ${INSTALL_LIB_DIR} ARCHIVE DESTINATION +# ${INSTALL_LIB_DIR} PUBLIC_HEADER DESTINATION ${INSTALL_INCLUDE_DIR}) dyninst_library(symLite common dynElf) diff --git a/symtabAPI/CMakeLists.txt b/symtabAPI/CMakeLists.txt index 4ca6896f83..bdfdf49359 100644 --- a/symtabAPI/CMakeLists.txt +++ b/symtabAPI/CMakeLists.txt @@ -1,113 +1,83 @@ # CMake configuration for symtabAPI directory -include_directories ( - src - h - ${PROJECT_SOURCE_DIR}/dwarf/h - ${PROJECT_SOURCE_DIR}/elf/h - ) +include_directories(src h ${PROJECT_SOURCE_DIR}/dwarf/h ${PROJECT_SOURCE_DIR}/elf/h) if(NOT WIN32) - include_directories(${PROJECT_SOURCE_DIR}/common/src) + include_directories(${PROJECT_SOURCE_DIR}/common/src) endif() - - -set (SRC_LIST - src/Object.C - src/Aggregate.C - src/Function.C - src/Variable.C - src/Symbol.C - src/LineInformation.C - src/Symtab.C - src/Symtab-edit.C - src/Symtab-lookup.C - src/Module.C - src/Region.C - src/Collections.C - src/Type.C - src/AddrLookup.C - src/annotations.C - src/debug.C - src/SymtabReader.C - ) - -if (PLATFORM MATCHES freebsd OR - PLATFORM MATCHES linux) - -set (SRC_LIST ${SRC_LIST} - src/Object-elf.C - src/Archive.C - src/Archive-elf.C - src/parseDwarf.C +set(SRC_LIST + src/Object.C + src/Aggregate.C + src/Function.C + src/Variable.C + src/Symbol.C + src/LineInformation.C + src/Symtab.C + src/Symtab-edit.C + src/Symtab-lookup.C + src/Module.C + src/Region.C + src/Collections.C + src/Type.C + src/AddrLookup.C + src/annotations.C + src/debug.C + src/SymtabReader.C) + +if(PLATFORM MATCHES freebsd OR PLATFORM MATCHES linux) + + set(SRC_LIST + ${SRC_LIST} + src/Object-elf.C + src/Archive.C + src/Archive-elf.C + src/parseDwarf.C src/LinkMap.C src/emitElf.C - src/emitElfStatic.C - src/dwarfWalker.C -) - -if (PLATFORM MATCHES x86_64 OR PLATFORM MATCHES amd64) -set (SRC_LIST ${SRC_LIST} - src/emitElfStatic-x86.C - src/relocationEntry-elf-x86.C - ) -elseif (PLATFORM MATCHES i386) -set (SRC_LIST ${SRC_LIST} - src/emitElfStatic-x86.C - src/relocationEntry-elf-x86.C - ) -elseif (PLATFORM MATCHES ppc64) -set (SRC_LIST ${SRC_LIST} - src/emitElfStatic-ppc64.C - src/relocationEntry-elf-ppc64.C - ) -elseif (PLATFORM MATCHES aarch64) -set (SRC_LIST ${SRC_LIST} - src/emitElfStatic-aarch64.C - src/relocationEntry-elf-aarch64.C - ) -else (TRUE) -set (SRC_LIST ${SRC_LIST} - src/emitElfStatic-stub.C - src/relocationEntry-stub.C - ) -endif() + src/emitElfStatic.C + src/dwarfWalker.C) + + if(PLATFORM MATCHES x86_64 OR PLATFORM MATCHES amd64) + set(SRC_LIST ${SRC_LIST} src/emitElfStatic-x86.C src/relocationEntry-elf-x86.C) + elseif(PLATFORM MATCHES i386) + set(SRC_LIST ${SRC_LIST} src/emitElfStatic-x86.C src/relocationEntry-elf-x86.C) + elseif(PLATFORM MATCHES ppc64) + set(SRC_LIST ${SRC_LIST} src/emitElfStatic-ppc64.C + src/relocationEntry-elf-ppc64.C) + elseif(PLATFORM MATCHES aarch64) + set(SRC_LIST ${SRC_LIST} src/emitElfStatic-aarch64.C + src/relocationEntry-elf-aarch64.C) + else(TRUE) + set(SRC_LIST ${SRC_LIST} src/emitElfStatic-stub.C src/relocationEntry-stub.C) + endif() endif() - -if (PLATFORM MATCHES nt) -set (SRC_LIST ${SRC_LIST} - src/Object-nt.C - src/emitWin.C - src/relocationEntry-stub.C -) +if(PLATFORM MATCHES nt) + set(SRC_LIST ${SRC_LIST} src/Object-nt.C src/emitWin.C src/relocationEntry-stub.C) endif() -SET_SOURCE_FILES_PROPERTIES(${SRC_LIST} PROPERTIES LANGUAGE CXX) +set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) -ADD_DEFINITIONS(-DSYMTAB_LIB) +add_definitions(-DSYMTAB_LIB) -set (DEPS common) +set(DEPS common) if(UNIX) - list (APPEND DEPS - dynElf - dynDwarf - ${ElfUtils_LIBRARIES} - ) + list(APPEND DEPS dynElf dynDwarf ${ElfUtils_LIBRARIES}) else() - list (APPEND DEPS dbghelp) + list(APPEND DEPS dbghelp) endif() dyninst_library(symtabAPI ${DEPS}) if(TARGET ElfUtils) - add_dependencies(symtabAPI ElfUtils) + add_dependencies(symtabAPI ElfUtils) endif() target_link_private_libraries(symtabAPI ${Boost_LIBRARIES}) if(USE_OpenMP) - set_target_properties(symtabAPI PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} LINK_FLAGS ${OpenMP_CXX_FLAGS}) + set_target_properties(symtabAPI PROPERTIES COMPILE_FLAGS ${OpenMP_CXX_FLAGS} + LINK_FLAGS ${OpenMP_CXX_FLAGS}) endif() From 231dd173f44912e318a4a3e294b2fc7aaa83ecad Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 6 May 2022 15:52:11 -0500 Subject: [PATCH 120/505] Remove endian CMake check (#1270) The usage of the macros was removed by d233ae759 in 2020. --- cmake/endian.cmake | 8 -------- cmake/shared.cmake | 1 - 2 files changed, 9 deletions(-) delete mode 100644 cmake/endian.cmake diff --git a/cmake/endian.cmake b/cmake/endian.cmake deleted file mode 100644 index b24c512dee..0000000000 --- a/cmake/endian.cmake +++ /dev/null @@ -1,8 +0,0 @@ -include(TestBigEndian) - -test_big_endian(BIGENDIAN) -if(${BIGENDIAN}) - add_definitions(-DDYNINST_BIG_ENDIAN) -else() - add_definitions(-DDYNINST_LITTLE_ENDIAN) -endif(${BIGENDIAN}) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 5c9a39355a..6d27929bbc 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -106,7 +106,6 @@ include(${DYNINST_ROOT}/cmake/visibility.cmake) include(${DYNINST_ROOT}/cmake/warnings.cmake) include(${DYNINST_ROOT}/cmake/options.cmake) include(${DYNINST_ROOT}/cmake/optimization.cmake) -include(${DYNINST_ROOT}/cmake/endian.cmake) set(BUILD_SHARED_LIBS ON) From 5e601431484bba3623697c37078ba794998c404c Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Wed, 11 May 2022 13:23:34 -0500 Subject: [PATCH 121/505] Docker: make build.sh verbose, fix file copy bug in Dockerfile.test (#1273) - remove old code before copying code into testing container - build with verbosity in build.sh (this helps when build errors occur) --- docker/Dockerfile.test | 3 +++ docker/build.sh | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docker/Dockerfile.test b/docker/Dockerfile.test index 3ebb608b0c..f08a5bbde9 100644 --- a/docker/Dockerfile.test +++ b/docker/Dockerfile.test @@ -3,6 +3,9 @@ FROM ${dyninst_base} # docker build --build-arg dyninst_base=ghcr.io/dyninst/dyninst-ubuntu-20.04:latest -f Dockerfile.test -t dyninst-test ../ +# Remove old code +RUN rm -rf /code + # Add updated Dyninst code COPY . /code diff --git a/docker/build.sh b/docker/build.sh index 804aa60215..435d2b0061 100644 --- a/docker/build.sh +++ b/docker/build.sh @@ -17,7 +17,7 @@ mkdir -p $DYNINST_INSTALL_DIR CMAKE_WERROR_FLAGS='-DCMAKE_C_FLAGS="-Werror" -DCMAKE_CXX_FLAGS="-Werror"' cmake -S /code -B $DYNINST_BUILD_DIR -DCMAKE_INSTALL_PREFIX=$DYNINST_INSTALL_DIR $CMAKE_WERROR_FLAGS -cmake --build $DYNINST_BUILD_DIR -- -j2 +cmake --build $DYNINST_BUILD_DIR --target all --parallel 2 -- VERBOSE=1 cmake --install $DYNINST_BUILD_DIR echo "::endgroup::" From 35c289a2d38bd5b3c20c07cbe1c1f3c31ccc34a1 Mon Sep 17 00:00:00 2001 From: John Mellor-Crummey Date: Mon, 11 Jul 2022 19:07:00 -0500 Subject: [PATCH 122/505] fix races with parallel analysis of cubins (#1284) --- symtabAPI/src/LineInformation.C | 11 +++++++++-- symtabAPI/src/Object-elf.C | 12 +++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/symtabAPI/src/LineInformation.C b/symtabAPI/src/LineInformation.C index 56c3ad6169..2f44a357c6 100644 --- a/symtabAPI/src/LineInformation.C +++ b/symtabAPI/src/LineInformation.C @@ -60,8 +60,12 @@ bool LineInformation::addLine( unsigned int lineSource, lowInclusiveAddr, highExclusiveAddr); Statement::Ptr insert_me(the_stmt); insert_me->setStrings_(strings_); - return insert( insert_me).second; - + bool result; +#pragma omp critical (addLine) +{ + result = insert( insert_me).second; +} + return result; } /* end setLineToAddressRangeMapping() */ bool LineInformation::addLine( std::string lineSource, unsigned int lineNo, @@ -78,8 +82,11 @@ void LineInformation::addLineInfo(LineInformation *lineInfo) { if(!lineInfo) return; +#pragma omp critical (addLine) +{ insert(lineInfo->begin(), lineInfo->end()); } +} bool LineInformation::addAddressRange( Offset lowInclusiveAddr, Offset highExclusiveAddr, diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index d70477d7d5..896095f9cf 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3646,9 +3646,15 @@ LineInformation* Object::parseLineInfoForObject(StringTablePtr strings) int status; - while ((status = dwarf_next_lines(dbg, off = next_off, &next_off, &cu, - &files, &fileCount, &lineBuffer, &lineCount)) == 0) - { + while (1) { + +#pragma omp critical (next_lines) +{ + status = dwarf_next_lines(dbg, off = next_off, &next_off, &cu, + &files, &fileCount, &lineBuffer, &lineCount); +} + if (status != 0) break; + boost::unique_lock l(strings->lock); size_t offset = strings->size(); From 3dd22166bc74eae637ceec1bc9846dc008259dc3 Mon Sep 17 00:00:00 2001 From: "James A. Kupsch" Date: Sun, 10 Jul 2022 23:37:37 -0500 Subject: [PATCH 123/505] Add exec entry point to parse hints is missing Always include an an executable's entry point as a parsing hint, otherwise for stripped binaries no functions are parsed. --- parseAPI/src/SymtabCodeSource.C | 42 +++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/parseAPI/src/SymtabCodeSource.C b/parseAPI/src/SymtabCodeSource.C index 6d098cfdbe..f44b8835ef 100644 --- a/parseAPI/src/SymtabCodeSource.C +++ b/parseAPI/src/SymtabCodeSource.C @@ -29,6 +29,7 @@ */ #include #include +#include #include @@ -482,6 +483,9 @@ SymtabCodeSource::init_hints(RegionMap &rmap, hint_filt * filt) parsing_printf("[%s:%d] processing %lu symtab hints\n",FILE__,__LINE__, fsyms.size()); + atomic_bool foundEntrySymbol{}; + Address entryOffset = _symtab->getEntryOffset(); + #pragma omp parallel for schedule(auto) for (unsigned int i = 0; i < fsyms.size(); i++) { SymtabAPI::Function *f = fsyms[i]; @@ -542,6 +546,10 @@ SymtabCodeSource::init_hints(RegionMap &rmap, hint_filt * filt) sr->getMemOffset(), sr->getMemOffset()+sr->getDiskSize()); } else { + if (entryOffset == offset) { + foundEntrySymbol = true; + } + _hints.push_back(Hint(f->getOffset(), f->getSymbolSize(), cr, fname_s)); parsing_printf("\t<%lx,%s,[%lx,%lx)>\n", f->getOffset(), @@ -550,6 +558,40 @@ SymtabCodeSource::init_hints(RegionMap &rmap, hint_filt * filt) cr->offset()+cr->length()); } } + + if (!foundEntrySymbol && _symtab->isExecutable()) { + // add entry point as this object is an executable + // and no symbol referenced the entry point + parsing_printf("Adding exectable entry point at %lx\n", entryOffset); + SymtabAPI::Region *sr = _symtab->findEnclosingRegion(entryOffset); + if (sr) { + CodeRegion *cr = NULL; + { + RegionMap::const_accessor a; + bool found = rmap.find(a, sr); + if (found) { + cr = a->second; + } + } + + if (cr) { + const char startFuncName[] = "_start"; + // use 0 for function length as length is unknown and value unused + _hints.push_back(Hint(entryOffset, 0, cr, startFuncName)); + parsing_printf("\t<%lx,%s,[%lx,%lx)>\n", + entryOffset, + startFuncName, + cr->offset(), + cr->offset() + cr->length()); + } else { + parsing_printf("[%s:%d] unrecognized Region %lx entry point function %lx\n", + FILE__, __LINE__, sr->getMemOffset(), entryOffset); + } + } else { + parsing_printf("[%s:%d] Symtab Region for entry point function %lx not found\n", + FILE__, __LINE__, entryOffset); + } + } } void From 02c20e9169a9e6ca9da7a486df4e9160143063cb Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 28 Jul 2022 16:18:46 -0500 Subject: [PATCH 124/505] Updates for v12.2.0 release (#1289) * Update CHANGELOG * Update SO version * Update docs --- CHANGELOG.md | 42 ++++++++++++++++++++++++++ cmake/shared.cmake | 2 +- common/doc/manual_frontpage.tex | 4 +-- dataflowAPI/doc/dataflowAPI.pdf | Bin 349841 -> 349833 bytes dynC_API/doc/dynC_API.pdf | Bin 298532 -> 298530 bytes dyninstAPI/doc/dyninstAPI.docx | Bin 151289 -> 151289 bytes dyninstAPI/doc/dyninstAPI.pdf | Bin 422213 -> 422302 bytes instructionAPI/doc/instructionAPI.pdf | Bin 563447 -> 563449 bytes parseAPI/doc/parseAPI.pdf | Bin 404163 -> 404155 bytes patchAPI/doc/patchAPI.pdf | Bin 614110 -> 614205 bytes proccontrol/doc/proccontrol.docx | Bin 107962 -> 108244 bytes proccontrol/doc/proccontrol.pdf | Bin 370176 -> 370687 bytes stackwalk/doc/stackwalk.pdf | Bin 318611 -> 318608 bytes symtabAPI/doc/symtabAPI.pdf | Bin 457106 -> 457099 bytes 14 files changed, 45 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53a9fc29b5..ecc33820c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,47 @@ # Change Log +## [12.2.0](https://github.com/dyninst/dyninst/tree/v12.2.0) (2022-07-28) +[Full Changelog](https://github.com/dyninst/dyninst/compare/v12.1.0...v12.2.0) + +- Add exec entry point to parse hints is missing +- fix races with parallel analysis of cubins ([1284](https://github.com/dyninst/dyninst/issues/1284)) +- Docker: make build.sh verbose, fix file copy bug in Dockerfile.test ([1273](https://github.com/dyninst/dyninst/issues/1273)) +- Remove endian CMake check ([1270](https://github.com/dyninst/dyninst/issues/1270)) +- Update and enforce formatting of CMake files ([1267](https://github.com/dyninst/dyninst/issues/1267)) +- Fix bug in processing library paths in FindLibIberty.cmake ([1266](https://github.com/dyninst/dyninst/issues/1266)) +- Fix decoding of DWARF expressions into machine registers for Intel GPUs ([1262](https://github.com/dyninst/dyninst/issues/1262)) +- Docker: don't use autamus cache ([1259](https://github.com/dyninst/dyninst/issues/1259)) +- Remove unused build options ([1253](https://github.com/dyninst/dyninst/issues/1253)) +- Fix dyninstAPI_RT files to build with older glibc ([1252](https://github.com/dyninst/dyninst/issues/1252)) +- Redo finalization to get correct function boundiaries when ([1249](https://github.com/dyninst/dyninst/issues/1249)) +- Fix format string errors in stackwalk/callchecker.C ([1250](https://github.com/dyninst/dyninst/issues/1250)) +- Make dyninstAPI_RT files build with standard C ([1246](https://github.com/dyninst/dyninst/issues/1246)) +- Add cmake options for C/C++ language standards ([1246](https://github.com/dyninst/dyninst/issues/1246)) +- Use bfd linker for LTO ([1248](https://github.com/dyninst/dyninst/issues/1248)) +- Cleanup (remove) ancient linux kernel support ([1241](https://github.com/dyninst/dyninst/issues/1241)) +- remove unused files containing pragmas ([1240](https://github.com/dyninst/dyninst/issues/1240)) +- Remove unneeded #pragma's ([1240](https://github.com/dyninst/dyninst/issues/1240)) +- Add compiler warning related cmake options ([1239](https://github.com/dyninst/dyninst/issues/1239)) +- Add cmake option to disable diagnostic suppressions ([1239](https://github.com/dyninst/dyninst/issues/1239)) +- Fix frame-larger-than warning ([1239](https://github.com/dyninst/dyninst/issues/1239)) +- Remove MSC compiler warning suppressions ([1239](https://github.com/dyninst/dyninst/issues/1239)) +- Improve compiler diagnostic suppression handling ([1239](https://github.com/dyninst/dyninst/issues/1239)) +- Remove unused git files ([1244](https://github.com/dyninst/dyninst/issues/1244)) +- Docker: make compile warnings fatal ([1242](https://github.com/dyninst/dyninst/issues/1242)) +- Docker: use external-tests instead of testsuite in base image ([1209](https://github.com/dyninst/dyninst/issues/1209)) +- Docker: don't build Dyninst through spack for the environment ([1222](https://github.com/dyninst/dyninst/issues/1222)) +- Docker: use more OS packages for dependencies ([1221](https://github.com/dyninst/dyninst/issues/1221)) +- Remove void pointer arithmetic when using Valgrind annotations ([1236](https://github.com/dyninst/dyninst/issues/1236)) +- Add parsing of names for inlined functions in DWARF ([1237](https://github.com/dyninst/dyninst/issues/1237)) +- Remove BUILD_RT option ([1238](https://github.com/dyninst/dyninst/issues/1238)) +- Fix warnings with cmake's MINSIZEREL build type ([1235](https://github.com/dyninst/dyninst/issues/1235)) +- Correctly propagate pc ranges for blocks and local variables ([1226](https://github.com/dyninst/dyninst/issues/1226)) +- Docker: testing workflow to run libabigail ([1220](https://github.com/dyninst/dyninst/issues/1220)) +- Remove usage of DW_AT_MIPS_linkage_name ([1223](https://github.com/dyninst/dyninst/issues/1223)) +- Docker: adding a workflow for release ([1219](https://github.com/dyninst/dyninst/issues/1219)) +- Merge pull request #1217 from dyninst/thaines/docker_base_container_defaults +- Update dependency versions in base container config + ## [12.1.0](https://github.com/dyninst/dyninst/tree/v12.1.0) (2022-03-09) [Full Changelog](https://github.com/dyninst/dyninst/compare/v12.0.1...v12.1.0) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 6d27929bbc..fe9de4db5b 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,5 +1,5 @@ set(DYNINST_MAJOR_VERSION 12) -set(DYNINST_MINOR_VERSION 1) +set(DYNINST_MINOR_VERSION 2) set(DYNINST_PATCH_VERSION 0) set(SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") diff --git a/common/doc/manual_frontpage.tex b/common/doc/manual_frontpage.tex index 9690a3de53..160610633d 100644 --- a/common/doc/manual_frontpage.tex +++ b/common/doc/manual_frontpage.tex @@ -42,9 +42,9 @@ % }; \node [anchor=west,font=\sffamily] (rel1) at ($(origin)+(0.75in,-5.0in)$) - {\fontsize{24}{32}\selectfont 12.1 Release}; + {\fontsize{24}{32}\selectfont 12.2 Release}; \node [anchor=west,font=\sffamily] (rel2) at ($(rel1.west)+(0in,-32pt)$) - {\fontsize{24}{32}\selectfont March 2022}; + {\fontsize{24}{32}\selectfont July 2022}; % Contact information % \matrix (UWaddress) [% diff --git a/dataflowAPI/doc/dataflowAPI.pdf b/dataflowAPI/doc/dataflowAPI.pdf index d46da3275b58e4edf807f9b342040783eb9fefdf..ac91979f43c62c920591c5f30034af3fbdafd5ed 100644 GIT binary patch delta 18080 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 Y1Z?#1`O@BFz=)wZV93eE6vScv2T~kpfdBvi diff --git a/dyninstAPI/doc/dyninstAPI.docx b/dyninstAPI/doc/dyninstAPI.docx index 6a1baba61828a600d55bacd26cb5a703c19c9c32..9dd7f759c4d4e50f6efd962cf0e2672ce8d09baa 100644 GIT binary patch delta 94187 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 Rq3|EUMd3eXY89ZR{}-SfcL@Lh delta 94157 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%0AS%#dv{p;b~)iO5Xz#oXeG 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 ~UdSdasUK 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 R4n+jT0YgS6rXUXUe*mfF$4~$O diff --git a/parseAPI/doc/parseAPI.pdf b/parseAPI/doc/parseAPI.pdf index 898bacec74abfaa5d2f4b995c1f416111eca5170..753f9e356302043afc19753960ed697ba5ddbe59 100644 GIT binary patch delta 14593 zcmajGbC4%NyCvN2p0;hj8bphVLoh@;dFII4sh2N1Li{CH<34FOo?LK2uj zw=j{h$r+<4i@S3b%n884FbuKKO#LOWwTiRq#@o*12+v#_eqrKkC}<%%qu{~TuHAKF zskvf1T!RRezd?*Gv+9{nwST+fGsYdfbwc@13&`)xy*%NajGWu|oaX`?UG&?9%M~W{ zlf>0;1t`tAN@FQb?`vuO9R$3KOMxPlm$6R%#!kFZLF()1;D+E`B)ISB>}d?Yivh13 zmgKeWmv(}fi?r^R^EYViy7tN%&Bicmi|%Yo?=nSuQEKbpuF%O6vaSV(Vrl%1e9~#& zYVpjYMp9XU1*wnXAGLN@bZYWQoX_mtg218;pBOpH1WgmzV42Z?qy~r~0PUvpxG2v` zR+;r7?3u?)u)7ORNOCq5jtf3a43TspNMfp&c0y=GQcJkGe{^b#Tb85XRd~wcO^idsp%mG~?*=qr#dBpOhsQlY!I*|{Aap0*!swIm@U!Z$b_` z=l{bl0ck74Bx{38$#oxhJWg)r8nznwPVoVld15z%^o3!Ab(lJN9*0C5%1zNFjjnOO2ptnvQS6N7h2w?x=w3=Kx`)@~dYxcUs+g#zdpJutuI=ie$0m6Zc@ zWCHvas_(_0=^peqR6u#_?Li&Gi)BDf!4myyfpJqP;SiA&eGCJ@t2%05NvhRR!d|FY z>66?dL$%MXLTl6PwW}O4vQ0NhQ)CA;CdvR7**N}SC zc(z_o)@2bkuMAA?tl7I1S`oVP>!+92p;=bmENbJD*_R*jyLZDj4CZ!f*%@sH{w8CW zBM;%7{Lr=aQ5c2@E;FZjX!QRtgF}dIHRx?lcFA3d+I8lD@3wO;bGsd zKdY7VfL?4^?(78IL1B5K8WU8 zbzoYsx^SAQeboh{}&X*GtgKNiAiW@j4k1(P7uR`DWH{Sd3^+-04`8u zE4QFtLV5@M@(ea`;E7jHFSh^@M=v5gx||1dp9rGfuliD;3FJ^$*KfPf{n-)df<;e+ z9UgwR4@qB1NhzS^#sF3je;>Fd7&wCfLm!a>V{JDRpA3*f$QbcqvcTSF(qdPGYFlu- zdj+C-wdbh8gpaSGLo-e?dSx^P7u@gl2OmZ)V12xU^9TL5|DBJ;tAYpY^G^!HoWRL3 zl*?V%+Yh8IOz8UOLQ-rw%^VBn@(fB5@lW4CJmTtZ1|AqZBG^5!SfDRZ1P;(XXzR&a zuJZ00+C2br;sd8OXdUdmtFs-%wkC&{Fi=rv`~YTZcW4p@B%sSj8071R;qHcqR$o5= z4iy$sQ{)oAZqMOK0@L{8M1KhS8vY451E?cVP#@^_<)JQh{UCIsy+6nI2Y#*DISk0t zv;{7&s>0>7=>;GbC`cclq}x3R0z}V`G$2vVOAUyEzW-5C+Jt`ZLj(TduLfyy1CIFC zdOaBarrv?szrH&a2D%^!GXwqXN-BfFg$@JK{9%uzQbc?`jUU6f0kF;W-TkZx|4bL2 zo*h0){8R(j;XN<6Knvhsx4V*4KL8;*Tq3!?KU0AK2yEf+$G4y2VvsiHpdd3NcljS| z6u`0w(m80uLfGKIGXVQQ;S+26IGzE%=xQJM>uUz2-4opFXW(p8WFU?)B7Cg)IQR z5m6C+kqf3Rk!W%7U0sd6_ z*)_G%R*wF$GpPM#;{!#DkscN=)Enu8%U}ep z0ay1{*6`<@bF?=gSUfFHx+gGLMw}gwy5gF)7i6?xT8|d%I@1hq2oVxR3%N6i)r8l%H=}X0i0jB_JwqM9?ZOLD@MyAh^Odb66^xjEJ?pjh;*ZF8J96 z_-UYdC-SX>i-o$}{b{BChk4|BPMb&x-OK0bp3H3Q6H$ z^URb_>Fco%b_@gr`f;rH{(a*y<&>7{xbanO2Lu)kB1H3}%H z)WbYn%(7qBh3Js6B}%qtShspfwQF-b3cv-Usts!iyV{_)-3StjN;*Pll*(v9l(I^J z0)_Kcje-r6_E6O>V;}{W1rURWFHH58%E#`n+R2ozd9@f_5V))S)MXIr)>?8LLf!~0 zW3ut3UT5*p(xloE|v8bCF{3UbaaNhG5Q!ij$5=W zuRMjwBem6jWD?}T>(<^bb=o_6T+(|)KEX@b9?83OTjcA0n>6Ccl~w&{SbTvn z41U&j(hw((hCZjZ0r)vNsRgohjj6lL=#OP=?RhhIHOVAwIam^+)6D)M;mQD^JmtH} z%V46qVS|omv>s-6$Rsqbm(8$zv8TIIe*LEjj*T8Fs+tE%|3~(7Hsm7sgjQZ#z3n8`L zZK$5DMY&L;dpv{5nuB^PX+6m!*Q2a`d2t~-f|Wrjtd9NM=6LK{qZBu$5ouAz_oJ$L z+?AxAoT&ia;Sf6_sTL}ueExV`P0k(hNWmlLxOeDUJgoFgUn8?VbEPew^oUzTcV22o z)D*AW7U%+x0TiQ6=df3+{bE!aF;kr@?D;Kna`5&3p1QlkEuw?=MEDe?b}vuJve(FT zWP{0&S8`Sms0~@Uy>x}}majq4C;(Qj)0#$Az&1vJ7&5&P4ROL~47kL1FQ=e3QMHiYvhFR7II5MqPEH3Q(I_6K66*&S+za*Jx$sx{wygP#>JRGoGdJmI(1SNt~wdH z%rDY+7@$oIG$IGEYB0hxBf0hB2XyWnee~8FqJ5>LARDF!g4~NVJ;mNXU>v4ML>#3`6zufR_e!|kamDUN#CYiH_S|IJrT5Q z1ZBGo8$Rx~fAZRX)c9y0{wCKFi2)hHJ=M(jb>3KD;;*GHN;>dY_WYJD9UEtnH@bJq z13d4E>qoUz`~M)5d2Dx^NasB$D=7Cb8?d{}zC5;{G~!Y=dIbhoxUAasgQd00Mys@aSt{U(9o$Kka}1Smwt z#d3PD~j~fPFNc|8<-5`rgBZ-;OUJYKS&H zl5s%oC3C7or2^G6W7$tlvz)$aZ+#j{W(6{GjYo{YL*WVU43(r8I*p{e<(UZYKc%s9 zaMC#;BXtHnw}v2Q@*}Ml%}I@&0=QILAXTGYel|~Gcj@gqzcvYx*`aEDDv&}VU{AI> zGZ+WZk_Govt6PVXsr*uPBK<7|nq@h)$QuPAjZ(Xd@td>49EMkgJc$?^kMdq%`MbS+ zm-gOZe<2}eZ%C0(3#5+^((NMEIY6?0T5>Zn`gf`Mw)aYN?7$#yqJ*6w1we~CedBac zS$bbD9EWMOPIy%yG;@{=ZiZXD#=688ef>$qLRMlvzzaOTZ4shssA{)jaF+#=c`us| z?jtry5!y&?d;5DoTC{)N+^p`SA-Ah^?KR+V>1{DrU*2aLR$d-~EHn6de7~);1YW#r zZVS3Py>4xO%{@@eSW_X29guJrnn+gM@40`O&MBJKX>Yj`&eenb+J(~G;&6h){~Htq znsySgbDT;r+kG9YXN{c-&%Ek@O^GpN-y7`?21S}2BoJSQ%>GD&!H;msCdJEUkN@g3 ztESucDM|5bN;4!r$70uk$e4A%f0o)%9 zpH9xV!UjAML*#X#Kyf+CgehF`NQ<8M3G^VpmxR`+vdeaFkJ%hgdLtqgS{}F35d`jK z{nA>Vo{J3Vq_{tKgn)GYUvik{4nX~yt@qRff1z&*Eo3H*tEN@M#Mut5cErXtiYw$v zTnZc`QL%$|819GPz_U?bPZEs?_Bz#sNEw_qn}N-dnl8`iPs! z0v#@k3<{0d|3pn$}so^|?LBELTkyaO$Gg9gxL!b$vWfxOv2TD?}o z-A)Hm6iya)&U;{MlC+=53%-uH+utN~Eu9f#p*`_bK%0p{>=ptDu$%WeActc=jU28X zHehN*gf4Q=ArD4@>%D*Wqf{L~Xn{i8E-vKq%SX*z;V4fJ(CgD=s(c6*789Jh4tO*! zHApt!GVKYo4FXaJZZGzZJD@5V5=d%PqxL6ZQ;TmT=Za=_2=`=EQDwR+mrcWu(B4C( zi3F(!(sb4HsndQN!>EYy%k#~ZcAmCBk0$VU!w=nUF92X)_Dc=w7t`rm?o`EUnq(_i zCf+yB9PRhhvhqecJTj2qMgj*aStZ>aP&yS;Xhx?I)m+e`uQA1U+N$>Lq`M%t2N3cY( z;Eo!zCjrSl2e}DyMNl^zCvvdQWIh*la+@c$kD&&q3l|;w0!n-uGld+e(8dGgJ$AZV zwP#JVh2rm+9p2lzSa|PWrW_?ufWswh37qm#1OOx-eO_krjx8wG5T!RAnu}ZHH2o3$0j}E|7ahKp>_@*t zbV}v9>&hRuwY0E59P`4Y-0G{LlTDbE=Ky$xj4>!*(-rYP(%Wl88 zh;Mn=;GR;8K5=JGL^;m?e5V7j^FMoin9=1?6)!qBN7uZT#!WtFzC-eYT{ z7$IT>kDJQWe)GD{nk!PgJ^fPK@e)8 zTvoMmxg(9k|y{*&^$<(u7KEb!h69 zxcdzn*oX;A_g-++p^cozC}VoF;GF5o4F9cLD7R+jCG+N42i;siNCmcN1Y~&-DS%*| ztsI|Dl3t8r<`{7g<=!Q{KsIhIuczi4&t`Z!+l9W6m_EcFmp8VryK!DVD`RdPye%)3+DCSA!+YSdzmUwghhlc#L~~fu1Q*XyBs)aY(AsUtU0l3NX?~nKle!~pe%g|aikIHFRac>>-LeB zxZd|Q{haQ-=2#3_ekI{Asf*22#Xnc}uX+wvW0H0_Qk<_&zHX+su zYizr(ryBPDrbQAOI|u$je(fKiN}w(+lNlUNDD}eze^J4K23XEnxu7It!iTPlcU*Iz zsF%y4KC|mOSUIN<0`#g^cMM1caH!|6kSd$e<{2)+I{w6ZFDcz!1oU$7aTBNdToH9u z*a-0HM|Dbe{@xx^*0&`s`3tyPuQwU9(UKJ9Mfr-9KIp$kN1^MP6V5)q$o^zG;{H~9 z4DbRNgX%Pq{GxN1^-tvq3s%eg!>V>O+Q6T?zdqS>8-v$Z40zU`5mH$y7(Oyh44RL< z^|XFr`#uB3Tv3LqUPgC4w``jAJp)6SBAeel<&FVfCyd$~ zELELXzC}4ya<0cuJ_nu!DgARTI60-&)t>%=1v^U5k892P zb7cs}`|FAWOCBf!V+a+l(j{A;?RmMloyUNmI+P~J3?L~Pd1;4R6@jX#ln4E*&F?^f z!49AZZb4*N>_gXd#<;#gC4LscJHQ*Fk7XFzu!~%U(^`)k2M1fZVTP4^UOF}V^!qZa{VoQngF=OnObzj`YRk@#}yX5Dh|A_ywn7$yy(=1SLK^d#Qr!PLd$|c8c zoXYdWB{PL@KQuYef;b%{a{k;I1Ca{VmD$|80T^KZbTR2BZD=vi+Ew7Js`_-ZJ?f%x z4EU@{qSHbG(E|Udl#Ye2SFUM(J#J7mYS`t~p$BC;QU?$Q{kRN25{jz?lkFyc-<=oU z1n57!5&%Q)Q%$MRX?1<0Mkr=I^5a6@uQ*r9K;NOpHaCwmq)8s~ z7RZ%trdm^@P?nw>=~*|nm#yb7r);qtEJ87)8bTrbZKO%;;!flPAVYUjrsgNgr=y}r zsOdnc*Zhr1WcBkiyGcLIMW-Jua;e`z*$AYMq3-{N;FXHrX! zcT>dMj;Beg?;*16b@)?LS82-mZsDrObS)wNY8Igqy4_W%3k?b=U(mTtEyViy@R)Jw za6Xj;h8D-^1lT#5cN5Cp`eBsdz^0w7z< z7&CAN<0g#rY-|kys@5((duxZ=p+&81GA)L_-_fWqY(~$b4DHmZh4rvVwP@F_ghnJ_ zAmq8}AMyD`F3u$mw)WSOi??8yyQ32SY>iI4&jpm-n`u*GU`#UR{E2Dvpt^v{NkW2+ z8>zMFceCq^uV(8EiUzYliCI;EsIv5T8MQ%7mq^ zE~HHt)RQRFP)Ue04B2 zXAckk(oI3Qwa~GI+*BK_Y^q{NJ?nC(dFp=0gziXelJseiSaNxQ)FBsW$RH8&Iy%@} z3gT}@`@I0oS>5w}c{84b{qR2v=))3Zo@^;Lkr)clxOAoX2hk{)V4C}*7tD`qRHwKr z$21b|s;5J+C2+CX>lEJJ+HLHtu(^rD3|eU;q2{uKw+dhsY@Mev29%$a(p&jugvvv= zCd?XZUL6D21J=9%&w>({K3ok`hoBSF``2t-Rfs3OZXf$L3;*7fRzjap6xMwBfee58 z8l)Y=9cK12#SapPB-+bB=ec)DQqbKba1SRwY>MO^cIno-ut(X}hA_l9Iz zD(+P+p-Q?Gnq(-GateXNhDS0~%T(;!5Tw&EdHy|7ovl07E5*N(st)BmB5^qO$9Bez zxyB}EWwylM=H=opHe}aUtHi0X#gJYjT7Y5_;Ytua_GHm_Iz=;PtBxwVJaI6WzaFs51%=EvqEKW}^xid?Chcu(DLX7&shkVC?x z3`~k=SiLzk6f_pMQz+lao5Kh}N>|Azpg#II6~Sezc)xSRSAAGW)6_tv*7bub$lj$W zc=??{&+mr>G1W>xu_sc-&U$=|_{wf6Cfl4bzGukh^w&l4L9HQ47dyaD$ugr( zuHa=M58#&xZe30%@Tb;*`*kG9d2H=Yloy#IxK?9irH=T$e20nX*Hhf@-q)<6w9u%N z1L=N(Jn6=@A$NiH&h&zj)4D3zy3qm>M!qiH2fR`>7V+#} z3_IgTq}fvY2xRkOc1?BeCw@d47p**z?U{z<8_ez;!Obc~omMH|z@E){>iM|@!KkCO zskf(qWQoYWYQ0KEibbo&JU?7%%gd`wJ)t7Nry`g9la?{aNJpY7T{?GmLd++u zI82yBp&wCdCVG$kT$~D)BbwOAWF7+0ubF(n7mp`a@)$dTLgAZ$0}K=li$P%eo1o9EyG0+CCff%+so<*0Y|Hiyn? zZBXD$#6nObYXuH3`QTHtmt>dae%wkyZGoB}V4Dj$g><4{5N-e+m(5mW|Fyb)6E?i? zVZ02kB`gCR4)^^({0-Ui_@>!TuGBKMq~%tCuXS+AsB|*34r_whoHAsg{nih^=xuOH z8wRb(<~3O?aE&S7sFysaJZ*F3+4dA{=p-jPJXF?$)e^<}7@uG}UKC=rX~)?RW_QDO z(?Oln5w>LLQAWTPvlXiANuCq~A4?Dm87(@g3N|DvVF>uIn0ncAWba>d&5nxT92?vM zjLL(E@ZN>8lbDo(kPHp67HJ|La40%8u&A6(_}DHpnJTvTohXY zHUl}~47G@$m?GXIyb`2_rVK`cwRjKEhzCF+9MqwsiuC|^@=#ztR^zRHR;%;BI6fu9 ze}Ko*em5&t8Mdp!RD+ zaU>L?MG+Z*G!Pba6u`^gs%Tc<01C^-{w!EMI*K14dTVB#U_|L?g(*!XW(|pq6!r~E z39bVgLdvdgXaIs^Qy^(*LYih`g3=xk1eZXFXXx~2HLx3k3HW|7aDWR4a~Z86-BKl@ zYtb@_Gpf<>86s2}pH0yc$5IR;a}g>KxOi`)AQBva;yk}mP?)hC5eU2=ND@7l;CIvj zIc)^O8bHROZ%8+7Bm_Y@fU7>(CX_>4Y1aQ8=+eJi@WshU_%8|%h5cC+>K!Vx_p|#0 zx|VIKHK zL;~RW`ijfLg-F=kLjOFqnfi6#82+RhgSX{R59Xh8r^INf105w)O6;g5j#ZDhe1LZ1 zKpjyK@?J!cVz*QN8n9_NI7|bQ5C#YZ;{;4g?KpL{FrMD*%1gIpC*S(3_)v& z0v_O9=s4CdR!Mh^wsqHEM6lS`@%RQ72OkWM7l(ucQuX%XCP#P9tXR9(@;4M%yn&Dy zQyuytf6p{-j2i@jZ@?#c z#etNYJ0ZV>-y)(*TVcFf?mI3;TT^(r(lSk^X|&jV#>`k#S7)3(3SM2@9Ky4L;F!x& zp>bB#IMMYFINDMY>XY? za;@O5Slo$t0RsFUu6KWi?09hTt{C>Z>ucw(qYgKA32}ltJUVw}5V3 z8vB7n1@on?T$1;N!$ya;K!=2Mr~=E#_OrU(a=lB&j;w19lzDTO5-%pZ65xrEz8oqLIU3&6bvd;UuM2@cmu z)x}gXhlbnr?zZe`AD}`z$-PGTB9uJ`>~y*KU}*v*K^TxwQjo0)JjkUe6|iwF&c9 zAv*-w1l+ZO5enhgZq>7X{kTc}2uuAyY90IxQrP-Z_i-zXO|<(1TXs>YZ>EKoJ%d5A zgIfeUw8_UwI)T9tDiQKF;sh>n@QH-*&o-jl#}&F^yR?8pC7|A|X0@GBgK>Y+MmV#s zZPj{{l3f4VAV)7(Og8m=5Os8#X(h<(8^LIUy_=1E&B4~VIN7$9ep_0S%%ZGzT_d0>-!3nm6u=ExfK4FD=-C7FJ~1| zkJ<-oN#xSys;AI$grmSoLINm%a+0CCv-Z_|*5&4}>kl>cjug`i#89PRbXX|;)$VW4 zZLi+2qwlbBAAZ4Om+e#_lt^1a7N7PZR)gNZ^X?TKvDSNU24zD{ zS_f5K3UzBZZ%*bnb#JtE_4%R0;Ss_vF8<9G#C=yXjBgF-VYmj#aXwjJ?ydOZg_nJ% zI~X-iLki);`mb9DIrY_%E%)VA9Po6HE&_OX15kqWF}`RfIT`+b7^ypD{=5^%_-vdQ zwRWloJpf(u7`OY|G4ES3{G_Fvpyh6MpqN**Dpr?x1O&9^kFcV>9em&)3+?{=AQ zv7hHq|J2oMlZPk3Z;Flsx+VQaULfxhg5SrTm8vZ5^%>4!j{EFeoAfI9Pr)kCWN&yirqdufh}ITf4f3*F5uzv`?twDC_K;L-p6qYOP$%#X<+om z0_aXH;$Gv$aMyj5FpO5)t>x}%5CHnj{i(Zf&wt8N`z&0+x)_Q) z5I_v+rxabG07NQ?62yHz)f_8S0Yx*i4-?H%`{WzQQhae8rWKjPXrnG4&ZTralp|Mb zNTV)rSd|NjKIUgAvhvi!eR{T`b~pv3&}%cx=N-COwReL=od@SKx+Tuf7tL+&txQht zY2?V1X)+kbN?+!fKUO{Sxq3>^I|xHL2S`q_XsVqjYuSfw>db=G@Qix5S~J#a{k0bJlW^qi4tO^W|pl=ln^hVd8v5lYAh@#j)#q4S4?; zJKkz!R^WR+n%#Z8-0EPhm%C}t@9|OH$;9Vi zMQ{B)O7m=9+>?6E{ONCRlDKg)E|+Lqhvuv_F#KQ_vCQ9Q7qzUNT12lr!mZZ{m$)&O z2bT!83q;oNPeaDZC2GrH8gwiIS`Vk$MXd>7*u|_f+oWwMBcr?=z)PRs^i)dxA68eu zPuh&PYl2(KMCmS$%V0=PT8WfD+RKTO4sFnN#Yp>7!PofjETfj;6^oW2PiqR6xgGx1 z8ttiUh|i)Vbs9>a(>kb>H#^-hr1kAZO7eE&SVionX3gZ-^(P#v?Ir+a9O*STka#nQ zL-}*1Y@3L+KNyg5ciO8AJQyWzn}~G}l0{Zdy#|fe&__=$q&zs=7STeD0zQKxdB9t9 zLr(FNcr)2|c$e@8b5M60CwG;i-RGbDon+*y<5~PYrqDtIcw?&TsYuZ7eu&KX0V z&XA3_K^tm?tA7C^+{kmDTO%y$5o@(JEa%|Fj zw`~fHWZw{Cd$|H1{_VuHmLE-|8DJ-nF7jEtfXSYmd^hB|o=~>%uA*{l-GV*HEVr3_ zO7#6^_0a(cJYo8~lD|pBnV(vJXNPe54Bf&)rIrYPr|^^I%^G6!RM`BRwg2pXxKfFv zUR;?C*#=duxL#a^4ci7+&7^)5#d@XG_DQ=K6KEPQvUmtve#Nu8uwRfCHZ)XF8CNTK zoO`7%9k12r>4HoVRYHh10o|ekyJSRZlso}lAu1lw>=|VmIPSe&g( ze}(^>f&!ZzC;y@m9 z%2T5RqlJV@gZ+OJsq{EBR^x(NmVc+KOr0C>G$Bj@4XTJb=}45&{~+ivDv>=4B(1aeC*~pdI{zNpMPe##+QlNu|4EXuNLnj(8Fr=0 z?zv>zC1QzDM08oIuvQBx#+b)&Y#AcjtfdVirfz*i8|u_YtEB*CdRt6N5m(9RGT4QG zR%TIIWm_ERJ8Gz#3TRc&*j>k1QR!-#Gcn1uP$CM^&|jBgl4sy_eAKpFYQgT3ws@kF zXQ5XIGR?}~4fLfLL^|lhy&@qg`iLL!NXp(ua7rlS<@Nn3`kFE;gpI3D7iQsC`d{8g zjkL5>(2M(&+5pBH+ z4|8ZUds7!zXEP(a|0oCJ^d~Hc5C#rrP9_#+PDVC5Mm7pYMhYru1~~^)Q6pC~LP}9? zW=3Xa#{bjOR)Gz13Z*Q}&dkOl#K_LY$|WSqC@#({%*Zav!Ys_p$s*3m!NtT+$ov1a z=s`2cn%P^pS`sp`b29zcUnFGdQnu=9sAD&8z3|Ph^e%yrbaaZ)&9Zcgl=IBZG2qgL zDO!4Glf$C2x{k4tFc|jZEKH>2vohNmp2o}VETah-?S_Ss`{+(CvcPtN##Y8OQ7IbUiRa#}frJ9G1bWN0dkX}wVo-J_jAq3sZXPHV^KRhF>tI}7t zy~s;B&Kk;@5*uU|?o3vh%0o5y{G{bXbDFkkO>c7o1F}?@6kv=mOG|o)Z+&(Xl($lxc>ACb!h{<@y;DkJ&Vg3^$rn`u>(23 zkm(~Kd;?i=0xCE+s{7_1AQva{501Ssmk>Tc`dt4Pydgz}n_CVpexI=6j352~vCKBc z2*`&x82}GZ<_Dz@)N;f!44DJwb^IT=<=HX?fuJscwicwT0DUqSw;lR;fXxwa3y5QY&Jm|T@K~M&+7xx1GC_&3SWrAr*8y-=rJg%x!^8kV>ug`o z`jZRK$^_}%a4NTEeiqs11_a)?y=!pVX&w~JAs+l zrsaJ_aa2!QEC|4Fe0+C1a>c1gQX;$9t{~DrM3QlEKjrnEXit=&>+vz*@|~zQ!*6;V z`1zSapVUlhAT^O1O^PAIl3`9WrJeX60ejQt@uf8WPxW+()EM-)q|*30%5VlOj{BTa zh4PfHNtavELbV?AvxgfuAQ$FdQ{M@|D>5#W@2~%cw0J#6P!f_PiX@7wqEKN(=$iTT zsj_X0=IznmCicF}UqwY`5El?N5WjyeP2>!el$ZijFfx(^B1$Zw2`E?Cl3&u|1!5KD zg{C3gShT;M7}}A}wG)Vzs|=<7^~3@Z3i8AEM5Oh#T&+MF$O1sx;HQLRwmw$KDU{60 z0lYAA>mQ5R^( zs;aW#{OAFcV%K92qO51GzY8m7FTV?lyqn_jskBX>NA$(u%mubomMxzZ@{2~)vEEda zlGXHm6_lFP@c9*&jaSO_#cI^?t`wKeSGo+St=rBy%F*03XBt?dxNDAMJy7Wyvc^cF z(zLI7yu_xepVLvI(m>tzhW^sdLk4+s$~E+|E!zU-fS%0XR~4K5z$=87cC!AnofPco z%sl@~SH`ZR!Ao~IC&ApoNzR4*y1#r#5@bkaY0!j_B{(4QJ z8Il#i(f#fsGhjNx7SzyIc9!WimhRkY#F>9gdu%XcC?KME8{)w sO!EiA@@h(m(bSEGfPvRv0q~AsZFTCBo<$8o_=|}Xnv6_LK^*%31N1{2W&i*H delta 14612 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 delta 14881 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 O#RNl6F0Lp6^Zx)2VfecM diff --git a/proccontrol/doc/proccontrol.docx b/proccontrol/doc/proccontrol.docx index ba91713573133306b91f726db79238e3a4620fe7..b3786e7ef746cf02d572660e656e57e2a6fdd020 100644 GIT binary patch delta 72925 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 delta 72641 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 diff --git a/proccontrol/doc/proccontrol.pdf b/proccontrol/doc/proccontrol.pdf index b6fcd136bf114c648e89c2f214fa3dee98735dc3..f3231fbe5f8cf06f4711fe0634321e45c576608b 100644 GIT binary patch delta 55258 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 E2LQL8=l}o! diff --git a/symtabAPI/doc/symtabAPI.pdf b/symtabAPI/doc/symtabAPI.pdf index 9a948d6d1cc939c7ce0c784d8ce35e0400f10cf2..58cdab6a48aa757b7fa6dad35a975cdbdbd94831 100644 GIT binary patch delta 15052 zcmaiZLvY{^&}?jM%#Cf^wl;RMF*kO8v2AS3jcwbuZQFVO?|qkddxx&-n(CRFL-$-J z;T|vY9v)k~EC0Rz%^Q*8^FCEG480;d`k)QkW7ef2Umz^yPZ0fWQZ6HT0F z1Xd76Gq!$cb1Q7<4w|AYoPu1K+*o!P^1=I!F2!ST2^KOu>4X`yAto8PZrfoiiIFwj z9x62B(bdn)uBfrfV<(^o6}9i)MIZ2;N@#wa8v3SiZ|vfx|2XAWEbInJo}m~$^6xZcFX*icCFmw@1$m~ zjGRdUR0TTL%HL8g@b-_|jB~TTdA6<2(&9D?iYLz;n?2$)1`T8vNmiN3SstSaHmh(< zYcuGSu3wG$85s^ch`Yz`c-0Za5{!4;1sd;M1&2S?iDFW#*wr64-@N)ELA{}MKR|dtLC({mVqV9@B?92q6 z4vky1C*}$p{bC1oq!};n=~MnP2hS=0v+x`30E{=V4z$IaZ~j6 z-4ug7(-CCvK&+Eb`x=>eHX`>7`IWX0$az*w?(BJwbu@Bse`)?e*>jJDYjj~!mZsQ zeiw$G?nN^O@0DD3bGZ#`&z0$g(RG@{D#kCOmw{mnfEA&k32P;5M4soA4BGV> zi?VjUo>!}@tWlEXubgo?FOG(5u8~$x+C8K8=w#TzautGE;oG{{)c9n}d$(KB+!lM$ zwzb~}-Xqhyk`I5~TGhJCjoH6@X&#>%2c~Cyz-tVzvavl7bO<6wcV~C{%=c741}a+V z${@77)Vsd_hLV60t2FjVUBsIp4#d;kD2&oQtZzRX2G;*Ty1!=f+;W!3mQ>4kgEj(v z8*rv}CQiNcVTr9ITz7ibR#RbMp9-A^5PW1zxR<(PcJL?2cBM7Xk-a5 z_8u`*jZejeU_ID@uCC8!p6k;ekaJc&Q4S=escsZ~Wo2c*#%luvA%Z>7#z4?CLM;6s zlvvB#=>+6J5)o6_`|nwf?%$2JmFPCPH`|wBnwPtOG?)npG<0Z3NQW+s#t{R1JXQ$c z)%;dRTDiV4|8oyNt4Ap>#K%e!4SewG$817$3GFm1_QE7uKFN1? zZ|sky?X;f|NIxL%K*jyNLBjAr_Q0EtU$a!Umoe@D=+Sq)rhrw5xAwLcFq_K1d_?|A zIwSk=&iw?GA0y$fjAm)6Vvz!%LH{NB~=i3rF!VTdXCM|(msJU(0q zh~_s(IJMG`my_6GtZRUMy8HHfQRI6f@8tC0LGrr-;6QS}*Z|K(df9AGOnwJ~bht&c zyuZi&0VrINuZP#~f&#E+$AAD+BUgoQTr^-o6y*%Ob~dE1_X)t=SNy=4IErON%D>zL z{rsE+YjKD4`0hPj7wwH<3JV=Bc>l^JV#)*xRsH<+Y;u`+{Rlp00re}6Z!q6^Lq)ge z;oA=f;aKzUwRI6f_#h!~BEyPga;zHnAkkl9&+>tEMV!ke)L+DT<{HS^4Pct#3P4!< zhE!mNNlbDQ*kCG2`s>}={*#Ie#R%?5m@;(|TzKDBOnxqboikXU6d2i|W(4ELBx;5+ zR|$3nt9cJ`!~#TJMIR~mHp(Gd+Zin>1$C=5SSJtpH#CW zU$T@Wk=$q8ndsv!c;U5R;)(LkZ7_&Yi?4elXZZcbHPq!7D3Ova)9D{5E5Y%Tru2%g z3v4KNLXQsTD&6#FKgw$lIea}|Q`K{E?D|7F9hEWBy{e?fTT8v`JaaE+7qD^PJNVQ$ zMMrF$RNDUgg=5)pG~N04l#TbctX++Ut(O~E-fR+-a45}6kpTaM>|D{MlV3#kppa!u zoQh+rUtp*He0H_PDFv^KFa)??k3 z{L&t@X_2Y?ii&JB51VTvAuu3bj-t4~erm$6yff;R>*h5_+K0O4jKLiS+0K$@{D5C( z`1Q27&?(bra-rT#60jN)=bQL8+wQw!Ove%P#OQhE4|Tj_&dOj&!weB`lM^Ma_xJRZ43IV_b_~1C@a=+$-Vz` zj)d!E$Z~5#&qS!#d+%s!NZ!Pt8`EBJ*4`3{hf*QyG6DK_19G-f3mPS~n{62nqTNSX zzEN|mYnK)?c6hzVc?UtgN6i2B-|N|HQ?jmpytooKCJFEsXv^y zvFpjwUN0NBVQ)c%NjtSd%AE#Ab;5s{oyJUk%?=mKWHrEHpH5_4Bc+|?TXpTG+n!Ip zFLn6Wqxe@kX7(Sy7Nu#@DVaEvkfCWlvCLtf4=WG}=NrATSzptj0?9}y28Kbvnw zZEN{#@mpKS3jn79(h5Afx`_97@*pys?b?c|DztMo`iE2ajA@wH!lvVF3O%Z-=VvGK zLj+m0yo%_LP0ok*Whx0{TG2)o0w3zihixgkvB^^KEl%-6(hA{Xs;BpdrNpd3x1^sG zoOkx^a|dPasmtV6r_OW*V{S2Xn2z%;KQtxEHU--uqksa8iN72bYOqYogQlv}d7b}6 zkM}>{-jcVsctmwD9*G_!)b13BSa<7~53R8ovkOmi{k5UXHs>#qUy~N-)7)H(+zJp9 z6yX1aSB-%cxL5HQq|Vso8DBLMGyhclJd&Sf7a{1G&< z772CCWDHyoxRy}T{8lwr*sySyrY>IZ={^a|*@4+g3<lG*Ft(Scm|M!>MN!Ajo?q$aZkb2sa=vtn5v`Sajs zA8U15TaY?T!N=Hy*s`sg-;O6+k;hO5K8*D*>} zxk;M#S;TXsW3I9J*hA8F{CLWj%}%dS{~>dfga38Nvf5eh2 z2q5u{+v)WopD?px*0JPSbK^6MWTsuG?-F;rYE_THYK!`=K%iEp>jkF9Ai+_o$k1TM z`d;*4tlWb;Dq|0imbyu`YM371bSz|12hM&IGH}#k_vo?tpz+=^@I|2|8U@ymf1;V= z?YK6}EKo(0pRn(%;{GL9G(5tpV07n@4Lt2i=tneG_gqzq2JHtv*w- zgg*|m?9b%#CGXDC5rmD6PoEHKqW9Q`r3Kt_m{+?RnmIvAu zJvr#JFi@%+w!8gap$J#8;aT(`8{ArCdVeA=>GE0INNktsnY*J?9=0DQ*tR~40rvU- z`JwsEg_zBM>)cryL8i904eG3hBS+;oRz2Pv7hY?*Y1(v1c13NVV(&&4*hRA@E6`WG zkVWTfWUyFinJ}+U*Q4k4V^Hu0U?)lb&`!6WROO7r&V5phd$(|VA#!+-Ls$@~>}YDS zM{X0PcC&Z{SF;{U_(uvafX8PY4=9GmM0?b^I%ucm_+-=XS^NBUATpMX}C~J@2Meb0BP7SVS%DR`FVli>q()8G$$OdBM z9Qz~eCmL^PTd)*^@JTrR4ew}Z&k3!iy@Sp%IhiB)nH3ZXvkzH?*x%&nalom<9Hj#N z;-g_4w_R`B@ugmv+!kHqLy-&`8F#G7kdM1KB@m@C=LbIlc%e z8MLZxtbbgkX7GH!C=y6;e^T8EE_}7LY}4Ht?9IkS?e;72Yk_t1L%W1lG`0>F!~V9TPJx~?+RRgWK?!|KPD)Bj%xih#SX;3^(tL9mNdr zd5&v}D86X%besC?&R|6Ri;mZ&Xb_oaLBFVqxAQy=E+J;+mIz4Ihn2@Rvj^$XY`UW% z+=08!GnXARE}u{hkzhZt+!7zrC@57Rb;|t{j*c6!#dtUH3Ym%iavX0&xZ9>COvdQ2 z-T-QbQh#yEa6&;Zx7eCODpyR|z`?7=>u-NP?%6O4X+g>sDuO?;0vp2CN(qfmGv%;T zsIWHyx&EAMi6n|RX5X{dOWBQP2VRBU?yVC!7fp(@ z(jB`iVoXN;=nw`3In284QA2Sb2M?AGYOyuKg6DXqQTrkw_1->u(8`bQwZP$Q=4P`5 z6e1=s@l+;y8T4t>f4vLk6%d{{_qx^1*Ge_qFz<@6_W{YhH|M)YtuSSbaio>15qo0@ z$pzO^)A^HIM7y%8=(6o)3nrn57;nKc#6mQ^DZ1)8G%5d#;eUw>$aY^(NK2=;_Th0B zkYI!F9!HTsu9A3(CmG1W4J@Z*Gs6@JNEg~qSs4qi<`cf9&>BGO`C--O^BB2mO1?SWAVfdCeQk zI96*?3A5G***Fx&oL*APx+a{0BxRKo8AJH+Go_06Xrx9gYbr|p&yFIq26|9L7VKEB z(1TTR$?kIc_&;52264o2V>)8G;1wWJShBgnk^%C64xNk*vHP>Ja5EZ;rZ#lV+C27j zwE}z?x|Ecy%N)ZSOr<0V*>Btvf-SrEh=+BVV?bi(epZ}(KFsynu{^>Pxz~BM{Q7a# zL$JZg?0KucpfbP4WF99voN+Hjr>*Wr)oDFlp2Qn=tLLUJ&d;|`6V5^y;9wqC60c+k z8Gzjy4Vvoet5i0BZuuNvu%U&V}cOI2Y9-j!;bdYl>z?^FD!=E#*fYPi# z5gGkQYI~tZ&F(MJy~oINCU)8kf*AV!(F@M1zQNT!@WVds;Dmr*!E zdgeE+{Bm=~iL^wKAB8rd(6I58hry5?EDd$IgR;rU^tC`2xucY0su+(D17GrMS5aj| zlHSPr#oZV_Zz>Yx=e)^z-s)Y(ariGtr$~XPy5wO~OAGh?Pj-m3OHBn_;%{b^Y2arb zQxw|gL}{#-%;s``N&efDQ=e9ok3GG+I2N2BmmWNC=z4s^FLafjZLHWB6!ger8OFHu zXt4F0{16+FQ$YP#Hs%Lr)n9LrL;ZX2urCFKz|JD`ZV5-OAM#vDx(X)%hrpA^yD5D( zb-|otLuBPkQOwv=`WrO=FODtSNWcr;6lWVpOkhRmMf#m&i3)0e4o??HiXrr}-JJCd z1DW%opA8RXyW6)(lTB^?r&txA@I5|PuF(&iz!4MKsxLn0DKjO?*GE{jEe}DI1&+S_ zo)L?;=pt#(iW&yX)5YZ8uzOxs*FchQ>;+ZZ7zLSStZjvDDV=H=MPg)W08m@@gv276 zn#a!fah0oz$I9&%ouof4R={o1E#uz+_Qo;6Q#XHrN9oVU! zEwN(ZBlqN81z(>Y?FFthrLOi zo!LZhh#yRI=J>nZ3`S~|85<%L9+X|rGID*W_DzhqT}uhKSeen<13`2j%g`)??cAYB z@#qRNxifli(6qj-)ecV(^Srus$ATJ&&GK2c)!C0L(G1fF%Tkt}PWuiT>ra@I%MKhG z($gs&Pu`eq0o8+QQA%c zP$R*Tb&v9m&6seKkfZgYQo7b8ze%)0>YDFrs0Td1=um`*&p^LXUwV3}<7kSCW%~x= zihOV(pMT-O0T$DiPH2hPNWrTTtyi3A>LqgMPaL}TmX1k8fL_JYmI0X{9?i@pN?8NO z4C8r7>q@leyz=e2Ul%7o4@t7uC2@PHwIIKKM4MFGzs-IXeH*gE9pHAg=J&9*mXsJD z+Gn`Te$O2y8hz)qNaoRb<_GH`&zIVRp9f$Ju2WA6OK(5ro6H*$sFuFMrglA4E0DFf zI@Wm;^|QMGc+#H~{xzRFaA*=AFcWI-%O#x){;(Gn|r4@aatE|uBL7RhTWPBwEpK~1qTz0iqAnbsn zZ#Ae>Q+ioLLhI`DdXMB6ZiJo>_p;T;Vn3ee=OrhO0!SEEKRRNWQ>H%q(?UTDuYmwf zFl~S-ASD%kVT)fLhOVTX4F}uovoFYK3n)RF6B`zI(bu0ct*%i^oQCoB@&)PR7zWpF zqn6_})!@eEFK)f-qa|%wXu-Ryv$Yt zDs%C1wJXx6%7+!}*~6RIYF(cB6R7gD6e`x^P00~x^G|gQY-^hfRx=mlHaPa?!C2C@ z!BD=|GNiUK#|nPX!COh=GovLF5s`y5^k6j0zQ&|-`Z?(xWFKZ?6A$jTh6gTyqhQu0 zn!se4AGz2L?b;U9Ga2e@>{i)ia^cZ-l0@^-1Zl+`REC|7KyvaDZ3+JkV#Tno1=Nma zK01-hZK=9&pP$Vz>W&B=FiEVQ?=yONr_fxzA#lKf9r=dk^h zOVzQSGA<6mENdnZpE3ik3zUr!5w2ZJFHgLgUZs6DSfx?cn)*vlsRCjuGGBH7lJ1fl zgTiadu6a?xcysRJ9+L6+Kk}SIKDa$@^7qjMRfxdXC4bX`I24IfB|D*3#aRpKnH$oR z#yGdHYfGe>)_1V1ek_tS9<`Rvq)XdODQW)>nHiho;bJ$Pr(sdsecudUw+N>%>A&JT zg_nV<@%KE2+?|dH9RuL~^IQCM4i=lK_MKwDHUd}w#LfF`&E8R3=V%M^d?0T;fJAVI z5+Z1vsIQ1K!&}H5lZAV|=fd+ibgo+`)ZW0e-MU@Zty^qzz{kj<_EZLqgtD$^iN?qG zcOKaox=`@68ING%dNk1uN&QLaaD8p2{cpxj(_rB zro@4i%KyNicW#I={@FPCSqF`y@aG$?qv2ne-?uWONmu9?!eT>|1u6S8PlVGojwl6H z_vNmKl=r@tsD_^P8(%1OxM?JRHGJji{e6#2eE@zHTr?36^;#3VsyIsLs{Bc|y3Y}j zD+;?5LkcvGd^V8W?*s=OAWBh9k8ndt^2KDg>!&%Td$y-w${V*Ax-yG7AW81do@5=4 zr3i;lUqrAUiG~fKxi@sq@~}*Og1>k~E9t6w(vMJx7@fIF>FKH6%)y3`6+ghJl`;V4#mC$&$YyYP3Mev={t-%fyZbI{aY zhW8U&n%wxKfy(^c(K?o)17f3TFLgF|M1JC$oBri@$AN`OlfFcR=aPa`5>k=vqn(At4@7_4OuDdCTK`>~D)hB}KEI6)+P2Xubf{}IWYCBdq#Q%O z6vB)?p7Wka(u~@u<`1t5lEdzEw3HNr&d1bQ=>~4b$DhNsq5iSmC47u9kWq?Ys|8@c zuRjRz#Rj0s7pX~fR{vw+NOJ-^AWBHXrhG!so5n!HV0Afx@eaQ}2os`mmU;x~W{CME zv|t(QbN1s!9|77V*po6gwaiESk&LOWh5#$JtV0?GS^csi z@Br9z4_cr2JTKU%he%q@QKH)itPIpF5S|RvdgN?jACHHh z$HfoxxGK^+3uVGOlI5u~SyQ9pULge`BAkjnKcpukcR9`^s1Z0LNsNBaKmk3PiTnJq zIIrPG8vYA?|M6i|3PdH)pI0817#v!GzMi$3q_#K2G*)J>9AwOAhz$V`b)Qcec z?)@Ds(RY0JK8*v3?}F>BFGqy3SL5(F?PEIP`=%(OYz6Z~uKo70(6G$=KpCzBJ~D3S zyjbgP?)9Vt%gZt?S}K1J+mI^=dJu1dgQow;12?i#SzCGBbK0H`=NwfJ4oVdB+hQW z1QBU!HziCh;T)7R5 zZkAB%bzdNNI}dDGcxy%fv-V){#bg|)k40q|b5cDr*7jCac0=L8*4jjsXk-{?@B;(3 z>+lMKJryGf0lEQcVkC)@0uesOFJ}Lg&)J&uFD*YL>FDD@Nkz-EmLKNVf;}~-dqU4^ z&VdPoH+D>123i^_dRTg#BB<+yRUA$5+;)j&Vaa~F({Z(tNqr^0Q$Zg?`g?Xx%ZlT}ja(9Q1$)G`` zykCY-MUxho_O@7x)-I2CGMaLrjx}pyK5HxYy9Na97d$DU%^%Is*A9Shk!;40IHs<& zc=X)d&4n$O@ZS5GnC($Ispw##&#~B*s=}?k#f2(f+gXq9XE2QNAO16(e_fyuhOxmG zBMCBep78E#Wl~Ijw84I0hWn5;6a>0fXkj&+A{JvHV45AO3tXon3*{WR6TdBEG9H_5 z;~;HCCh_1*I7NfT(HH>LD|GElCKCIiCM}<;--dhaQ|tm0*UV-UtmOPeo=knlx25Qw zi-tJ4@yh42_&0LQ#Iwb9k*7b@m2w-v_7RX^ndtKaw7^#ih;GDMnU~E37|jV>Lk&I8 z;yumBT(sS!TRWOVm99dmWk>({-xWh#1mvn_*Cpg546Y(w^C$xT`U&)^zre-arM*U6 zR!DHeiAVSy+I1-kL|({YbrY$s_L-B-#F3K1>8a9=@9-N;SX^v{qU_zLSF6-Woho|q zhnIp&U>Sq7#fq8wTh4sh8&J>K?=7mK4)G0m zSV6W_|DEa?gtJ6mZJ~KBb%Sn35P1Gq1p@%O){pH6zSn@#f;FHU^0F;;VkY% ztFan#JIoqn-7;JprhQ1={9wO#gk$>3Kg6~}s?^wP;G%C!;mEj|%zgq?8%|u>6^Rzq zMxO@2dG7+`0K;&A2g9^-{m?9(KY7EYV#guAqK@g6|9=M2Mar~Em08jGXRDrbZa4*X zj(B^}{lQQ$#HYN0Wf6^OvY@T4jA|-Rs>H`W2Wk#_=)q8o!<75v5eecmBG$^jZ2q4k zw!Hp&sN^gN{;Ha9lU+OPn87Xg+2ziIbgS5j&t%2_nS?;y>t^qV zgz_`HM346lP~WsBHz>1Beg?rMwR$=YU*tueRmQYLiDcly4m%)hg#h7iv{ z2?-SB=m*1>I2=5v@BM!$qD(uCFiZcp>e}sH+7QU_Hu(P@vwz8K(S?Ot`Sx4_R8RrC z^&0qkKVaFAjcg;5682_isnh%ATb#TD49{r%ry4qnRukP3#3rTtW>w7r8&q2ILc$z| zG#&x6$v=kK<4yxF46fD|52WU@X*5h3nO?B4bOjB=%NIYbW)}|L-8D;%#0+sw4JNOc z1t!)TZeG36K9_mml$h*$oTqdA;JN?ifa&dX`c}B$`DDEHP6)gZVipDYxn>Kno%e-S zS&|e%6K?$I!x^tdkqglUmZ9xZ&)6?f38O9Fj!t>l2=_^7LlS>iQjLsY*tsu&p7;8E zNW9)dkx)5z+d+3I+MdNOg?#Bjbkp;94R>pUUkIn9!^wl5ZR;KY(Qb5&JktcId-YAn ziwDLV-B~e19~YNu*HG7gFS-HXroX;F@fl?dy7OGxsHKm9pT--=H@+p?>u!@0m1XwU z7i`Ui4r#gwGw)o_DgSyrrv4&Slgvf$covg5IT~!>JTc(=sgF!U2i-*Cnfo} zNL@nq33i;`a*zT>reN<4(|5Jdi-#mKt*Xa9&$K#XD^~EHz*J6v?9G(J_WdCep z=j@JSt1YU{uQ)Kkh@~Gm8Ixlb;EZNqo%ddEsN;}Jb~H;b62Kkz+)Hfvk=%m1oX-fg zCxI|1wGmO97WS_N?b}wTvbpx{^8B;Y+}yT2R+6)G*RlSRro7WetJ2tvUF--+T@b@- zFWsHN7xjHF_(lAKMn6LIR;B|}a!>Pb*soiO4vcG%tSu8jJNiA55oEr^;W{5zRpZyu z&TSBVa3{ahTJ?~}T7>0zK(V(yA4vXO2 zd#o=z+k5aYMoRJ&2T?|VroW_wko_RN02-y%Ky9IplBqMb9kd(T?fa&Mww^C8lPG)m ze#Xgyw97nTK3Q!1=Ao-*{FZ~l^=9X;6-|j%;6UCL@f~KrhkUzj#b?#NZMXlm-2L<7 zCt>sE_uG8#_q$#rA4rEB%8$c0n4aEN9m#s8H zdiZhNeGk8Pot-wEe9w0O&gb1nW>TvO8ZpySltwrX^KIB!EVcn_w(H(H*adRKDp3?B zoBrm-r03m}!Fx_hknPC%MUUBD5y|ziZmrz?0|frnjN=o>O+NFKy^`@Kuxb&AH3{3~ ziyYvx^ZjNV2iwJ4b1k_5;fX=<28#goo1Y&yRSUz|OPHWJHoQrmm9ySpH}MtiqlF8u zY3xw)y~JFw(c`>^)k16Igb7HPXzA|8E+86BmI7Qh$-{QA)|C?cj=@shEYO74yeb>fJ(v0wPC03;^yM#`tr-INIy-cJO4)j95=tK zcI$Yqm}Z|u6Q2IvFLSA2PL?Ki(1N~kYD4qd%E{a@&Y43;fp zkNn1uD+$f?wOs?AOH( zZ%}6~a@rrUrj6%n$3H3>tfm`HhD}o^1O*WpB~m|k*)=!1+scRrZaJ9MZY{PJZMDn|U%XOBrbu{5~3d~x$c41aA) z()!L{7cEd!vn>p*SEleP>l=6ih2jpt-J4j_E^ktPW^IbdXmWL@A2NIlI;M30iO&|< z@g|*?YBqaSp)$ycLHP5i3Rom^GnxEzf!0_8_k?yU7T+8qU{6!NS~sF&pcg#Q4<7yE zZE@mYj*mn1Db>^d&SorbyPz!4gjw~d=KObZY;Yf&qa7aa>#iuMyM7%@`AbeBtz7@f z?4$kb@Zmm4AFPILyb7(;y^e=cFZF&dd3r$huNE%k+_b&5_le|-4p83UUdLUX&?ZUF z{Y(07SjqBs$6lYjK37HaUxE*MGN!`Rk(#4UDLR2@(cpZkM{-|>Ozk08I`n-(Zi9OY zTSeOHw~vL0`{3NYW^J32^)^5&O~a0OuTlR{_8)<0>m%~Q@gjU?C~h~!LEc&A z2E~-*Mu3LP1bh8zMZwtcj7=(jwGNKjajUUD<%ia>oAe!E?VON#5@c_hwquQRb>o-s zF$gA5o43^c#Aviyf#2OCntGZ!+ncj=+st~JDfai8M6`qx;xz8*^d_*VudaC~(;&mhHo-EHPUDJ!bk|ld;c(u? zQ#e!}TYCuj!->QE*voiEg%7Q|>%I!TO}Fllv8fs|ZpxMZc7%xT&C0>>+IyS-^Sjy0 z4ToAiOS;acuAhQeH{tN&iY0+i*ONG2ma*-Yda6TaS^J8v-$@QLd%6Ec&!FCBI#lka zlUIF<+~?<}A`rj(qcOu|z^}rZ7)cuAFZD@Mgzzf?WIa@P*_w5T{Ft zJ!ZqyM*FEGuuN%kz4qpibb_KjBSdoljP{e(UI4Lhsm{{2|8A-JhMZ%J{d((_P}C?b z4bC*Rpb84Ld3hUZ1fG$Tg^QV$g^P`go{623iHVXLj#1v;M9j$9l!!`v2t(-5b^zgC3zCd8&>@mKILPaH;2y*waR7DN_NKF{8wQ@-3qiGZ#VxQXh;+@*owQ6Kg&Ctwa_Iqq7kHneWyX zU&Xba*LTUIueDE((-gmai-{`ySx;+_Q}EQ^a%WicRaOsxo;BKx$X`8}Lp%)v(jwZz zvQH#Vgg4eTs|E(WKu;`_j1IKOqS68_$TSzf65RGL6Bvd?>TDH?dca447Pc53X$9D# zg{VbAkhw788ul8D5q+s>rWhW@g6wjEo+KWL4ak2p8-)Arb75^!Z2f9*bcNc3mlRjP z81gIgA5nm&09gySSx?w?A>K8PHMKsZnee9ACD9egw%M53svr7L8Z!zr=x4*P+gOh%qjp;fF`1QTw7qztkF^a?V3jW;xBO!V1GQ^ z4BAS#Dc){TbpZJp#CCHKN{Pacb0)2)sNi+CTo3PFw^VQM?zmV#@6NJN&*^bDSD)!o zH(USh;W$(O+mmIwe%SMFvYytfZlXTc%W*uBD?92g>!{3Nu3++}U*(v10>(JY2^1 z$UC_h%E376YOU(jo^0>MmREc+zkYG zPe$st&DSR`1(Jv2sRod~RiJdj+v>MR=+44@M?E%D$ez zphBbdJEO>eUPIR$VuBo+^zl&<%r*>Igi9lq%k;X9&FCQll?>8yirtDYMlkdVWMH?y zIwY0fNv(lOndJ8s&dBy-M_wVR$n>(6N7E!XjI6N)uA=Rw=g|x!|4eUGcM;2f58@du zZzNtz_cMap2Sv4R56>~l$I&BAc6QQUhGjbOlq3=X9AAeh=D*h_vH?ZXn09CX)@~nF zBjOzkS*&!g@8dbH&pG_xrz}q2tEofMsa0UfM*`joxFyrZVSm{y(KY#@ew0k$Si9@&Fk% zCD;~-h>5PXQrKh>Qz1wt2-PQ5FbrNza`o^)VPg!A#$2So;4kEMAY3E@$Tcz>2!F(Y zC|P5g&z8xHOvbaLOAx{VchV~`O`c@^AJ$sSUvb@%wCVF8EKGowtV(aZ>dGKZ?`;} z%?Ea+2iwip1W{UcW5|D)de9emXeQL~~+H@kwleg24QbLYCn&`e~z%9caa zX(5(2i75wDOo63Rzd%s~LY%qWkyV=c&PvahwPM4PY;9KIdD79I^tG>I1p>0(Eal4G zm`6 zNy__G5|UYnp++HSlm!ZUS=8+~I4&GkrVB0QI;vi!zDl1_xM_O1zBiys-~}<_ zJ{=h%+1&lC<_k@wilcZ8=}swc!vxiF{np%V&-g!OV=&1j6%+bBTS@%ToVe&h&mB!c zoDP|EtH5^3@oi6E<4gTf1A^w!7`twr#tg+SuB*ZF_6mcDuFP`~BtK}xKYjPRz%o28vU4?KAn%M{n+_eOkqEDg8LNm-ISH&x@olQY^7H z7%W7zA0SS_wifLL@iKSGgqre8gt7pi>6@Fxp#D=rLl^ErNpquEY}6vyp)_I~nOUs@ zSAqA4=ulTNE%)Y(EEUI)7gCv3wrlvp-6CqIXH zGh`Ag(8*-G@A6a!^P~w8AT?uk5_6b9xR-kbjjK6_;m4<@S+h7ycPvz zjjkm@(XEPcR0%n|g-%83AYP7pcP`uY-}7yC*U9L%hjjalbDW{LVpWE96yg+@jPR5! zvRT>DrHCOX^{6)&gk~rZ$Np39kWI7-XHI)fV*cx!r3g=~T$!>4^f+rYmqu5Y8FtCJ zT|h(sVlD;`?(gCc);%r^#>W%H$(4{YMyf9&AtA{N$pbZ{wSw76emzjmzQ#X1aZSmH zJ*0j9>B}ZNX~I!^-&6*D8kAQ00J_A*U+jM*<}oJB>Itq?$A-$@U|wL z>VEyfUb$?lXgcf;NFTX2j8!yXJLSP|9`xndY=X!ID6!0eP76~zj({@WL2mnZKTN7$ z)1?hK!L&rpfo~{AFVGm`dhx|C*Ew>I!Bk@*V!i7xd0{m`_XOdFtvto@-!h2*oRPV(lXoyEME>lURd9?K>Uv#!!R+iWbdRyZpK=xOG(m_=rBh2QJCnEwj4awnY zJJgCjbKNtEHrDmgn9y1jnaeTR#d%--EKyRB#bb;S2B_lLc>p%EYMq~_h3 zdzD)oC9UR$r2LDI#*bF*T{GulrP>;)uTI84+h1gIN5@#W-arI&pib-!>~~mDs)gfM zQ_w)iziPI=vI2}I^VZt~W!_&J;&!1^)VYPRjxI;OLgH`*0*HGi7P=yjJw7HMpbgRn zT!SQF!X#io{{z^60RImV{{ga90tPCr1e7~fco!TUjFUZ;ITDlxaCJA;N!r-vAR#Gs z8Js2GVs>#Soo8ZYVwxmIpq`iFl#&XXCm|-7C#DCRhnXkd0z>w`Im!CW@y&U52ijIT zYQ8(Z>TBKyrv~z@`{6uFVXA{ z(4f8;-vSgIAUBACe3-TZ#Jd1a7YAsIwKgz_7myDhG#?|hfe&PBfqnq;rw%ztM~#Ac zFtQL-alw*RKt^Ngiun%OsSXfxlt6twxpj3fdc~1@?7lQ-f2%>GkNBo(v2qXe@rvN(Q8>t$W zQ6WU&&uTLHZa$ z4H$W$w*{2|T(3_5Z?e~Kf7{)>m0BGX29R*XNyHCaI8ebZ2fg++4}VZ8b@zW4>femF zxxDy(ejqSbVGyf+tUZ9gN9xpF1pgsWKx1J`S4%L4Q@cbsI zu{}V5`ZsP#TXBZt^x60fNRCaA5|XvQiidz~f*An=$a01{`+FTO zejrHrx9ZE_(3ff#^y<=8e+bBvAmRk*i#)k41ez5zRNc2NnzMjm4>Z8n_3|x${{j6C zXr1PACv6$l3BH?uS335Ip4frN_7Qat+UR`KZjRu<-G2!peX!0#e5B5N3-VY=;bAYz zApv&C@6Ty@cH;_+Oj1~pP0lY9*ub8I!)&fTz6RDF)aOAaq{BV@{dW+ni~l-zf4`j_ z^7VTn*r4#YR5?VesDGY=w?F7zKfqCw2Y>^!Zr3$6$Oo_YfrQgv*2n<@=rB;;0ap%Y zrKoNRB(dxy)u~HPi#eMYg@Ic?B~G5Nfd>&TW~N1U!X^e=xKcE${4Un|Bs%de66iB& zRu_7gMb6trY370)x&1p^J`J&zy`R0V}-NH}XAndx;yW%J)h&rPy*$omn#Cn-VN zH|uJiED{W_NhT*Oifz_Lkkb)iB}7`umZ`0xH4(DJCL8}?mkNhRXp(X;wt+YA^5{baK%XHRT24LSIM`U z5vvcpYfYKPP|zu(DOK1rE)&z5`VeYnK*A&%)^-pcz7XQ(Np$#m>T8;Ch2ycX3cW?O-?_3)Ce$L~ zvIM8udzwe*=Cz*p9v#8)oegU3C@~6y_K+nItGf^(exX1EmT1UdI*Z>>;eChU?09Kw z!ShSxN4u*({~ux}vs4TJ)&zfI%!&69)7^y%CT^P1&G3%>TkV}0V9A4vNP+Wcq@Glb zv`C&4QsQt^a3WLs??#lG?8Og3YqL#$id>34dnqETB-Ft{ulUokh2Q;@S>jq7500=~ z8>Q0=k{{{?h1;N2<)Cdi!-)h>)UK>17joYDT5U`3in~RH6_pTQGZdlkDZUKv^;`*& z$!Iq+ATakqcNtYG01e`z`1I4^VHdXjKBeRPT@rV&^fN+ruh%!2$)~T90uxq z#GRjYt{$6JWm{}qLl2}irdv#~iK>^ItIndiTalUsnv}RFNu=EgL%XN4i}tEr372B^ zm}!Akz7$%5Pja3xwFFJ8VAT>siZrQ`jgg5Ik9tV9XVNC;z&^E@Tqa?m-GR=&0{YJO z@4}&dFXR#qcB0kkGlQ7y*{eL0c+uFcsSKj_&27IaMxzWuB$IEdRj;u&x7)ueMlGEp z>(!)RKMojKDu2Rj?J%<2Hz*wU7pmY9K*2jsCsbC%l16E&Pes5Lf3U(UVIX)d+efOk z{^&I&b1JNR1d`jYyB-JzCJ6YCpe>^z4@8!os|VCRs6zam4J`JV-#aL>}Hg zKm~IOcs8eX`r+X}ZNKivbl@GO=q5atijYsPm&q3R1F+DJ-!5jC&DG0A*s7NeNqaK% z$d*TBC{FV7cOddFDSX62CC!N+0h3(lbZX5o6DM?I`H!zRj|S+S`K_S3iaE`R%= zCx2{t2ap5ebUhM*7vuX7f938bIj5M#YZ_%|hMOeXWU1Mh zo}7J@B_RiwQ$>a?Jgc|=2t>z>R99{i#eqDY;)~8nAA+|UJ6?WE$Q^EHa!@wei1bq$ z$M~o@9v&g{;J}`vlihsyxW9|42xk32C}okP24;%H@w}ucv-ZH%E)-;{{_ZLzO$YX# z+FqX@3~>dq^kPXmH*-`y)Mr(uv%$h4&avUFT0ZFE%-$6@xw9y@_uQK_Ub)h3K7FF= zhLm(%X9qaOHul&4Dl{E}<;D{|W_R|Z~H>T{}Ye957Fr`46-c5!PuxnA(*mv3Y0 zdFkT***SPX49XkpEKpsMG-Qtu%|1((vrj;(NQSO6vK`eHasJz8o*6$o1&aewmMvSEDq{=F9ccrmkrw6T>1j zF>G(lBt6}Z!I)bp~3Ms?&~PO_b!1@H9wTjZ$2 z)e5~MTB+CZtCWFO0)^hXhW=8ZOAEv0ZQS3tkm?{Y5J!#7aK01cO_y~Zv=9qaADA8L zwdWPX6PBC=loLxfY2$Sk3N% zuV(6e;3zuLL7?TM#?1{cChKF)B15Vncva4J5(h`m)HvBNb%7d}AtS=(`DJhQPh6~u z<_>L*yj`l3zU;jf=pba>5^~9vSKN^{B3#?ym;>EkyxDt;VoJRh>(ib(;Kvc%R?SJ! z7&9@=fD>HVuN8bo^3`W?8z8CyA6%9W_uY29xVwZ45qxy&o#~aO(LLoy=Xl_R)?&QA zhJGW8*6-(+heXAw-K1@uE!g0K-A{v)s;;m2dYgZ@gj1Dg*|dd$*Ljc$38>Of80!?0 zFR<~m7{@$*5vm4thQxFM}?@{$uZuTJ#6btYf& z8M11mEY1zA>=!_7lvMH?)$;VG##(%4P zuE#!g>Opx=lzss;#Ebvvz)X+U=FTuQ0_D(*O|O~jgL{l${ht1y0d^L1*pfM!Ss+OY zqXy%V!O$xMp;6o5gUaG$c$V z;_bXZ8g&8uDuLdj zmZpk3DqCvOx*0`hlZWVnpu1pH0s*%{=aj_qY-xNJLs>nhqxDd6OEn;P)Moq?D);Xb zJ7&;#%%%nefXnZsz$O{w(L(!DQ2JyIGezj3O&LH_OQvc2jy^>-SpXTMP{AcXB3{i$ zPsKV)selWqV`M&M+o;DU`XfG(xP|n-n3`X}@8jd_4~frZJVU z<_T4ZnO#wZ5nWnXQ%#rc`9+^`c~#fS*ZBdq4Ac?W)_Xi!4{tn8NUDbM4DIt@lkFn$167bi z=dLnNS#X@U>fUlrP2_~ZN@f5|9(fte3HE&%IB7r6wbbRsT_vghtvqdiA90AxL?+bS zCq!{n1?wl_%y0w(y*7D2QDn{b&G`}S+jhR#dC-yQh0qtwD6hHDgI?DtxHvMbgg_N2{S8{sr2Rfl)*+aO|y{9(yCWhAwiqdSVnGV5U; zP~|jOXog@F%UrRnFH~pMR;kgloww6wje7yX0R-umUm+msf$v0KE}owC`jU(Y|?KfVn&SrkgJLG5!sld$Sc|I{NbB) zJgaBOS&1xeM>q{lKzcQXTjo^uNB`~(I^vFu)ucyJv?dind}qb@Upuo7U7Xhv+%^ zpKZ7Q8YSa^Ns$Gg{@iwwGoB~w)E-rE*$$7dy)jlcGUNCjRx2b*QpVx^{Mu}r@$3s+ z;Cfc&k_co_|Is|Lp&v%i(&Eel6rOIeyl3#-#ETTAYi&J9bS7z~_k`k+8Y?+V-$h`q zqz|`W9vgK~a%ZZ&LBTpJ$OkqorYcD453vKn3U1(rarkry;VCGY;h z3!eHVa?i8(L5befmN}DxvA-&7pVXmEA(Blim8NIuT9)}39jPDF)US>RfSX<^t>8Im0C8riq9s@HzCxv5nhE0vr`U82ij@Zrz1cVOTM1?O^hD@W6Et_vuSV%*^DxBgTbjRck_!WWAfjGqI z(@nnqoSLKYU>7m65@arq8kO;N2!lkn(I1N{5t^0A`Xu&1XA?p__H{S5u0ywgBfE_Cgsma(w8n;^m4JhcI+ zv;d)F?w_jzU_r!UL|$?;;`?Ck2Lo!To+O>OfAlv<(k9wqTPg`K!Fl3dy~1Z!C@|~g zaWhDe*VpN&P;j_zm1=uOm2yu(ZFt-QLpW`_RE+jj#?=qwSs86zgh3-Ho$2g2tnpjv zYjua+LytF}=cAJSE&GKvcUxU>>W8&bx$XzPlbi@GfZuK-V|Ja8&5{u8_O3>O<=4h1 zOW{QZH86KnMug}eUUrIeoVh`MfHu+R<(}}&Rg(Nh`xoMeNX@8NGB^=(Z*S7){>dKu z!e3Wp&CIge-ezM=lnAI9E)a+mkxVn0cjk z=MJkiT+AEB9l+%-GY z(6HR zhTUh$_2Z|!5{P;2(t;#xVz}me@`o8~(htq^7$wzGEutxoPRuEt>S>zo7HMPB0kiW& zJTEjXVWR{K6R3hS*di5%kn0RS@0U@^BB&p2tS7A?i(jd2&%^`DI6qOm^>yK`hGRb5 z-*yBwL!hkW{Z-bjLJ-KUwCxaFvLETiiS$z7EYoCWX>HiK^~3X@N=D|K>`L0zCG0r^I-# zXPnYsbKc!j^L{-@u93U^n@TG)4MqFF_Z4gyJ$Bt^sX;cniCpgzi9dQ%qJFtTg&E8u zTk`fNO+gaD7Eabe#)rYakF?Qd%{+e}|2O|{0qMDKynroyE-c-^+*!y~i%Jd=jraG` zLFY4rC@G1g72^HUaw6scHxQ;+5tBMVVE3r8cFDvxHq84~T5U^JUM)bonnGTOrJQs$ z%5(2+T!7($o-4llIqzPId1$jsSK&M17tdp>*>X1Mu5SK`YG^UKOy}METhnaJpj7i+ z5<%D&u9v^a6r8t|(H=vv6u;w##S=qi)1P3LdCa$Zs=7Ragw=MfA|Mt!j5=^R-~UF{ zO>uiH`F)4ejXul?wnjTxMo1T7$a+VUn%ah#&flxVVMeFDC9elPJC# zcJ9o-iFz7P7LZtMHf4?52l1fn1Lx4E>@Vv4bnRFLU2a2Gii|#%#Q`RskhG}BQ>E|9 z)Zr&7xw?~p%1mdFMj(Uee&5}kZ@0fk-va!DuqS%*kf)k*sptU7+XuGukc!`#RHpY+ zD?TUZ0sMd+wswNTQEk@x-0~Lkpz|%ZICy|kZF9Acqkz(p3+ZWg=#`vG(Bl2yzq(gS zEnJ%dY*Tr!`FD{VsUf<+lk%#L>@f9>m$pFi1#!!!r=z(;PC)+bjfNyXdb6}PYM>TU zZX#iIg?-w4l1^Vt>+!EnI;QtcOKIDAHp_>dX);bOHqrgBOH|ozbDw5qnzC;0+{n!j zJ05Ji_Gkgu%QgPx3YS)tifr@)9zY{FyQI6RdXx=^dyvoiT_Rxa*HP=UZ(5+&D*J}_ zwEMJv9^ytVYNGyanMas1#0M!{I& zUi70vESXeF>8F#7eaWrq3SUv!5{}c`OLpQs+)e~ z(P&3Xl2hds9tg%dcZVZj~a}lProP@JGuziprMH z|88T{UPHjj;gi-q&!6Y!#ZOUgxVJX6o#uHji2+N2F{xTxt^c(q9vS+dvY|~diBP(O zA5a~^9Q8CB4_pPzjt(aNlGzpzx|?ak?ztgH02a1uvJEse|4MSXmScHkQgcs0V(qjR zXmk=tPJEvdRY2RfaV0xhgqqh#Q>YtSDXGL9v*|e_Tb)4CV?bmY-~!P1`Bj(Q{Tp(r zK~JXXqa|Qp@Dec-0^`qreZ{%_iMYtR$2P0)y+y(7bcr-q0)GnZOr$S~YN`Z}K5erv z1Resz4p;a%R_E+3D~^G}nX=3s)OqEz{e_=qGV^Dq2M#nCWjTI%dUm~woJqCR&*SAX zeCGylN-owx{W<2x_s7$5p9Hx7iRSz|lHqQNX#H+QusFF$BJS{7v+fu1*TC-e%fX#r z+bVyguE`ZE8EtSIGG;N7K9|cV6zSZB{{VyfR%$7QAYD6+A4zBLu{fX z+c=EqfUpLYQ7j5$(}GdFBjE~S1UJ3U$FC+odx5a}mv+Y6*k2xp4j0>p3Vg4R&jvn;D<`$j{p$ond+8>VJg8GGVr>PN>P|~0* ziT%t}sUMS2IAE*4TCt{}IKcqdn~w8v^TNF*TscZ65K@GlgIKN_io(uYarS&>Y4NZn z)81CjH#Hx+{JwbjB~R!MY*Fp`_;Y>&B+1z&$#F0Rr7ZWa$J*ayTQ}i}o$|^ZerrU2 zXW`v*FAccLD|b2{bb8_DMC3Y2CuNhvO)q5y*FRmD8al|Mt#ng#K_G!1Q%(u^#~e(- zFOBd-5&UR5$q)~{4`VR;_d>&!&qfe}1l*aZxSaV#N0RAnz~69TIN-YZ42nEzZ_B`; zr=g~(gQ3GNn5^ZOuB{E0((?(|*v9My|O7~e4E;5Pj+>!iF z2{h%xb`uR5hRcuuR}#>-x{@=3wzR>?HKfxaWgNiBMqdB+bH3~V-qccP50Z*ZFHRDR z5~B^g$)iU4apMsprR$O7r zx8i`tZOO+3vRl!Ff3~`k{}uZSF6zrk`;~Td5J2YBLTT#rgaG&owE9R>GWSrY_y`s4 zay+$Ml_O#D;hi_0BZ^1mAm$jsEZw2zKX(w=eulJl_jFvzBG#bQzPu^l*3ZfC z)%H9wRvZL%J72yRCU@XX^AgEMZ-wu$xaszztNql~A?akO(knU>>2dF=M4NFZ5>d_- z)0CETKHH`)k_KE6J;BPLfmst+`2{>z(7xi8R3J@I;op+v3s; zI6rlA9DsbM(%JQ3R8QLGsdHxn@E^5~HMfR-am>a!)Mub`L8zEflEt%?P!k|A(OUZZ z{^pUe5gf_7zr*SR!HO}k%^jrtEm1Khar+1%11QI1+Bxn$x$or5XE;%$>^q3({3Iso&elKf=zw~F4cg{x@gTH=A0CQ@O8w- z5ep8+0OPOS3^7NdxNNy#)!vUJxJ+Zp0+i{ z4(d>gMlFUbrtWL_$I8Bo`!f;8y=VGy`#;NuLco=29k)jpYh@;Laraj#32$uQepN>} z0RVUQul`p!D2oVqOh#%=4crfbS^Szhej9SxigNI2gQ{Nl05#$qv*9Yv^K@@1CG=`? zd_>=r0rrRyDOOdreX=pDDzjJ_XP19D^=li%62fZW%OPTJmbxx8hUf%Dw1OU>n6+nW3JOu6JS(mCsEvYeF;>uA|7JbyUyUs{} z(Oh758HuB>%`PM%!zuft<|*y*|KkRCVuErdxtS^hGc!HeSv&msWV(uSD7|B&zwfTn z(qDfZ#$7aeh)r`Yd&>}bOV$$U{#ioo`Bpif+0|&!2jRV(!8xOBF&Ws4|Mm}%OBjgV zxG^W4J!3Q2W6fac@@;{A`V)_J8fWDH2(st2YSO7Puq|!d_@)Ex%%Nc)PWgT0j>CQ& zvEL(P-9%itJRg}rWsMuKUmlOd1y42O%sk}}+B~BTaVknNUfnM6KSpdHOeVe+eWg2P zFYC@T++2|)y&H}zIgP&q?)FDhZpb-t7r0V9-SqWJkJQ+~!?u#bM4dR7 z<`k!qNd7v$>avA$myqH8z_=>OLPCt;*!_wqJAyEl!o2-2ED~IR=f{D=Xfc*@P2$cH zdcoxVR@m$!rD95g^5)y(e9+((4nq~w;@ld^>@`!n=0bc#$=j)Fp`*gjSkxA+Hs_=! z+F-`S3W!KPd2^&mXr4kN82*)f4U;{k{XM5@SVesrX>wM!w39o0PQJ^Ca%&wV3b}xp z>Y|te%WF!Nvdv_`2PTaCvT~87a>g}!RP?8DM8fl3XEe^e7_*%M^2_PZ(?E zq9pXVSh+ELyMgS39}vpwur4J>^iw%Q#>7@~Xt5Z`Sh^G68d`&C?7ug@w{4cwqDAO9T zF$OG$K!<=sr%J75>Wjti1y1>u{8wx&P3A0oYjI(T8i&C`Bn{;21J3bWP88w%cURtB zUn^yxiR0ns=Zo#xE&taNt^snxq>2Tc!uRpdZ|g4O@+HrwKPb7){IwKV2VYk%Y{%yI zlHGV+&JEvRpZ&-)Nb=i~R74Lolp%X?-VbH}fQZQ9#PIL)pNRCs|2#hr0|~L$8%T2= z?SPuMmE6)7K!qSc>EHGbocv6zh3!1x*2ROrEDr)su4HLS`|nQz#}q9b`uxP1Zf1ei z_pr7zlwe7V`qNfVSnSz zV8A5wdp0@U%*PH_*R15V#nRL^jpk^QMaGvc<#CA8k%Y#PyhdCfVJHSWGQJJNm>E^s zk@9P!Ma$m!aYOyxduDoFjVR8}Yw*ZyLsiXttwC#e(kgtCpvsTtX^8b!=Y#BN82&cu zMYRh(Y+tGit#-Jc3$=7V#)Ebnl&5Qz}N!S?8J zBw>&UnnO9Al9ks18(O+??+z&I(M9m$^nX_UrtK5xzyrTqIjDek8Z!Ua-#d);Z!j<8 z_g|dBuR5@}X#ed2Yfz@ZMXr7qkICec)uijdrg+e|;=gWYpqq})I{F0k+CJdI zEd2Zm>S;SneKfj^xe_HgUt*DFHOrS$On(-ocCHJ0f z8}vmlt7bY136p1C;$sSofYSVQY?)6o_2QVj5nWKX1Z(8T>8QA;p&&$o(T-#&?$_D&hoA2)?+l=<~Pq^I4+}+V(#X406pd0XdT99e+ zD8@5&;p*P2#gz^zy<&~hHYUacJ$fo>QKuHH)veBncy2T54lrRpLuAypUg_-5%c%MN zv_|(|^^(#-Y>|3<={Yoasv`?aS$yzO&xa=Ia*b9*#cmnRw= znM^pV-KOj^k1ox34@hr8ebT%UTT!@j+3~_m33tiqNt5HkIYa<$Su5z9+}_Wla1I&Jx;IuoY!U$q`)yE)E7j^PDmw*6o6K>|3I`s z-0&=PO;IyPfl2TInNfpkB-m~!Y}A&5g+JkJ+zjc}n7+eem{&&0vOmN*Tc*>8JGxki z2d&A0vt#tj7TIPA=o3k+M_s?6C$T1k_rHSomV5K+9FK1Q;B*kpa zwE#hWEquUL?D6l-(uZvOAWF;i{AnhyCZ6%GA$!ilO@xSeu~2(`0LIgx1bu+>dHm?nGybeoL;PJxzdMv$(XA3E8wlm%kW;|U?rGOr8{|J=rvsXUqx)Y8Aqn8 z$}4upRlEWWHfFAF?hZWO+W;rF^Grw^gT1WG#}8K~h9ei$)(?Bu_{oXl}j%nt@i+}Sn0 za_L{>j=GXU?K?XW{OVLRo-lpxWmv0ZS!@%I#FQ@%6WOL7v10@GUf4Ys)+tx7e_(suN5?yhY7e;X1awQ= zD)cRq^bQ;4Lba$#yZ=&jH=61a0X*u9t!PTwbUwHsXTGW&+#4mqrU%_}OIFD!rAj7b zMY=Jeau#iepngPCT0^2+mbj+uG|n-4Te8rfBrS#b`eeRLgIE?1 zGI29=u(Go;(KB&SGBHt7!!gR*n}`{@m=aTo@vtzlu>7|V{{OqQj$J?{LnsPMu#2*> zi;1$baSF3bh_P^TiExT=iHmcKi*quIh>Hmj^Zj34bm16(o7$PXSP-)?bEnSDfl>qH zsg@SmnmD5~&h}1?J-;%me`T=AHa4$4o3;OHY_ZH>v&=B-v`vw?{TUP(xf@7yP4!nu zTm=PRQPCWI+i*5sQSj8KoC;yEA2nDJCyv<9!9@&JLfoXQ7wG-qn)%**w>$aHy62nb zezqGRFVs?io+i(tbvf24mf@Pn8M6k`HQB&nn;I=xgMTUbFNdd4&_Pf)-CHaKi|1iq z{ai;kgryR<7SAN313$7Lu=o*-S|-#P=$2fEc1ScefU?fDr>PLa5zQf?foL^5GA99R zEljYEz7CVG*Fk8DYnxUF%2rT37YZ{IMA39%5fnVN3$~8f1Ui7}fO>_gC1?oHwgtC@ zEK9CJt!yhUzO|{P5~>d01It0x@A65s}Vg_e)$0w;S>vXY83Z?R>8 z1#4QQ+2qIO+hJ{hBzxf);6Mn_2+1iJ@&Y{J>$I}+$hAgYL29jy4)8jRdWlJQZs$OSfP(P)7YOu0+44weDTpR*z7%0HFd za8sDH({*{q$cn51@Z&DIT*eadnnEPw_-+@sRuf=e129a{iH8X7K%Tr%h;RV?rz9jb_p5WQX|&tR0PiFQUoC3;?#Ama6!CK*eN)u2G~pR# zQ2?bNU&QH{g8aFc(|TfWj&5IKbB^y|Vr5SDNMe3Y_gG?T&emjNOwQ*_Vo(mjLZW95 z|8k;zj_z8bX^!t^qIS;Etx3`ioBCrFp>6Cad0c^~(DVzrkOc60A+!!h?EOJQZ2o~u zto&gsUM#6^vMQlA7O z(SY;hBnX8mk<2QpK)8S;gJ|9i=^Vs=XFm$F6rBjL#<*tEA#6Im6YErP|y+BCQ4 z+gk@NkZapBWCLn{_x|vk+Z`9e;k_grYP+P?K{`O0WKPld7Uw#+n5^A2+8#fB(Z-OH zc*DD-Pw=&)ZvZKu0vm&mDWDP9)rF6N0(}g)TV`w^Q2i*_P^1Rv(E*MQ7{C30F+r9H z<4!tsTSuD(NH`l1()o+mL8SD%I)GRCXBs32N$1*4Z31WaUZnhOIWFKffxHIrr$M$s z-UiT@f&6vINJ3DX(EpL%n@Ih#hJM8$Yf~mo3kQ*fbp9Y3B75E}KXb=PfnuC}E zq7!D>T^Upbr`1&VtNm6r(ILU@o?b`=3$DLa)V&afII99dfJ|UTm|9*&K4KZ5bP7^| z+~HplNGsGVgxrS!$_kOfi;(uN(QYU3S8E%>XSHu2Own21-P$cWLRHB12R*1Q9G!6* z=#OKUxAzwOF1vePwr3>!9p1y!YbS z_(81+>%=uUpYI|m>ZJQH4Hq^6+T7F<%Kyxb&6%9|lJEVPI`iwL+Fyf=p!UJh?fSlw zxFxU+!}0B$EyV=R&T=O%XooW+f_~|Z%(iCo-sHm;Ib*Rdc*WlFR10R&7~^}ioxf>g zHlwA8Yj$J{M&lr;B`44i)n@AUmch2<;O@Wdv~cMg$DR)s14koknY_*Z-e=C9ug(vK z(-_D1>W97?@8=Gt!e{vyHziPCoSRipt}wt@KVB%(xYJu0D6Ogh+XfLinNz+HES=Ai z2Sx=(<4qF~Nl=AWIn+;F510AB><{{Z#tDLtnhUK#ZU@En6Br?9PWIb0dm5fOJH7%T z8uB2$2Gbz!0qX#Tim)Wx7Z7?!G5+HLfspQNDwjHd$4pBQm*LBw5X!l4$z=Gn8Nhah zi6cSho;6c~Rlyb@yl+|ub3Cc{7C~_gDuc(E{&~7EukqHNn!HM9>$7or ztIi%kYP7WIt~I6i*~3QjBK62hOCSjHZdTh{rHQejH7nZ4nZZ@NB&!0RO7;Rp z4fL4`Ib*tN7c|K~U)76^)=PA!U=yyC&7frpu9WSd5&6VPfTwsI*~UQ8uiX*Fgwnm{ z6UKznzs|d}Q zQnB7gfW$)(Dx#VTL=zun3S6&RkSn4CU}8#T$ZF-Xh~t!EN|nxHwYhX!*0{$s>9B9I zSYFwvxKkz(&mvGbEm0kf>+Tw5g}j7Zk*f&a2)&3*2*S>EuCX{;Nqv~k%I7R$8}*jd zwU@wcUf$b)Md|E8FZrBPXgoGoaCrL5NrO=x!odhB?8rg42Em{PKXgJB#3#8>#CFWE zO$Vb-sU275vzQxb?Zs;Q2KOqnJo}#@a&~btHMISoWp88!=j>wWITE-wN1{{R_xQHuZo From 90f6098f47d5582fa483ea2d2d1ad923d612de87 Mon Sep 17 00:00:00 2001 From: "Weixiao.zhan" <45820168+weixiao-zhan@users.noreply.github.com> Date: Wed, 17 Aug 2022 11:53:56 -0500 Subject: [PATCH 125/505] Docker - use ppa for gcc11 (#1291) --- docker/Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 63a6c50e57..8f88f1df9a 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -64,7 +64,7 @@ RUN python3 -m pip install --upgrade pip && \ # Update gcc to 11.1.1 (otherwise we'd have 9.3.0) RUN apt-get install -y software-properties-common && \ - add-apt-repository 'deb http://mirrors.kernel.org/ubuntu hirsute main universe' && \ + add-apt-repository -y ppa:ubuntu-toolchain-r/test && \ apt-get update && \ apt-get install -y gcc-11 g++-11 && \ update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 70 --slave /usr/bin/g++ g++ /usr/bin/g++-9 --slave /usr/bin/gcov gcov /usr/bin/gcov-9 --slave /usr/bin/gcc-ar gcc-ar /usr/bin/gcc-ar-9 --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-9 && \ @@ -80,7 +80,7 @@ ENV PATH=/opt/spack/bin:$PATH RUN python3 -m pip install botocore boto3 # Find packages already installed on system, e.g. autoconf -RUN spack external find --not-buildable gcc@11.0.1 autoconf bzip2 git tar xz perl cmake m4 ncurses && \ +RUN spack external find --not-buildable gcc autoconf bzip2 git tar xz perl cmake m4 ncurses && \ spack config add 'packages:all:target:[x86_64]' # 'spack external find' doesn't work on libraries From 9d1a3d8655958749556fcd55225485a96d27562d Mon Sep 17 00:00:00 2001 From: kupsch Date: Wed, 5 Oct 2022 09:28:50 -0500 Subject: [PATCH 126/505] fix location list PC range values (#1297) - in some instances the valid PC range for the variable was being offset twice by the base address of the shared object; the value returned by libdw already adds this offset and then dyninst adds it again in some instances --- symtabAPI/src/dwarfWalker.C | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 6459910a46..3f4dc9c7ff 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -2647,9 +2647,10 @@ bool DwarfWalker::decodeLocationListForStaticOffsetOrAddress( } } else { - dwarf_printf("(0x%lx) Using lexical range, shifted by module low\n", id()); - loc.lowPC = location->ld_lopc + base; - loc.hiPC = location->ld_hipc + base; + dwarf_printf("(0x%lx) Using lexical range\n", id()); + + loc.lowPC = location->ld_lopc; + loc.hiPC = location->ld_hipc; dwarf_printf("(0x%lx) valid over range 0x%lx to 0x%lx\n", id(), loc.lowPC, loc.hiPC); From ef13561a38a6b3c0ea8bcebab2572fc85e20ea96 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 5 Oct 2022 10:06:01 -0500 Subject: [PATCH 127/505] Fix public header deletes (#1301) * Undelete stackwalk/h/local_var.h This was incorrectly removed by d42b65910. * Undelete parseAPI/h/GraphAdapter.h This was incorrectly removed by d42b65910. It is still needed if ENABLE_PARSE_API_GRAPHS is set. --- parseAPI/h/GraphAdapter.h | 93 ++++++++++++ stackwalk/h/local_var.h | 289 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 382 insertions(+) create mode 100644 parseAPI/h/GraphAdapter.h create mode 100644 stackwalk/h/local_var.h diff --git a/parseAPI/h/GraphAdapter.h b/parseAPI/h/GraphAdapter.h new file mode 100644 index 0000000000..384740f09f --- /dev/null +++ b/parseAPI/h/GraphAdapter.h @@ -0,0 +1,93 @@ + + +#include "CFG.h" +#include +#include + +using namespace Dyninst; +using namespace ParseAPI; +using namespace std; + +namespace boost +{ + template<> + struct graph_traits + { + // Boost graph typedefs + struct function_tags : public virtual boost::vertex_list_graph_tag, + public virtual boost::bidirectional_graph_tag + { + }; + + + typedef function_tags traversal_category; + typedef Function::blocklist::const_iterator vertex_iterator; + typedef size_t vertices_size_type; + typedef Block* vertex_descriptor; + typedef Edge* edge_descriptor; + typedef boost::directed_tag directed_category; + typedef boost::allow_parallel_edge_tag edge_parallel_category; + static vertex_descriptor null_vertex() + { + return NULL; + } + typedef Block::edgelist::const_iterator out_edge_iterator; + typedef Block::edgelist::const_iterator in_edge_iterator; + typedef void edge_iterator; + typedef void adjacency_iterator; + typedef size_t degree_size_type; + typedef size_t edges_size_type; + }; + template<> + struct vertex_property_type + { + typedef property type; + }; + + + + + std::pair::vertex_iterator, + boost::graph_traits::vertex_iterator> vertices(const Dyninst::ParseAPI::Function& g) + { + return std::make_pair(g.blocks().begin(), g.blocks().end()); + } +} + +boost::graph_traits::vertices_size_type num_vertices(const Function& g) +{ + return g.blocks().size(); +} +boost::graph_traits::vertex_descriptor source(boost::graph_traits::edge_descriptor e, const Function& g) +{ + return e->src(); +} +boost::graph_traits::vertex_descriptor target(boost::graph_traits::edge_descriptor e, const Function& g) +{ + return e->trg(); +} +std::pair::out_edge_iterator, boost::graph_traits::out_edge_iterator> + out_edges(boost::graph_traits::vertex_descriptor v, const Function& g) +{ + return std::make_pair(v->targets().begin(), v->targets().end()); +} +boost::graph_traits::degree_size_type out_degree(boost::graph_traits::vertex_descriptor v, const Function& g) +{ + return v->targets().size(); +} +std::pair::in_edge_iterator, boost::graph_traits::in_edge_iterator> + in_edges(boost::graph_traits::vertex_descriptor v, const Function& g) +{ + return std::make_pair(v->sources().begin(), v->sources().end()); +} +boost::graph_traits::degree_size_type in_degree(boost::graph_traits::vertex_descriptor v, const Function& g) +{ + return v->sources().size(); +} +boost::graph_traits::degree_size_type degree(boost::graph_traits::vertex_descriptor v, const Function& g) +{ + return in_degree(v,g)+out_degree(v,g); + +} +PARSER_EXPORT bool dominates(Function& f, Address a, Address b); +PARSER_EXPORT bool dominates(Function& f, Block* a, Block* b); diff --git a/stackwalk/h/local_var.h b/stackwalk/h/local_var.h new file mode 100644 index 0000000000..63e2692e3f --- /dev/null +++ b/stackwalk/h/local_var.h @@ -0,0 +1,289 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#if !defined (local_var_h_) +#define local_var_h_ + +#include +#include "Symbol.h" +#include "Symtab.h" +#include "Type.h" +#include "Function.h" + +#include "frame.h" +#include "procstate.h" +#include "walker.h" + +#include +#include + +using namespace Dyninst; +using namespace SymtabAPI; +using namespace Stackwalker; + +static Symtab *getSymtabForName(std::string name) +{ + static std::map symtabs; + std::map::iterator i; + + i = symtabs.find(name); + if (i != symtabs.end()) { + return i->second; + } + + Symtab *obj = NULL; + Symtab::openFile(obj, name); + symtabs[name] = obj; + return obj; +} + +class LVReader : public MemRegReader +{ + private: + ProcessState *proc; + int current_depth; + std::vector *swalk; + Dyninst::THR_ID thrd; + + bool isFrameRegister(MachRegister reg) + { + return reg.isFramePointer(); + } + + bool isStackRegister(MachRegister reg) + { + return reg.isStackPointer(); + } + public: + + LVReader(ProcessState *p, int f, std::vector *s, Dyninst::THR_ID t) : + proc(p), + current_depth(f), + swalk(s), + thrd(t) + { + } + + virtual bool ReadMem(Address addr, void *buffer, unsigned size) + { + return proc->readMem(buffer, addr, size); + } + + + virtual bool GetReg(MachRegister reg, MachRegisterVal &val) + { + Frame &f = (*swalk)[current_depth]; + if (isFrameRegister(reg)) { + val = static_cast(f.getFP()); + return true; + } + if (isStackRegister(reg)) { + val = static_cast(f.getSP()); + return true; + } + if (reg.isPC() || reg == Dyninst::ReturnAddr) { + val = static_cast(f.getRA()); + return true; + } + + if (!current_depth) { + return proc->getRegValue(reg, thrd, val); + } + + current_depth--; + Frame &g = (*swalk)[current_depth]; + Offset offset; + void *symtab_v; + std::string lib; + g.getLibOffset(lib, offset, symtab_v); + Symtab *symtab = getSymtabForName(lib); + if (!symtab) + return false; + + bool result = symtab->getRegValueAtFrame(offset, reg, val, this); + current_depth++; + return result; + } + + virtual bool start() { + return true; + } + virtual bool done() { + return true; + } + virtual ~LVReader() {} +}; + +/** + * Given a StackwalkerAPI frame, return the SymtabAPI function + * that created the frame. + **/ +static Dyninst::SymtabAPI::Function *getFunctionForFrame(Frame f) +{ + Offset offset; + void *symtab_v; + std::string lib_name; + bool result = f.getLibOffset(lib_name, offset, symtab_v); + if (!result) + return NULL; + Symtab *symtab = NULL; + if (symtab_v) { + symtab = (Symtab *) symtab_v; + } + else { + symtab = getSymtabForName(lib_name); + } + Function *func; + result = symtab->getContainingFunction(offset, func); + if (!result) + return NULL; + return func; +} + +/** + * Given a frame in a stackwalk, and a local variable, get the value + * of that local variable in the frame. + * + * 'localVar' is the variable that we're getting the value of. + * 'swalk' is a stackwalk from StackwalkerAPI + * 'frame' is an index into swalk and notes the frame that we'll be reading + * the variable from. localVar should be part of the frame defined by + * swalk[frame] + * 'out_buffer' is a buffer where we will write the value of the local variable. + * out_buffer_size should be the size of out_buffer, used to prevent buffer overflows + * + * getLocalVariableValue will return one of the following on success or error + **/ +static int glvv_Success = 0; +static int glvv_EParam = -1; +static int glvv_EOutOfScope = -2; +static int glvv_EBufferSize = -3; +static int glvv_EUnknown = -4; + +static int getLocalVariableValue(localVar *var, + std::vector &swalk, unsigned frame, + void *out_buffer, unsigned out_buffer_size) +{ + bool result; + + if (!var || frame < 0 || frame >= swalk.size() || !out_buffer) { + return glvv_EParam; + } + + /** + * Find the SymtabAPI object for this frame + * Find the offset for this frame's RA() + **/ + std::string lib_name; + Offset offset; + void *symtab_v; + swalk[frame].getLibOffset(lib_name, offset, symtab_v); + THR_ID thrd = swalk[frame].getThread(); + ProcessState *proc = swalk[frame].getWalker()->getProcessState(); + + /** + * Find the variable location that is valid at this point. + **/ + bool deref; + std::vector &locs = var->getLocationLists(); + std::vector::iterator i; + for (i = locs.begin(); i != locs.end(); i++) { + if (i->lowPC <= offset && offset < i->hiPC) { + break; + } + } + if (i == locs.end()) { + return glvv_EOutOfScope; + } + VariableLocation &loc = *i; + + /** + * Interpret the variable location + **/ + Address var_addr = 0; + deref = (loc.refClass == storageRef); + switch (loc.stClass) { + case storageAddr: + var_addr = loc.frameOffset; + break; + case storageReg: + case storageRegOffset: { + MachRegisterVal reg_value; + MachRegister reg = loc.mr_reg; + if (loc.stClass == storageRegOffset && reg == -1) { + reg = MachRegister::getFramePointer(proc->getAddressWidth() == 4 ? Arch_x86 : Arch_x86_64); + } + + LVReader r(proc, frame, &swalk, thrd); + result = r.GetReg(reg, reg_value); + + if (loc.stClass == storageReg) { + var_addr = reg_value; + } + else { + deref = true; + var_addr = reg_value + loc.frameOffset; + } + break; + } + } + + /** + * Get the size of the variable + **/ + unsigned size = out_buffer_size; + Type *var_type = var->getType(); + if (var_type) { + size = var_type->getSize(); + } + if (size > out_buffer_size) { + return glvv_EBufferSize; + } + + /** + * Read the resulting value + **/ + if (deref) { + result = proc->readMem(out_buffer, var_addr, size); + if (!result) { + return glvv_EUnknown; + } + return glvv_Success; + } + + if (size > sizeof(var_addr)) { + //Value stored in register, but larger than a register? + return glvv_EBufferSize; + } + memcpy(out_buffer, &var_addr, size); + + return glvv_Success; +} + +#endif From c6f38ae5ac04d7e78e9341ea9cfe393424e6fb2b Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 21 Oct 2022 14:12:00 -0500 Subject: [PATCH 128/505] Search 'elfutils' subdirectory for libdebuginfod/includedir (#1307) * Search 'elfutils' subdirectory for libdebuginfod/includedir Debian distributions put the elfutils includes under /include/elfutils. This just adds the /elfutils subdirectory to the search where is returned from pkg-config. --- cmake/Modules/FindLibDebuginfod.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/Modules/FindLibDebuginfod.cmake b/cmake/Modules/FindLibDebuginfod.cmake index fce581f4e2..b3d3691d8b 100644 --- a/cmake/Modules/FindLibDebuginfod.cmake +++ b/cmake/Modules/FindLibDebuginfod.cmake @@ -33,7 +33,7 @@ find_path( NAMES debuginfod.h HINTS ${PC_Debuginfod_INCLUDEDIR} ${PC_Debuginfod_INCLUDE_DIRS} ${LibDebuginfod_ROOT_DIR}/include ${LibDebuginfod_ROOT_DIR} - ${LibDebuginfod_INCLUDEDIR} + ${LibDebuginfod_INCLUDEDIR} ${PC_Debuginfod_INCLUDEDIR}/elfutils PATHS ${DYNINST_SYSTEM_INCLUDE_PATHS} PATH_SUFFIXES ${_path_suffixes} DOC "libdebuginfod include directories") From 91967d13e1fa63a25ed0925980df58f673085b79 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 21 Oct 2022 16:31:22 -0500 Subject: [PATCH 129/505] Fix possible null pointer access in BPatch_module::findFunctionByAddress (#1308) * Fix null pointer access in BPatch_module::findFunctionByAddress 'isValid' checks that 'mod' is not null. The code here only runs if mod _is_ null. --- dyninstAPI/src/BPatch_module.C | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dyninstAPI/src/BPatch_module.C b/dyninstAPI/src/BPatch_module.C index cb22428225..fad283bcb8 100644 --- a/dyninstAPI/src/BPatch_module.C +++ b/dyninstAPI/src/BPatch_module.C @@ -527,9 +527,7 @@ BPatch_module::findFunctionByAddress(void *addr, BPatch_VectorfileName()); - BPatch_reportError(BPatchSerious, 100, msg.c_str()); + BPatch_reportError(BPatchSerious, 100, "Module is not valid"); } return NULL; } From eea540a94564371d3170d01ab16c62ccbc8f9b9d Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 24 Oct 2022 09:55:44 -0500 Subject: [PATCH 130/505] Do not build dyninstAPI_RT as separate CMake project (#1309) * Move dyninstAPI_RT project into Dyninst * Always treat .S files as C files This should have been removed by fc790218e in 2016. --- CMakeLists.txt | 60 ++---------------------------------- dyninstAPI/CMakeLists.txt | 2 -- dyninstAPI_RT/CMakeLists.txt | 21 +------------ 3 files changed, 3 insertions(+), 80 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 72cab2e837..feb490a70c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,9 +23,6 @@ if("${isSystemDir}" STREQUAL "-1") set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") endif() -set(RT_SOURCE_DIR ${DYNINST_ROOT}/dyninstAPI_RT) -set(RT_BINARY_DIR ${PROJECT_BINARY_DIR}/dyninstAPI_RT) - set(CMAKE_MODULE_PATH "${DYNINST_ROOT}/cmake" "${DYNINST_ROOT}/cmake/Modules" ${CMAKE_MODULE_PATH}) @@ -101,64 +98,11 @@ if(${SYMREADER} MATCHES symtabAPI) add_subdirectory(parseThat) endif() -# Build the RT library as a separate project so we can change compilers -message(STATUS "Configuring DyninstAPI_RT in ${RT_BINARY_DIR}") -file(REMOVE_RECURSE ${RT_BINARY_DIR}/CMakeCache.txt ${RT_BINARY_DIR}/CMakeFiles - ${RT_BINARY_DIR}/Makefile) -file(MAKE_DIRECTORY ${RT_BINARY_DIR}) -set(RT_C_COMPILER - ${CMAKE_C_COMPILER} - CACHE STRING "Compiler for runtime library") +add_subdirectory(dyninstAPI_RT) + set(ENABLE_STATIC_LIBS NO CACHE STRING "Build static libraries as well?") -message(STATUS "Configuring RT library") - -execute_process( - WORKING_DIRECTORY ${RT_BINARY_DIR} - COMMAND - ${CMAKE_COMMAND} "-DCMAKE_C_COMPILER=${RT_C_COMPILER}" - "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" - "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" - "-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}" "-DINSTALL_LIB_DIR=${INSTALL_LIB_DIR}" - "-DINSTALL_INCLUDE_DIR=${INSTALL_INCLUDE_DIR}" "-DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}" - "-DBUILD_RTLIB_32=${BUILD_RTLIB_32}" "-DPLATFORM=${PLATFORM}" - "-DDYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS=${DYNINST_DISABLE_DIAGNOSTIC_SUPPRESSIONS}" - "-DDYNINST_EXTRA_WARNINGS=${DYNINST_EXTRA_WARNINGS}" - "-DDYNINST_WARNINGS_AS_ERRORS=${DYNINST_WARNINGS_AS_ERRORS}" - "-DDYNINST_CXX_LANGUAGE_STANDARD=${DYNINST_CXX_LANGUAGE_STANDARD}" - "-DDYNINST_C_LANGUAGE_STANDARD=${DYNINST_C_LANGUAGE_STANDARD}" -G - "${CMAKE_GENERATOR}" -B "${RT_BINARY_DIR}" -S "${RT_SOURCE_DIR}") -find_file( - ${RT_MAKEFILE} Makefile - PATHS ${RT_BINARY_DIR} - NO_DEFAULT_PATH) -message(STATUS "RTlib Makefile: ${RT_MAKEFILE}") -if(MSVC) - include_external_msproject(DyninstAPI_RT dyninstAPI_RT/dyninstAPI_RT.vcxproj) - include_external_msproject(DyninstAPI_RT_static - dyninstAPI_RT/dyninstAPI_RT_static.vcxproj) -else() - add_custom_target( - DyninstRT ALL - $(MAKE) - WORKING_DIRECTORY ${RT_BINARY_DIR} - COMMENT "Building DyninstRT") - if(TARGET TBB) - add_dependencies(DyninstRT TBB) - endif() - if(TARGET dyninstAPI) - add_dependencies(dyninstAPI DyninstRT) - endif() - if(TARGET dyninstAPI-static) - add_dependencies(dyninstAPI-static DyninstRT) - endif() - if(TARGET boost) - add_dependencies(DyninstRT boost) - endif() -endif() - -install(SCRIPT "${RT_BINARY_DIR}/cmake_install.cmake") set(VERSION_STRING "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}.${DYNINST_PATCH_VERSION}") diff --git a/dyninstAPI/CMakeLists.txt b/dyninstAPI/CMakeLists.txt index e9ee10cd87..788216df19 100644 --- a/dyninstAPI/CMakeLists.txt +++ b/dyninstAPI/CMakeLists.txt @@ -209,5 +209,3 @@ if(UNIX) target_compile_definitions( dyninstAPI PRIVATE DYNINST_COMPILER_SEARCH_DIRS=${DYNINST_COMPILER_SEARCH_DIRS}) endif() - -install(SCRIPT "${RT_BINARY_DIR}/cmake_install.cmake") diff --git a/dyninstAPI_RT/CMakeLists.txt b/dyninstAPI_RT/CMakeLists.txt index 0922804f27..c1f587f41f 100644 --- a/dyninstAPI_RT/CMakeLists.txt +++ b/dyninstAPI_RT/CMakeLists.txt @@ -1,12 +1,3 @@ -# CMake configuration for dyninstAPI_RT directory -cmake_minimum_required(VERSION 2.6.4) -project(DyninstRT C) - -set(DYNINST_ROOT ${PROJECT_SOURCE_DIR}/..) - -include(${DYNINST_ROOT}/cmake/LanguageStandards.cmake) -include(${DYNINST_ROOT}/cmake/shared.cmake) - include_directories(${DYNINST_ROOT}/dyninstAPI_RT/src ${DYNINST_ROOT}/dyninstAPI_RT/h ${DYNINST_ROOT}) @@ -55,11 +46,7 @@ set(RT_STATIC_ONLY_SRC_LIST_aarch64 src/RTstatic_ctors_dtors-aarch64.c) # that gcc can handle .S. enable_language(ASM) file(GLOB SRC_ASSEMBLY "src/*.S") -if(NEED_NATIVE_ASSEMBER MATCHES YES) - set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE ASM) -else() - set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE C) -endif() +set_source_files_properties(${SRC_ASSEMBLY} PROPERTIES LANGUAGE C) # The arch-specific files other than RTthread-x86 are Unix-only. if(UNIX) @@ -88,9 +75,6 @@ if(UNIX) endif() add_library(dyninstAPI_RT SHARED ${SRC_LIST}) -if(TARGET TBB) - add_dependencies(dyninstAPI_RT TBB) -endif() if(NOT PLATFORM MATCHES nt AND NOT PLATFORM MATCHES windows) target_link_libraries(dyninstAPI_RT ${CMAKE_DL_LIBS}) @@ -99,9 +83,6 @@ else() # windows endif() add_library(dyninstAPI_RT_static STATIC ${SRC_LIST} ${RT_STATIC_ONLY_SRC_LIST}) -if(TARGET TBB) - add_dependencies(dyninstAPI_RT_static TBB) -endif() # this should carry over from CMakeLists.txt set_target_properties( From bedbd67402a188bd1e9046fc147fec4831d53235 Mon Sep 17 00:00:00 2001 From: bbiiggppiigg Date: Wed, 26 Oct 2022 13:57:13 +0000 Subject: [PATCH 131/505] Fix incorrect format string in Result.h for u48 / s48 / u64 / s64 (#1311) --- instructionAPI/h/Result.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/instructionAPI/h/Result.h b/instructionAPI/h/Result.h index b6f0421388..a8e27b67dd 100644 --- a/instructionAPI/h/Result.h +++ b/instructionAPI/h/Result.h @@ -473,9 +473,10 @@ namespace Dyninst snprintf(hex, 20, "%x", (unsigned int)val.s32val); break; case u64: - return std::to_string(val.u64val); + snprintf(hex, 20, "%lx", val.u64val); + break; case s64: - return std::to_string(val.s64val); + snprintf(hex, 20, "%lx", (uint64_t) val.s64val); break; case sp_float: snprintf(hex, 20, "%f", (double)val.floatval); @@ -487,10 +488,10 @@ namespace Dyninst snprintf(hex, 20, "%x", (unsigned int)val.bitval); break; case u48: - return std::to_string(val.s48val); + snprintf(hex, 20, "%lx", val.u48val); break; case s48: - return std::to_string(val.s48val); + snprintf(hex, 20, "%lx", (uint64_t ) val.s48val); break; case m512: snprintf(hex, 20, "%p", val.m512val); From 5f0b86ebb263467f1d36915f0f8c396e484ffe6f Mon Sep 17 00:00:00 2001 From: kupsch Date: Wed, 9 Nov 2022 09:44:57 -0600 Subject: [PATCH 132/505] Allow assignment conversion without framepointer (#1314) * When performing assignment conversion of an instruction and with stack frame analysis, the call would assert if the frame pointer (or stack pointer) was TOP. Change to treat this as unknown (just as a bottom value is). --- dataflowAPI/src/AbslocInterface.C | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/dataflowAPI/src/AbslocInterface.C b/dataflowAPI/src/AbslocInterface.C index 8dfa1c3ebd..9d7ad000c2 100644 --- a/dataflowAPI/src/AbslocInterface.C +++ b/dataflowAPI/src/AbslocInterface.C @@ -428,10 +428,8 @@ bool AbsRegionConverter::getCurrentStackHeight(ParseAPI::Function *func, StackAnalysis::Height heightSA = sA.findSP(block, addr); - // Ensure that analysis has been performed. - assert(!heightSA.isTop()); - - if (heightSA.isBottom()) { + // return false if height unknown + if (heightSA.isBottom() || heightSA.isTop()) { return false; } @@ -449,10 +447,8 @@ bool AbsRegionConverter::getCurrentFrameHeight(ParseAPI::Function *func, StackAnalysis::Height heightSA = sA.find(block, addr, MachRegister::getFramePointer(func->isrc()->getArch()));; - // Ensure that analysis has been performed. - assert(!heightSA.isTop()); - - if (heightSA.isBottom()) { + // return false if height unknown + if (heightSA.isBottom() || heightSA.isTop()) { return false; } From 1e379019f8676d2759c16de3a76ed609028a014e Mon Sep 17 00:00:00 2001 From: bbiiggppiigg Date: Wed, 9 Nov 2022 15:45:22 +0000 Subject: [PATCH 133/505] Manually add hex prefix when formatting an Operand (#1313) --- instructionAPI/src/Operand.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instructionAPI/src/Operand.C b/instructionAPI/src/Operand.C index ddab6629a7..849e2a3144 100644 --- a/instructionAPI/src/Operand.C +++ b/instructionAPI/src/Operand.C @@ -134,7 +134,7 @@ namespace Dyninst Result res = op_value->eval(); if (res.defined) { char hex[20]; - snprintf(hex, 20, "%lux", res.convert()); + snprintf(hex, 20, "0x%lx", res.convert()); return string(hex); } } From 14a148c50d767af14eecbf4ed13bb2edb59ff061 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Nov 2022 12:37:23 -0600 Subject: [PATCH 134/505] Directly link to common in dynC_API (#1319) --- dynC_API/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynC_API/CMakeLists.txt b/dynC_API/CMakeLists.txt index 0dc95115dc..71df36a009 100644 --- a/dynC_API/CMakeLists.txt +++ b/dynC_API/CMakeLists.txt @@ -10,4 +10,4 @@ if(WIN32) endif() dyninst_library(dynC_API dyninstAPI) -target_link_private_libraries(dynC_API ${Boost_LIBRARIES}) +target_link_libraries(dynC_API PRIVATE common) From 44e8e658a1ca78a0320c1a8afc136ca09d37780c Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Nov 2022 12:37:44 -0600 Subject: [PATCH 135/505] Use dyn_c_hash_map in DwarfWalker (#1318) --- symtabAPI/src/dwarfWalker.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index f8e54493eb..8573fc13f3 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -218,7 +218,7 @@ class DwarfWalker : public DwarfParseActions { } Error; - using ParsedFuncs = tbb::concurrent_hash_map; + using ParsedFuncs = Dyninst::dyn_c_hash_map; DwarfWalker(Symtab *symtab, Dwarf* dbg, std::shared_ptr pf = nullptr); From 66a9a3d95bf72e5a92602b961f4b34fdaf256c2a Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 9 Nov 2022 12:38:05 -0600 Subject: [PATCH 136/505] Remove unused TBB from parseAPI (#1317) ParseAPI doesn't use TBB directly. This only compiled because of incidental inclusion of TBB via the global CMake config. --- parseAPI/CMakeLists.txt | 2 +- parseAPI/src/Parser.C | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/parseAPI/CMakeLists.txt b/parseAPI/CMakeLists.txt index 8faa83141e..8fac79a62e 100644 --- a/parseAPI/CMakeLists.txt +++ b/parseAPI/CMakeLists.txt @@ -102,7 +102,7 @@ if(WIN32) endif() dyninst_library(parseAPI common instructionAPI ${SYMREADER}) -target_link_private_libraries(parseAPI ${Boost_LIBRARIES} ${TBB_LIBRARIES} tbbmalloc) +target_link_private_libraries(parseAPI ${Boost_LIBRARIES}) if(WIN32) target_link_private_libraries(parseAPI shlwapi) diff --git a/parseAPI/src/Parser.C b/parseAPI/src/Parser.C index 047164b4bc..8095d05796 100644 --- a/parseAPI/src/Parser.C +++ b/parseAPI/src/Parser.C @@ -53,8 +53,6 @@ #include #include -#include "tbb/concurrent_vector.h" - using namespace std; using namespace Dyninst; using namespace Dyninst::ParseAPI; From 55848b7719271e1a784d75ccbbca5a31f1616d5f Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 11 Nov 2022 14:04:20 -0600 Subject: [PATCH 137/505] Support hash_compare concept from TBB >= 2021.1 (#1316) * Make keys const for dyn_c_hashmap allocator This is to match the updated allocator definition in TBB from OneAPI * Make a custom hasher --- common/h/concurrent.h | 49 ++++++++++++++++++++++++++++++++++--- symtabAPI/src/dwarfWalker.h | 46 +++++++++++++++++----------------- 2 files changed, 68 insertions(+), 27 deletions(-) diff --git a/common/h/concurrent.h b/common/h/concurrent.h index 17982aad24..2caa02f63e 100644 --- a/common/h/concurrent.h +++ b/common/h/concurrent.h @@ -40,6 +40,7 @@ #include #include #include +#include namespace Dyninst { @@ -52,12 +53,54 @@ namespace dyn_c_annotations { void COMMON_EXPORT runlock(void*); } +namespace concurrent { + template + struct hasher { + size_t operator()(K const& k) const { + return boost::hash{}(k); + } + }; + + namespace detail { + template + struct hash_compare; + + // New style tbb_hash_compare concept (TBB_VERSION_MAJOR >= 2021) + template + class hash_compare { + hasher my_hasher; + public: + size_t hash(Key const& k) const { + return my_hasher(k); + } + bool equal(Key const& k1, Key const& k2) const { + return k1 == k2; + } + }; + + // Old style tbb_hash_compare concept + template + class hash_compare { + public: + static size_t hash(Key const& k) { + return hasher{}(k); + } + static bool equal(Key const& k1, Key const& k2) { + return k1 == k2; + } + }; + } +} + template class dyn_c_hash_map : protected tbb::concurrent_hash_map, std::allocator>> { + concurrent::detail::hash_compare= 2021, K>, + std::allocator>> { + + using base = tbb::concurrent_hash_map= 2021, K>, + std::allocator>>; - typedef tbb::concurrent_hash_map, std::allocator>> base; public: using typename base::value_type; using typename base::mapped_type; diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index 8573fc13f3..9bd29ee74d 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -26,30 +26,28 @@ #include namespace Dyninst { -namespace SymtabAPI { - typedef struct { - Dwarf_Off off; - bool file; - Module * m; - } type_key; -} -} - -namespace tbb { - using namespace Dyninst::SymtabAPI; - template<> - struct tbb_hash_compare { - static size_t hash(const type_key& k) { - size_t seed = 0; - boost::hash_combine(seed, k.off); - boost::hash_combine(seed, k.file); - boost::hash_combine(seed, static_cast(k.m)); - return seed; - } - static bool equal(const type_key& k1, const type_key& k2) { - return (k1.off==k2.off && k1.file==k2.file && k1.m==k2.m); - } - }; + namespace SymtabAPI { + typedef struct { + Dwarf_Off off; + bool file; + Module * m; + } type_key; + inline bool operator==(type_key const& k1, type_key const& k2) { + return k1.off==k2.off && k1.file==k2.file && k1.m==k2.m; + } + } + namespace concurrent { + template<> + struct hasher { + size_t operator()(const SymtabAPI::type_key& k) const { + size_t seed = 0; + boost::hash_combine(seed, k.off); + boost::hash_combine(seed, k.file); + boost::hash_combine(seed, static_cast(k.m)); + return seed; + } + }; + } } namespace Dyninst { From bf14405ca0652eadf410a7530dea49618a49a1e8 Mon Sep 17 00:00:00 2001 From: John Mellor-Crummey Date: Fri, 11 Nov 2022 16:58:31 -0600 Subject: [PATCH 138/505] ParseAPI: improve tail call recognition (#1315) Don't consider a branch that is a self-loop as a potential tail call. --- parseAPI/src/Parser.C | 2 ++ 1 file changed, 2 insertions(+) diff --git a/parseAPI/src/Parser.C b/parseAPI/src/Parser.C index 8095d05796..14fdb2b823 100644 --- a/parseAPI/src/Parser.C +++ b/parseAPI/src/Parser.C @@ -918,9 +918,11 @@ Parser::finalize(Function *f) b->copy_targets(targets); for (auto e : targets) { if (!e->interproc() && (e->type() == INDIRECT || e->type() == DIRECT)) { + if (b->last() != e->trg()->start()) { // if not an instruction that branches to itself e->_type._interproc = true; parsing_printf("from %lx to %lx, marked as tail call (jump at entry), re-finalize\n", b->last(), e->trg()->start()); return false; + } } } } From eba4854fc95b4fd394f7b1de8fd5f0c90036a4cf Mon Sep 17 00:00:00 2001 From: kupsch Date: Mon, 14 Nov 2022 21:53:17 -0600 Subject: [PATCH 139/505] fix Instruction class to allow valid assignment (#1323) * Allow the Instruction class to allow correct assignment semantics by changing a member from a reference to a pointer * The formatter member is a reference (to a singleton) that can not be changed after it is initialized. Assignment to this member wrongly assigns to the previously bound referent singleton and wrongly slices the rhs to the ArchSpecificFormatter base class. The base class has no data members, and since the assignment does not change the type of the object (its vtable), it appears to have no effect. Also a default constructed Instuction object sets the formatter to the x86 formatter even if the host was not x86. * Change Instruction::format to return an error string if the arch is set to Arch_none (default constructed, to prevent nullptr dereference) --- instructionAPI/h/Instruction.h | 3 ++- instructionAPI/src/Instruction.C | 14 ++++++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/instructionAPI/h/Instruction.h b/instructionAPI/h/Instruction.h index 2782c9f1fa..e9298c82d1 100644 --- a/instructionAPI/h/Instruction.h +++ b/instructionAPI/h/Instruction.h @@ -317,7 +317,8 @@ namespace Dyninst Architecture arch_decoded_from; mutable std::list m_Successors; static int numInsnsAllocated; - ArchSpecificFormatter& formatter; + // formatter is a non-owning pointer to a singleton object + ArchSpecificFormatter* formatter; }; } } diff --git a/instructionAPI/src/Instruction.C b/instructionAPI/src/Instruction.C index a22ff3f109..bcc16621bf 100644 --- a/instructionAPI/src/Instruction.C +++ b/instructionAPI/src/Instruction.C @@ -85,7 +85,7 @@ namespace Dyninst size_t size, const unsigned char* raw, Dyninst::Architecture arch) : m_InsnOp(what), m_Valid(true), arch_decoded_from(arch), - formatter(ArchSpecificFormatter::getFormatter(arch)) + formatter(&ArchSpecificFormatter::getFormatter(arch)) { copyRaw(size, raw); @@ -130,7 +130,7 @@ namespace Dyninst } INSTRUCTION_EXPORT Instruction::Instruction() : - m_Valid(false), m_size(0), arch_decoded_from(Arch_none), formatter(ArchSpecificFormatter::getFormatter(Arch_x86_64)) + m_Valid(false), m_size(0), arch_decoded_from(Arch_none), formatter(nullptr) { #if defined(DEBUG_INSN_ALLOCATIONS) numInsnsAllocated++; @@ -451,11 +451,17 @@ namespace Dyninst } INSTRUCTION_EXPORT ArchSpecificFormatter& Instruction::getFormatter() const { - return formatter; + return *formatter; } INSTRUCTION_EXPORT std::string Instruction::format(Address addr) const { + // if Arch_none, this is an error and the formatter is nullptr, + // so return an error string (could also abort or except) + if (arch_decoded_from == Arch_none) { + return "ERROR_NO_ARCH_SET_FOR_INSTRUCTION"; + } + DECODE_OPERANDS(); //remove this once ArchSpecificFormatter is extended for all architectures @@ -518,7 +524,7 @@ namespace Dyninst cout << endl; #endif // defined(DEBUG_READ_WRITE) - return opstr + formatter.getInstructionString(formattedOperands); + return opstr + formatter->getInstructionString(formattedOperands); } INSTRUCTION_EXPORT bool Instruction::allowsFallThrough() const From 5d24b5030044261c91f00cbda5bc046790b22701 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 15 Nov 2022 16:05:57 -0600 Subject: [PATCH 140/505] Ignore unknown pragma warnings when building without OpenMP (#1324) Oddly, these also show up when ENABLE_STATIC_LIBS=OFF and USE_OpenMP=ON. --- cmake/warnings.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index 1b55898ff9..d1d8479c39 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -96,6 +96,11 @@ endif() if(DYNINST_WARNINGS_AS_ERRORS) list(APPEND REQUESTED_WARNING_FLAGS "Werror") message(STATUS "DYNINST_WARNINGS_AS_ERRORS set: treating warnings as errors") + + # If not building with OpenMP or if static libs are enabled, ignore OpenMP pragma warnings + if(NOT USE_OpenMP OR ENABLE_STATIC_LIBS) + list(APPEND REQUESTED_WARNING_FLAGS "Wno-unknown-pragmas") + endif() endif() if(CMAKE_C_COMPILER_ID MATCHES "^(GNU|Clang)$") From 3af05b774b15f98b4de334e686c58ed5992b2b37 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 16 Nov 2022 22:38:58 -0600 Subject: [PATCH 141/505] Fix shadowing of 'filename' member in Elf_X::findDebugFile (#1325) This is an error when DYNINST_WARNINGS_AS_ERRORS=ON and ENABLE_DEBUGINFOD=ON. --- elf/src/Elf_X.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/elf/src/Elf_X.C b/elf/src/Elf_X.C index 25a2bb0bda..6a750dac4b 100644 --- a/elf/src/Elf_X.C +++ b/elf/src/Elf_X.C @@ -1763,15 +1763,15 @@ bool Elf_X::findDebugFile(std::string origfilename, string &output_name, char* & if (client == NULL) return false; - char *filename; + char *path; int fd = debuginfod_find_debuginfo(client, (const unsigned char *)buildid.c_str(), - 0, &filename); + 0, &path); debuginfod_end(client); if (fd >= 0) { - string fname = string(filename); - free(filename); + string fname = string(path); + free(path); close(fd); bool result = loadDebugFileFromDisk(fname, From def4204359d2051958d99e8f3c515dbc9ff3edf0 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 21 Nov 2022 13:46:38 -0600 Subject: [PATCH 142/505] Documentation updates for v12.2.1 patch release (#1328) * Doc updates for v12.2.1 release * Update formatting for cmake/warnings.cmake --- CHANGELOG.md | 21 +++++++++++++++++++++ cmake/shared.cmake | 2 +- cmake/warnings.cmake | 7 ++++--- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecc33820c9..3d13d7b7d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Change Log +## [12.2.1](https://github.com/dyninst/dyninst/tree/v12.2.1) (2022-11-21) +[Full Changelog](https://github.com/dyninst/dyninst/compare/v12.2.0...v12.2.1) + +- Fix shadowing of 'filename' member in Elf_X::findDebugFile ([1325](https://github.com/dyninst/dyninst/issues/1325)) +- Ignore unknown pragma warnings when building without OpenMP ([1324](https://github.com/dyninst/dyninst/issues/1324)) +- fix Instruction class to allow valid assignment ([1323](https://github.com/dyninst/dyninst/issues/1323)) +- ParseAPI: improve tail call recognition ([1315](https://github.com/dyninst/dyninst/issues/1315)) +- Support hash_compare concept from TBB >= 2021.1 ([1316](https://github.com/dyninst/dyninst/issues/1316)) +- Remove unused TBB from parseAPI ([1317](https://github.com/dyninst/dyninst/issues/1317)) +- Use dyn_c_hash_map in DwarfWalker ([1318](https://github.com/dyninst/dyninst/issues/1318)) +- Directly link to common in dynC_API ([1319](https://github.com/dyninst/dyninst/issues/1319)) +- Manually add hex prefix when formatting an Operand ([1313](https://github.com/dyninst/dyninst/issues/1313)) +- Allow assignment conversion without framepointer ([1314](https://github.com/dyninst/dyninst/issues/1314)) +- Fix incorrect format string in Result.h for u48 / s48 / u64 / s64 ([1311](https://github.com/dyninst/dyninst/issues/1311)) +- Do not build dyninstAPI_RT as separate CMake project ([1309](https://github.com/dyninst/dyninst/issues/1309)) +- Fix possible null pointer access in BPatch_module::findFunctionByAddress ([1308](https://github.com/dyninst/dyninst/issues/1308)) +- Search 'elfutils' subdirectory for libdebuginfod/includedir ([1307](https://github.com/dyninst/dyninst/issues/1307)) +- Fix public header deletes ([1301](https://github.com/dyninst/dyninst/issues/1301)) +- fix location list PC range values ([1297](https://github.com/dyninst/dyninst/issues/1297)) +- Docker - use ppa for gcc11 ([1291](https://github.com/dyninst/dyninst/issues/1291)) + ## [12.2.0](https://github.com/dyninst/dyninst/tree/v12.2.0) (2022-07-28) [Full Changelog](https://github.com/dyninst/dyninst/compare/v12.1.0...v12.2.0) diff --git a/cmake/shared.cmake b/cmake/shared.cmake index fe9de4db5b..15045380fe 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,6 +1,6 @@ set(DYNINST_MAJOR_VERSION 12) set(DYNINST_MINOR_VERSION 2) -set(DYNINST_PATCH_VERSION 0) +set(DYNINST_PATCH_VERSION 1) set(SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") set(LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") diff --git a/cmake/warnings.cmake b/cmake/warnings.cmake index d1d8479c39..a104c222d7 100644 --- a/cmake/warnings.cmake +++ b/cmake/warnings.cmake @@ -96,10 +96,11 @@ endif() if(DYNINST_WARNINGS_AS_ERRORS) list(APPEND REQUESTED_WARNING_FLAGS "Werror") message(STATUS "DYNINST_WARNINGS_AS_ERRORS set: treating warnings as errors") - - # If not building with OpenMP or if static libs are enabled, ignore OpenMP pragma warnings + + # If not building with OpenMP or if static libs are enabled, ignore OpenMP pragma + # warnings if(NOT USE_OpenMP OR ENABLE_STATIC_LIBS) - list(APPEND REQUESTED_WARNING_FLAGS "Wno-unknown-pragmas") + list(APPEND REQUESTED_WARNING_FLAGS "Wno-unknown-pragmas") endif() endif() From 3937542bdc773b6f10740e0746e9c4fb7f8e02d6 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 30 Nov 2022 10:10:35 -0600 Subject: [PATCH 143/505] Remove outdated Boost version checks (#1329) * Remove check of BOOST_THREAD_PROVIDES_ONCE_CXX11 This is internally by Boost for all versions we support. * Remove version check in parseAPI/GraphAdapter.C We require at least version 1.70.0 now * Remove version check in proccontrol/PCProcess.h We require at least version 1.70.0 now --- dwarf/src/dwarfFrameParser.C | 2 -- parseAPI/src/GraphAdapter.C | 5 ----- proccontrol/h/PCProcess.h | 4 ---- 3 files changed, 11 deletions(-) diff --git a/dwarf/src/dwarfFrameParser.C b/dwarf/src/dwarfFrameParser.C index afcc32222c..fd75706fac 100644 --- a/dwarf/src/dwarfFrameParser.C +++ b/dwarf/src/dwarfFrameParser.C @@ -70,9 +70,7 @@ DwarfFrameParser::DwarfFrameParser(Dwarf * dbg_, Elf * eh_frame, Architecture ar dbg(dbg_), dbg_eh_frame(eh_frame), arch(arch_), -#ifndef BOOST_THREAD_PROVIDES_ONCE_CXX11 fde_dwarf_once(BOOST_ONCE_INIT), -#endif fde_dwarf_status(dwarf_status_uninitialized) { } diff --git a/parseAPI/src/GraphAdapter.C b/parseAPI/src/GraphAdapter.C index 68d7acb230..69ffe2d9c9 100644 --- a/parseAPI/src/GraphAdapter.C +++ b/parseAPI/src/GraphAdapter.C @@ -4,12 +4,7 @@ #include #include -#if BOOST_VERSION > 104000 #include -#else -#include -#endif - #include #include diff --git a/proccontrol/h/PCProcess.h b/proccontrol/h/PCProcess.h index 3fe43e2e88..be7b3aa7fd 100644 --- a/proccontrol/h/PCProcess.h +++ b/proccontrol/h/PCProcess.h @@ -48,11 +48,7 @@ #include "boost/enable_shared_from_this.hpp" #include "boost/version.hpp" -#if BOOST_VERSION >= 107000 #define CHECKED_DELETE_NOEXCEPT BOOST_NOEXCEPT -#else -#define CHECKED_DELETE_NOEXCEPT -#endif From 42612b456e1958e4823bdb8f3022273804a49fc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Gergely?= Date: Thu, 15 Dec 2022 17:12:59 +0100 Subject: [PATCH 144/505] Lookup functions in the binding table directly (#1337) instead of making multiple redundant copies of it. Copying and making a map out of the table incurs a significant overhead. --- dyninstAPI/src/unix.C | 32 ++++---------------------------- symtabAPI/h/Symtab.h | 1 + symtabAPI/src/Symtab.C | 24 ++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/dyninstAPI/src/unix.C b/dyninstAPI/src/unix.C index 868204d9ad..2dac684c64 100644 --- a/dyninstAPI/src/unix.C +++ b/dyninstAPI/src/unix.C @@ -743,45 +743,21 @@ func_instance *block_instance::callee() { // get the relocation information for this image Symtab *sym = obj()->parse_img()->getObject(); - std::vector fbt; - if (!sym->getFuncBindingTable(fbt)) { - return NULL; - } - - - /** - * Object files and static binaries will not have a function binding table - * because the function binding table holds relocations used by the dynamic - * linker - */ - if (!fbt.size() && !sym->isStaticBinary() && - sym->getObjectType() != obj_RelocatableFile ) - { - fprintf(stderr, "%s[%d]: WARN: zero func bindings\n", FILE__, __LINE__); - } - - std::map pltFuncs; - obj()->parse_img()->getPltFuncs(pltFuncs); - // find the target address in the list of relocationEntries - if (pltFuncs.find(target_addr) != pltFuncs.end()) { + relocationEntry function_binding; + if(sym->findPltEntryByTarget(target_addr, function_binding)) { Address base_addr = obj()->codeBase(); - for (u_int i=0; i < fbt.size(); i++) { - if (fbt[i].target_addr() == target_addr) - { // check to see if this function has been bound yet...if the // PLT entry for this function has been modified by the runtime // linker func_instance *target_pdf = 0; - if (proc()->hasBeenBound(fbt[i], target_pdf, base_addr)) { + if (proc()->hasBeenBound(function_binding, target_pdf, base_addr)) { updateCallTarget(target_pdf); obj()->setCalleeName(this, target_pdf->symTabName()); obj()->setCallee(this, target_pdf); return target_pdf; } - } - } - return callee(pltFuncs[target_addr]); + return callee(function_binding.name()); } else { /* * Sometimes, the PLT address and the CFG target aren't the same diff --git a/symtabAPI/h/Symtab.h b/symtabAPI/h/Symtab.h index 4a06cadad8..4b5d4c88e5 100644 --- a/symtabAPI/h/Symtab.h +++ b/symtabAPI/h/Symtab.h @@ -219,6 +219,7 @@ class SYMTAB_EXPORT Symtab : public LookupInterface, // Relocation entries bool getFuncBindingTable(std::vector &fbt) const; + bool findPltEntryByTarget(Address target_address, relocationEntry &result) const; bool updateFuncBindingTable(Offset stub_addr, Offset plt_addr); /************************************** diff --git a/symtabAPI/src/Symtab.C b/symtabAPI/src/Symtab.C index 2308b5276e..2222394aeb 100644 --- a/symtabAPI/src/Symtab.C +++ b/symtabAPI/src/Symtab.C @@ -1548,6 +1548,30 @@ SYMTAB_EXPORT bool Symtab::getFuncBindingTable(std::vector &fbt return true; } +SYMTAB_EXPORT bool Symtab::findPltEntryByTarget(const Address target_address, relocationEntry &result) const +{ + /** + * Object files and static binaries will not have a function binding table + * because the function binding table holds relocations used by the dynamic + * linker + */ + if(relocation_table_.empty() && !isStaticBinary() && + getObjectType() != obj_RelocatableFile) + { + fprintf(stderr, "%s[%d]: WARN: zero func bindings\n", FILE__, __LINE__); + } + + auto it = std::find_if(relocation_table_.cbegin(), relocation_table_.cend(), + [=](const relocationEntry& entry) { + return entry.target_addr() == target_address; + }); + if(it == relocation_table_.cend()) + return false; + + result = *it; + return true; +} + SYMTAB_EXPORT bool Symtab::updateFuncBindingTable(Offset stub_addr, Offset plt_addr) { int stub_idx = -1, plt_idx = -1; From c98df5b73ef51aa690c90373965861c9e791e75c Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Mon, 19 Dec 2022 17:16:38 -0600 Subject: [PATCH 145/505] Remove dead implementation of IA_power::isLinkerStub (#1342) Disabled by a382e03ff in 2012. --- parseAPI/src/IA_power.C | 382 ---------------------------------------- 1 file changed, 382 deletions(-) diff --git a/parseAPI/src/IA_power.C b/parseAPI/src/IA_power.C index db3eed06a3..5979ab6371 100644 --- a/parseAPI/src/IA_power.C +++ b/parseAPI/src/IA_power.C @@ -437,394 +437,12 @@ bool IA_power::isIATcall(std::string &) const return false; } -typedef enum { - STUB_UNKNOWN, - STUB_LONG_BRANCH, - STUB_TOC_BRANCH, - STUB_PLT_CALL -} linker_stub_t; - -linker_stub_t checkLinkerStub(void *insn_buf, Offset &off) -{ -#if defined(ppc64_linux) - const unsigned int B_UNCOND = 0x48000000; - const unsigned int ADDIS_R12_R12 = 0x3d8c0000; - const unsigned int ADDIS_R12_R2 = 0x3d820000; - const unsigned int ADDIS_R2_R2 = 0x3c420000; - const unsigned int ADDI_R12_R12 = 0x398c0000; - const unsigned int ADDI_R2_R2 = 0x38420000; - const unsigned int STD_R2_40R1 = 0xf8410028; - const unsigned int LD_R2_40R1 = 0xe8410028; - const unsigned int LD_R2_0R12 = 0xe84c0000; - const unsigned int LD_R11_0R12 = 0xe96c0000; - const unsigned int LD_R11_0R2 = 0xe9620000; - const unsigned int MTCTR_R11 = 0x7d6903a6; - const unsigned int BCTR = 0x4e800420; - - /* - * Linker stubs seen from GNU's binutils. - * (see the following functions in binutils' bfd/elf64-ppc.c: - * ppc_build_one_stub() - * build_plt_stub() - * build_tls_get_addr_stub() - * - * We could be clever and create some sort of state machine that will - * determine the correct signature by only reading each instruction - * once. However, I assume this will also make the code harder to - * maintain, and so I've gone the dumb route. We can re-code this - * section if it's determined to be a performance bottleneck. - * - * Add stub signatures as we see more. - */ - - // ---------------------------------------------- - // ppc_stub_plt_call: - // - - // binutils >= 2.18 PLT stub signatures look like this: - // if (PPC_HA (off) != 0) - // ADDIS_R12_R2 | PPC_HA (off) - // STD_R2_40R1 - // LD_R11_0R12 | PPC_LO (off) - // ADDI_R12_R12 | PPC_LO (off) if (PPC_HA (off + 16) != PPC_HA (off)) - // MTCTR_R11 - // LD_R2_0R12 | PPC_LO (off + 8) - // LD_R11_0R12 | PPC_LO (off + 16) - // BCTR - // else - // STD_R2_40R1 - // LD_R11_0R2 | PPC_LO (off) - // ADDI_R2_R2 | PPC_LO (off) - // MTCTR_R11 - // LD_R11_0R2 | PPC_LO (off + 16) - // LD_R2_0R2 | PPC_LO (off + 8) - // BCTR - // endif - // - // This results in three possible stubs: - - instruction *insn = static_cast(insn_buf); - if ( (insn[0].asInt() & 0xffff0000) == ADDIS_R12_R2 - && insn[1].asInt() == STD_R2_40R1 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[2].asInt() & 0xffff0000) == ADDI_R12_R12 - && insn[4].asInt() == MTCTR_R11 - && (insn[3].asInt() & 0xffff0000) == LD_R2_0R12 - && (insn[5].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[6].asInt() == BCTR) - { - off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - return STUB_PLT_CALL; - } - - if ( (insn[0].asInt() & 0xffff0000) == ADDIS_R12_R2 - && insn[1].asInt() == STD_R2_40R1 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[4].asInt() == MTCTR_R11 - && (insn[3].asInt() & 0xffff0000) == LD_R2_0R12 - && (insn[5].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[6].asInt() == BCTR) - { - off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - return STUB_PLT_CALL; - } - - if ( insn[1].asInt() == STD_R2_40R1 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R2 - && (insn[2].asInt() & 0xffff0000) == ADDI_R2_R2 - && insn[4].asInt() == MTCTR_R11 - && (insn[3].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[5].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[6].asInt() == BCTR) - { - off = DFORM_SI(insn[1]); - return STUB_PLT_CALL; - } - - // binutils from 1.15 -> 2.18 PLT stub signatures look like this: - // ADDIS_R12_R2 | PPC_HA (off) - // STD_R2_40R1 - // LD_R11_0R12 | PPC_LO (off) - // ADDIS_R12_R12 | 1 if (PPC_HA (off + 8) != PPC_HA (off)) - // LD_R2_0R12 | PPC_LO (off) - // ADDIS_R12_R12 | 1 if (PPC_HA (off + 16) != PPC_HA (off)) - // MTCTR_R11 - // LD_R11_0R12 | PPC_LO (off) - // BCTR - // - // This results in three possible stubs: - - if ( (insn[0].asInt() & 0xffff0000) == ADDIS_R12_R2 - && insn[1].asInt() == STD_R2_40R1 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[3].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[4].asInt() == MTCTR_R11 - && (insn[5].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[6].asInt() == BCTR) - { - off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - return STUB_PLT_CALL; - } - - if ( (insn[0].asInt() & 0xffff0000) == ADDIS_R12_R2 - && insn[1].asInt() == STD_R2_40R1 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[3].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[4].asInt() == (ADDIS_R12_R12 | 1) - && insn[5].asInt() == MTCTR_R11 - && (insn[6].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[7].asInt() == BCTR) - { - off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - return STUB_PLT_CALL; - } - - if ( (insn[0].asInt() & 0xffff0000) == ADDIS_R12_R2 - && insn[1].asInt() == STD_R2_40R1 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[3].asInt() == (ADDIS_R12_R12 | 1) - && (insn[4].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[5].asInt() == (ADDIS_R12_R12 | 1) - && insn[6].asInt() == MTCTR_R11 - && (insn[7].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[8].asInt() == BCTR) - { - off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - return STUB_PLT_CALL; - } - - // binutils < 1.15 PLT stub signatures look like this: - // LD_R2_40R1 if (glink) - // ADDIS_R12_R2 | PPC_HA (off) - // STD_R2_40R1 if (!glink) - // LD_R11_0R12 | PPC_LO (off) - // ADDIS_R12_R12 | 1 if (PPC_HA (off + 8) != PPC_HA (off)) - // LD_R2_0R12 | PPC_LO (off) - // ADDIS_R12_R12 | 1 if (PPC_HA (off + 16) != PPC_HA (off)) - // MTCTR_R11 - // LD_R11_0R12 | PPC_LO (off) - // BCTR - // - // The non-glink case is identical to the cases above, so we need only - // handle the three glink cases: - - /* Ugg. The toc register is pulled off the stack for these cases. - This is most likely the toc for the callee, but we don't know - who the callee is yet. - */ - - if ( insn[0].asInt() == LD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDIS_R12_R2 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[3].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[4].asInt() == MTCTR_R11 - && (insn[5].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[6].asInt() == BCTR) - { - fprintf(stderr, "WARNING: Pre-binutils 1.15 linker detected. PLT call stubs may not be handled properly.\n"); - return STUB_UNKNOWN; - //off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - //return STUB_PLT_CALL; - } - - if ( insn[0].asInt() == LD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDIS_R12_R2 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[3].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[4].asInt() == (ADDIS_R12_R12 | 1) - && insn[5].asInt() == MTCTR_R11 - && (insn[6].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[7].asInt() == BCTR) - { - fprintf(stderr, "WARNING: Pre-binutils 1.15 linker detected. PLT call stubs may not be handled properly.\n"); - return STUB_UNKNOWN; - //off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - //return STUB_PLT_CALL; - } - - if ( insn[0].asInt() == LD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDIS_R12_R2 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[3].asInt() == (ADDIS_R12_R12 | 1) - && (insn[4].asInt() & 0xffff0000) == LD_R2_0R12 - && insn[5].asInt() == (ADDIS_R12_R12 | 1) - && insn[6].asInt() == MTCTR_R11 - && (insn[7].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[8].asInt() == BCTR) - { - fprintf(stderr, "WARNING: Pre-binutils 1.15 linker detected. PLT call stubs may not be handled properly.\n"); - return STUB_UNKNOWN; - //off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[2]); - //return STUB_PLT_CALL; - } - - // ---------------------------------------------- - // ppc_stub_long_branch: - // ppc_stub_long_branch_r2off: - if ( (insn[0].asInt() & 0xfc000000) == B_UNCOND) - { - off = IFORM_LI(insn[0]) << 2; - return STUB_LONG_BRANCH; - } - - if ( insn[0].asInt() == STD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDIS_R2_R2 - && (insn[2].asInt() & 0xffff0000) == ADDI_R2_R2 - && (insn[3].asInt() & 0xfc000003) == B_UNCOND) - { - off = (3 * 4) + (IFORM_LI(insn[3]) << 2); - return STUB_LONG_BRANCH; - } - - if ( insn[0].asInt() == STD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDI_R2_R2 - && (insn[2].asInt() & 0xfc000003) == B_UNCOND) - { - off = (2 * 4) + (IFORM_LI(insn[2]) << 2); - return STUB_LONG_BRANCH; - } - - // ---------------------------------------------- - // ppc_stub_plt_branch: - // - if ( (insn[0].asInt() & 0xffff0000) == ADDIS_R12_R2 - && (insn[1].asInt() & 0xffff0000) == LD_R11_0R12 - && insn[2].asInt() == MTCTR_R11 - && insn[3].asInt() == BCTR) - { - off = (DFORM_SI(insn[0]) << 16) + DFORM_SI(insn[1]); - return STUB_TOC_BRANCH; - } - - if ( (insn[0].asInt() & 0xffff0000) == LD_R11_0R2 - && insn[1].asInt() == MTCTR_R11 - && insn[2].asInt() == BCTR) - { - off = DFORM_SI(insn[0]); - return STUB_TOC_BRANCH; - } - - // ---------------------------------------------- - // ppc_stub_plt_branch_r2off: - // - - // With offset > 16 bits && r2offset > 16 bits - if ( insn[0].asInt() == STD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDIS_R12_R2 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[3].asInt() & 0xffff0000) == ADDIS_R2_R2 - && (insn[4].asInt() & 0xffff0000) == ADDI_R2_R2 - && insn[5].asInt() == MTCTR_R11 - && insn[6].asInt() == BCTR) - { - off = (DFORM_SI(insn[1]) << 16) + DFORM_SI(insn[2]); - return STUB_TOC_BRANCH; - } - - // With offset > 16 bits && r2offset <= 16 bits - if ( insn[0].asInt() == STD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == ADDIS_R12_R2 - && (insn[2].asInt() & 0xffff0000) == LD_R11_0R12 - && (insn[3].asInt() & 0xffff0000) == ADDI_R2_R2 - && insn[4].asInt() == MTCTR_R11 - && insn[5].asInt() == BCTR) - { - off = (DFORM_SI(insn[1]) << 16) + DFORM_SI(insn[2]); - return STUB_TOC_BRANCH; - } - - // With offset <= 16 bits && r2offset > 16 bits - if ( insn[0].asInt() == STD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == LD_R11_0R2 - && (insn[2].asInt() & 0xffff0000) == ADDIS_R2_R2 - && (insn[3].asInt() & 0xffff0000) == ADDI_R2_R2 - && insn[4].asInt() == MTCTR_R11 - && insn[5].asInt() == BCTR) - { - off = DFORM_SI(insn[1]); - return STUB_TOC_BRANCH; - } - - // With offset <= 16 bits && r2offset <= 16 bits - if ( insn[0].asInt() == STD_R2_40R1 - && (insn[1].asInt() & 0xffff0000) == LD_R11_0R2 - && (insn[2].asInt() & 0xffff0000) == ADDI_R2_R2 - && insn[3].asInt() == MTCTR_R11 - && insn[4].asInt() == BCTR) - { - off = DFORM_SI(insn[1]); - return STUB_TOC_BRANCH; - } -#else - (void)insn_buf; -#endif - - off = 0; - return STUB_UNKNOWN; -} - bool IA_power::isLinkerStub() const { // Disabling this code because it ends with an // incorrect CFG. return false; - - if (validLinkerStubState) - return cachedLinkerStubState; - - if (!validCFT) - return false; - - if (!isCall()) { - cachedLinkerStubState = false; - validLinkerStubState = true; - return cachedLinkerStubState; - } - - if (!cachedCFT.first) return false; - - void *insn_buf = _isrc->getPtrToInstruction(cachedCFT.second); - if (!insn_buf) - return false; - - Offset off; - linker_stub_t stub_type = checkLinkerStub(insn_buf, off); - - switch (stub_type) { - case STUB_UNKNOWN: - // It's not a linker stub (that we know of). Allow processing to - // continue unmodified, probably leading to the eventual creation - // of a targXXXXX function. - break; - - case STUB_LONG_BRANCH: - cachedCFT.second += off; - break; - - case STUB_TOC_BRANCH: - cachedCFT.second += off; - assert(0 && "STUB_TOC_BRANCH not implemented yet."); - - // Although tempting, we cannot just read the word directly from the - // mutatee, and find the symbol that matches. There may be no - // child process to read from. - // - // In theory, we can use the relocations to determine the final - // address/symbol. But, I can't get binutils to actually generate - // this kind of stub. Let's deal with this once we find a binary - // that uses it. - break; - - case STUB_PLT_CALL: - cachedCFT.second = _obj->cs()->getTOC(current) + off; - break; - } - - cachedLinkerStubState = (stub_type != STUB_UNKNOWN); - validLinkerStubState = true; - - return cachedLinkerStubState; } AST::Ptr PPC_BLR_Visitor::visit(AST *a) { From 2e3bf92eedf575c780e4381ae810a050ee404f03 Mon Sep 17 00:00:00 2001 From: kupsch Date: Thu, 5 Jan 2023 13:13:14 -0600 Subject: [PATCH 146/505] add missing include file (#1344) - add missing #include On more platforms and library combinations is included via some other header, but there is combination where this is not true --- dataflowAPI/src/AbslocInterface.C | 1 + 1 file changed, 1 insertion(+) diff --git a/dataflowAPI/src/AbslocInterface.C b/dataflowAPI/src/AbslocInterface.C index 9d7ad000c2..582e640049 100644 --- a/dataflowAPI/src/AbslocInterface.C +++ b/dataflowAPI/src/AbslocInterface.C @@ -29,6 +29,7 @@ */ +#include #include "Absloc.h" #include "AbslocInterface.h" From 3ac13c33c804a9afa4bf57d561bbbc7a4c96ae5a Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 10 Jan 2023 16:20:09 -0600 Subject: [PATCH 147/505] Refactor common/src/Types.h (#1351) * Remove double128_t It's never used * Replace custom limit macros with the ones from stdint * Remove custom fixed-width types and limit macros We require C++11, so just use the [c]stdint headers. * Use correct signedness for Address comparison --- common/src/Types.h | 94 ++----------------------------------------- common/src/arch-x86.h | 4 +- 2 files changed, 5 insertions(+), 93 deletions(-) diff --git a/common/src/Types.h b/common/src/Types.h index 20dbe90d72..5b51c5da6b 100644 --- a/common/src/Types.h +++ b/common/src/Types.h @@ -36,98 +36,10 @@ #if !defined(_Types_h_) #define _Types_h_ -/* Sets up 64 and 32 bit - types: - int64_t uint64_t int32_t uint32_t - constant macros: - I64_C(x) UI64_C(x) - limits: - I64_MAX I64_MIN UI64_MAX - I32_MAX I32_MIN UI32_MAX - - note: needs to be included before anything that includes inttypes.h - (eg. stdio on some systems) -*/ - -/* Set up the 32 AND 64 BIT TYPES ===================================== */ -/* - --- inttypes.h --- - int32_t uint32_t int64_t uint64_t 32B lmts 64Blmts 64BlitMacros# -Linux yes yes yes yes yes yes yes -FreeBSD yes yes yes yes yes yes yes -WindowsNT nonexistant - - # we rename all of the 64 bit literal macros to our shortened name -*/ - -#if defined(os_windows) - typedef signed __int64 int64_t; - typedef signed __int32 int32_t; - typedef signed __int16 int16_t; - typedef signed __int8 int8_t; - typedef unsigned __int64 uint64_t; - typedef unsigned __int32 uint32_t; - typedef unsigned __int16 uint16_t; - typedef unsigned __int8 uint8_t; - -#elif defined(os_linux) -#if !defined(__STDC_CONSTANT_MACROS) -#define __STDC_CONSTANT_MACROS -#endif -#if !defined(__STDC_LIMIT_MACROS) -#define __STDC_LIMIT_MACROS -#endif -#include -#if defined(arch_x86_64) || defined(arch_64bit) -#define TYPE64BIT -#endif -typedef long double double128_t; - -#elif defined(os_freebsd) -#if !defined(__STDC_CONSTANT_MACROS) -#define __STDC_CONSTANT_MACROS -#endif -#if !defined(__STDC_LIMIT_MACROS) -#define __STDC_LIMIT_MACROS -#endif -#include -typedef long double double128_t; - -/* FreeBSD doesn't define this */ -typedef int64_t off64_t; - +#if defined __cplusplus +# include #else -#error Unknown architecture -#endif - - -/* Set up the 64 BIT LITERAL MACROS =================================== */ -#if defined(os_windows) - /* nt ----------------------------- */ -#define I64_C(x) (x##i64) -#define UI64_C(x) (x##ui64) -#else /* linux, freebsd ----------------- */ -#define I64_C(x) INT64_C(x) -#define UI64_C(x) UINT64_C(x) -#endif - -/* Set up the 32 and 64 BIT LIMITS for those not already set up ======= */ -#if defined(os_windows) - /* nt ----------------------------- */ -#include -#define I64_MAX _I64_MAX -#define UI64_MAX _UI64_MAX -#define I64_MIN _I64_MIN -#define I32_MAX _I32_MAX -#define I32_MIN _I32_MIN -#define UI32_MAX _UI32_MAX -#else /* linux, freebsd ----------------- */ -#define I64_MAX INT64_MAX -#define UI64_MAX UINT64_MAX -#define I64_MIN INT64_MIN -#define I32_MAX INT32_MAX -#define I32_MIN INT32_MIN -#define UI32_MAX UINT32_MAX +# include #endif /* diff --git a/common/src/arch-x86.h b/common/src/arch-x86.h index e78f0844aa..cf58611ad6 100644 --- a/common/src/arch-x86.h +++ b/common/src/arch-x86.h @@ -1159,13 +1159,13 @@ inline bool is_disp16(long disp) { } inline bool is_disp32(long disp) { - return (disp <= I32_MAX && disp >= I32_MIN); + return (disp <= INT32_MAX && disp >= INT32_MIN); } inline bool is_disp32(Address a1, Address a2) { return is_disp32(a2 - (a1 + JUMP_REL32_SZ)); } inline bool is_addr32(Address addr) { - return (addr < UI32_MAX); + return (addr < UINT32_MAX); } COMMON_EXPORT void decode_SIB(unsigned sib, unsigned& scale, From 51a78a436b5494ffa11be1dc73d89792c313577d Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 25 Jan 2023 16:12:58 -0600 Subject: [PATCH 148/505] Remove special global ctor/dtor search in ppc for static binaries (#1353) Neither of the other platforms searches through .init to try to find a global constructor. Moreover, the gmon_start function has been removed in the latest glibc's. --- dyninstAPI/src/parse-power.C | 204 +---------------------------------- 1 file changed, 2 insertions(+), 202 deletions(-) diff --git a/dyninstAPI/src/parse-power.C b/dyninstAPI/src/parse-power.C index 96f7a64bfc..27f57bfa3e 100644 --- a/dyninstAPI/src/parse-power.C +++ b/dyninstAPI/src/parse-power.C @@ -407,110 +407,7 @@ func_instance *mapped_object::findGlobalConstructorFunc(const std::string &ctorH return ctorFuncs->at(0); } - /* If the symbol isn't found, try looking for it in a call instruction in - * the .init section - * - * On Linux, the instruction sequence is: - * ... - * some instructions - * ... - * call call_gmon_start - * call frame_dummy - * call ctor_handler - * - * On FreeBSD, the instruction sequence is: - * ... - * some instructions - * ... - * call frame_dummy - * call ctor_handler - */ - Symtab *linkedFile = parse_img()->getObject(); - Region *initRegion = NULL; - if( !linkedFile->findRegion(initRegion, ".init") ) { - vector symFuncs; - if( linkedFile->findFunctionsByName(symFuncs, "_init") ) { - initRegion = symFuncs[0]->getRegion(); - }else{ - logLine("failed to locate .init Region or _init function\n"); - return NULL; - } - } - - if( initRegion == NULL ) { - logLine("failed to locate .init Region or _init function\n"); - return NULL; - } - - // Search for last of a fixed number of calls -#if defined(os_freebsd) - const unsigned CTOR_NUM_CALLS = 2; -#else - const unsigned CTOR_NUM_CALLS = 3; -#endif - - Address ctorAddress = 0; - unsigned bytesSeen = 0; - unsigned numCalls = 0; - const unsigned char *p = reinterpret_cast(initRegion->getPtrToRawData()); - - InstructionDecoder decoder(p, initRegion->getDiskSize(), - parse_img()->codeObject()->cs()->getArch()); - - Instruction curInsn = decoder.decode(); - while(numCalls < CTOR_NUM_CALLS && curInsn.isValid() && - bytesSeen < initRegion->getDiskSize()) - { - InsnCategory category = curInsn.getCategory(); - if( category == c_CallInsn ) { - numCalls++; - } - if( numCalls < CTOR_NUM_CALLS ) { - bytesSeen += curInsn.size(); - curInsn = decoder.decode(); - } - } - - if( numCalls != CTOR_NUM_CALLS ) { - logLine("heuristic for finding global constructor function failed\n"); - return NULL; - } - - Address callAddress = initRegion->getMemOffset() + bytesSeen; - - RegisterAST thePC = RegisterAST( - Dyninst::MachRegister::getPC(parse_img()->codeObject()->cs()->getArch())); - - Expression::Ptr callTarget = curInsn.getControlFlowTarget(); - if( !callTarget.get() ) { - logLine("failed to find global constructor function\n"); - return NULL; - } - callTarget->bind(&thePC, Result(s64, callAddress)); - - Result actualTarget = callTarget->eval(); - if( actualTarget.defined ) { - ctorAddress = actualTarget.convert

    (); - }else{ - logLine("failed to find global constructor function\n"); - return NULL; - } - - if( !ctorAddress || !parse_img()->codeObject()->cs()->isValidAddress(ctorAddress) ) { - logLine("invalid address for global constructor function\n"); - return NULL; - } - - func_instance *ret; - if( (ret = findFuncByEntry(ctorAddress)) == NULL ) { - logLine("unable to create representation for global constructor function\n"); - return NULL; - } - - inst_printf("%s[%d]: set global constructor address to 0x%lx\n", FILE__, __LINE__, - ctorAddress); - - return ret; + return NULL; } func_instance *mapped_object::findGlobalDestructorFunc(const std::string &dtorHandler) { @@ -520,103 +417,6 @@ func_instance *mapped_object::findGlobalDestructorFunc(const std::string &dtorHa if( ctorFuncs != NULL ) { return ctorFuncs->at(0); } - - /* - * If the symbol isn't found, try looking for it in a call in the - * .fini section. It is the last call in .fini. - * - * The pattern is: - * - * _fini: - * - * ... some code ... - * - * call dtor_handler - * - * ... prologue ... - */ - Symtab *linkedFile = parse_img()->getObject(); - Region *finiRegion = NULL; - if( !linkedFile->findRegion(finiRegion, ".fini") ) { - vector symFuncs; - if( linkedFile->findFunctionsByName(symFuncs, "_fini") ) { - finiRegion = symFuncs[0]->getRegion(); - }else{ - logLine("failed to locate .fini Region or _fini function\n"); - return NULL; - } - } - - if( finiRegion == NULL ) { - logLine("failed to locate .fini Region or _fini function\n"); - return NULL; - } - - // Search for last call in the function - Address dtorAddress = 0; - unsigned bytesSeen = 0; - const unsigned char *p = reinterpret_cast(finiRegion->getPtrToRawData()); - - InstructionDecoder decoder(p, finiRegion->getDiskSize(), - parse_img()->codeObject()->cs()->getArch()); - - Instruction lastCall; - Instruction curInsn = decoder.decode(); - bool find = false; - - while(curInsn.isValid() && - bytesSeen < finiRegion->getDiskSize()) - { - InsnCategory category = curInsn.getCategory(); - if( category == c_CallInsn ) { - find = true; - lastCall = curInsn; - break; - } - - bytesSeen += curInsn.size(); - curInsn = decoder.decode(); - } - - if( !find || !lastCall.isValid() ) { - logLine("heuristic for finding global destructor function failed\n"); - return NULL; - } - - Address callAddress = finiRegion->getMemOffset() + bytesSeen; - - RegisterAST thePC = RegisterAST( - Dyninst::MachRegister::getPC(parse_img()->codeObject()->cs()->getArch())); - - Expression::Ptr callTarget = lastCall.getControlFlowTarget(); - if( !callTarget.get() ) { - logLine("failed to find global destructor function\n"); - return NULL; - } - callTarget->bind(&thePC, Result(s64, callAddress)); - - Result actualTarget = callTarget->eval(); - if( actualTarget.defined ) { - dtorAddress = actualTarget.convert
    (); - }else{ - logLine("failed to find global destructor function\n"); - return NULL; - } - - if( !dtorAddress || !parse_img()->codeObject()->cs()->isValidAddress(dtorAddress) ) { - logLine("invalid address for global destructor function\n"); - return NULL; - } - - // A targ stub should have been created at the address - func_instance *ret = NULL; - if( (ret = findFuncByEntry(dtorAddress)) == NULL ) { - logLine("unable to find global destructor function\n"); - return NULL; - } - inst_printf("%s[%d]: set global destructor address to 0x%lx\n", FILE__, __LINE__, - dtorAddress); - - return ret; + return NULL; } From 0232fb63b9b7850022adbd104ff7e89d9e6535e2 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Fri, 27 Jan 2023 12:46:21 -0600 Subject: [PATCH 149/505] Use instrumentation logging in baseTramp::guarded (#1354) --- dyninstAPI/src/baseTramp.C | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dyninstAPI/src/baseTramp.C b/dyninstAPI/src/baseTramp.C index 805c1bff0c..1fac9f195f 100644 --- a/dyninstAPI/src/baseTramp.C +++ b/dyninstAPI/src/baseTramp.C @@ -526,8 +526,9 @@ bool baseTramp::guarded() const { } if (recursive && guarded) { - cerr << "Warning: mix of recursive and guarded snippets @ " << point_ - << ", picking guarded" << endl; + inst_printf( + "Warning: mix of recursive and guarded snippets @ %p, picking guarded \n", + static_cast(point_)); return true; } if (guarded) return true; From 56805be361aaaed82d53cd9e5c795e09cc2467da Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 31 Jan 2023 13:10:36 -0600 Subject: [PATCH 150/505] BPatch_snippet::generateArrayRef - fix possible null pointer access (#1356) --- dyninstAPI/src/BPatch_snippet.C | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/dyninstAPI/src/BPatch_snippet.C b/dyninstAPI/src/BPatch_snippet.C index dac9e4675e..adce127fdb 100644 --- a/dyninstAPI/src/BPatch_snippet.C +++ b/dyninstAPI/src/BPatch_snippet.C @@ -183,25 +183,25 @@ AstNodePtr generateArrayRef(const BPatch_snippet &lOperand, // We have to be a little forgiving of the - typeArray *arrayType = lOperand.ast_wrapper->getType()->getSymtabType(Type::share)->getArrayType(); - if (!arrayType) + if (lOperand.ast_wrapper->getType() == NULL) { - if (lOperand.ast_wrapper->getType() == NULL) - { - BPatch_reportError(BPatchSerious, 109, - "array reference has no type information"); - } - else - { - fprintf(stderr, "%s[%d]: error here: type is %s\n", FILE__, __LINE__, - lOperand.ast_wrapper->getType()->getName()); - BPatch_reportError(BPatchSerious, 109, - "array reference has array reference to non-array type"); - } + BPatch_reportError(BPatchSerious, 109, + "array reference has no type information"); assert(0); return AstNodePtr(); } + typeArray *arrayType = lOperand.ast_wrapper->getType()->getSymtabType(Type::share)->getArrayType(); + if (!arrayType) + { + fprintf(stderr, "%s[%d]: error here: type is %s\n", FILE__, __LINE__, + lOperand.ast_wrapper->getType()->getName()); + BPatch_reportError(BPatchSerious, 109, + "array reference has array reference to non-array type"); + assert(0); + return AstNodePtr(); + } + auto elementType = arrayType->getBaseType(Type::share); assert(elementType); long int elementSize = elementType->getSize(); From d7c9f9fa593bd62ce9a7971b24ccd4fd54aa5def Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Tue, 31 Jan 2023 14:05:25 -0600 Subject: [PATCH 151/505] Remove AObject::pickLanguage (#1358) This was only used by the STABs parsing code. It should have been removed by 5e142eff. Language detection is handled by `void Object::getModuleLanguageInfo` and requires DWARF (it does nothing on non-ELF binaries). --- symtabAPI/src/Object.C | 56 ------------------------------------------ symtabAPI/src/Object.h | 3 --- 2 files changed, 59 deletions(-) diff --git a/symtabAPI/src/Object.C b/symtabAPI/src/Object.C index 7fb064ce2c..ee8171d306 100644 --- a/symtabAPI/src/Object.C +++ b/symtabAPI/src/Object.C @@ -393,62 +393,6 @@ SYMTAB_EXPORT AObject::AObject(MappedFile *mf_, void (*err_func)(const char *), { } -// a helper routine that selects a language based on information from the symtab -supportedLanguages AObject::pickLanguage(string &working_module, char *working_options, - supportedLanguages working_lang) -{ - supportedLanguages lang = lang_Unknown; - - // (2) -- check suffixes -- try to keep most common suffixes near the top of the checklist - string::size_type len = working_module.length(); - if((len>2) && (working_module.substr(len-2,2) == string(".c"))) lang = lang_C; - else if ((len>2) && (working_module.substr(len-2,2) == string(".C"))) lang = lang_CPlusPlus; - else if ((len>4) && (working_module.substr(len-4,4) == string(".cpp"))) lang = lang_CPlusPlus; - else if ((len>2) && (working_module.substr(len-2,2) == string(".F"))) lang = lang_Fortran; - else if ((len>2) && (working_module.substr(len-2,2) == string(".f"))) lang = lang_Fortran; - else if ((len>3) && (working_module.substr(len-3,3) == string(".cc"))) lang = lang_C; - else if ((len>2) && (working_module.substr(len-2,2) == string(".a"))) lang = lang_Assembly; // is this right? - else if ((len>2) && (working_module.substr(len-2,2) == string(".S"))) lang = lang_Assembly; - else if ((len>2) && (working_module.substr(len-2,2) == string(".s"))) lang = lang_Assembly; - else - { - //(3) -- try to use options string -- if we have 'em - if (working_options) - { - // NOTE: a binary is labeled "gcc2_compiled" even if compiled w/g77 -- thus this is - // quite inaccurate to make such assumptions - if (strstr(working_options, "gcc")) - lang = lang_C; - else if (strstr(working_options, "g++")) - lang = lang_CPlusPlus; - } - } - // This next section tries to determine the version of the debug info generator for a - // Sun fortran compiler. Some leave the underscores on names in the debug info, and some - // have the "pretty" names, we need to detect this in order to properly read the debug. - if (working_lang == lang_Fortran) - { - if (working_options) - { - char *dbg_gen = NULL; - //cerr << FILE__ << __LINE__ << ": OPT: " << working_options << endl; - if (NULL != (dbg_gen = strstr(working_options, "DBG_GEN="))) - { - //cerr << __FILE__ << __LINE__ << ": OPT: " << dbg_gen << endl; - // Sun fortran compiler (probably), need to examine version - char *dbg_gen_ver_maj = dbg_gen + strlen("DBG_GEN="); - //cerr << __FILE__ << __LINE__ << ": OPT: " << dbg_gen_ver_maj << endl; - char *next_dot = strchr(dbg_gen_ver_maj, '.'); - if (NULL != next_dot) - { - *next_dot = '\0'; //terminate major version number string - } - } - } - } - return lang; -} - SymbolIter::SymbolIter( Object & obj ) : symbols(obj.getAllSymbols()), currentPositionInVector(0) { diff --git a/symtabAPI/src/Object.h b/symtabAPI/src/Object.h index 1c14da69ba..c81b677ee6 100644 --- a/symtabAPI/src/Object.h +++ b/symtabAPI/src/Object.h @@ -98,9 +98,6 @@ class AObject { SYMTAB_EXPORT bool getAllExceptions(std::vector&excpBlocks) const; SYMTAB_EXPORT std::vector getAllRegions() const; - SYMTAB_EXPORT supportedLanguages pickLanguage(std::string &working_module, char *working_options, - supportedLanguages working_lang); - SYMTAB_EXPORT Offset loader_off() const; SYMTAB_EXPORT unsigned loader_len() const; SYMTAB_EXPORT int getAddressWidth() const; From a5632893defd9abbaeb3a1005698bcd9bfda3b79 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 1 Feb 2023 10:35:57 -0600 Subject: [PATCH 152/505] Update detection of DWARF languages (#1357) * Remove macro checks for C and C++ These values are present in elfutils for the versions we now require (>=0.186 right now). * Add c++ 14 * Add Fortran 03,08 --- symtabAPI/src/Object-elf.C | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/symtabAPI/src/Object-elf.C b/symtabAPI/src/Object-elf.C index 896095f9cf..9eb7a1dc89 100644 --- a/symtabAPI/src/Object-elf.C +++ b/symtabAPI/src/Object-elf.C @@ -3239,23 +3239,20 @@ void Object::getModuleLanguageInfo(dyn_hash_map *mod case DW_LANG_C: case DW_LANG_C89: case DW_LANG_C99: -#ifdef DW_LANG_C11 case DW_LANG_C11: -#endif (*mod_langs)[working_module] = lang_C; break; case DW_LANG_C_plus_plus: -#ifdef DW_LANG_C_plus_plus_03 case DW_LANG_C_plus_plus_03: -#endif -#ifdef DW_LANG_C_plus_plus_11 case DW_LANG_C_plus_plus_11: -#endif + case DW_LANG_C_plus_plus_14: (*mod_langs)[working_module] = lang_CPlusPlus; break; case DW_LANG_Fortran77: case DW_LANG_Fortran90: case DW_LANG_Fortran95: + case DW_LANG_Fortran03: + case DW_LANG_Fortran08: (*mod_langs)[working_module] = lang_Fortran; break; default: From ac658dea96f755e21b6256f74007157be54e745e Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 9 Feb 2023 10:05:11 -0600 Subject: [PATCH 153/505] Replace DwarfWalker::findString with DwarfWalker::find_call_file (#1360) The original function was only ever used to find DW_AT_call_file. During the transition to libdw, the added check for that attribute made the rest of the string processing useless. Moreover, the code update also introduced a bug in checking the return value of dwarf_whatform which rendered the function completely useless as a generic stringform parser. --- symtabAPI/src/dwarfWalker.C | 79 ++++++++----------------------------- symtabAPI/src/dwarfWalker.h | 2 +- 2 files changed, 18 insertions(+), 63 deletions(-) diff --git a/symtabAPI/src/dwarfWalker.C b/symtabAPI/src/dwarfWalker.C index 3f4dc9c7ff..b662c92e1c 100644 --- a/symtabAPI/src/dwarfWalker.C +++ b/symtabAPI/src/dwarfWalker.C @@ -529,13 +529,13 @@ bool DwarfWalker::parseCallsite() if (!has_line) return true; - std::string inline_file; - bool result = findString(DW_AT_call_file, inline_file); - if (!result) + using opt_string = boost::optional; + opt_string inline_file = find_call_file(); + if (!inline_file) return false; Dyninst::Offset inline_line; - result = findConstant(DW_AT_call_line, inline_line, &e, dbg()); + bool result = findConstant(DW_AT_call_line, inline_line, &e, dbg()); if (!result) return false; @@ -543,7 +543,7 @@ bool DwarfWalker::parseCallsite() // cout << "Found inline call site in func (0x" << hex << id() << ") " // << curFunc()->getName() << " at " << curFunc()->getOffset() << dec // << ", file " << inline_file << ": " << inline_line << endl; - ifunc->setFile(inline_file); + ifunc->setFile(inline_file.get()); ifunc->callsite_line = inline_line; return true; } @@ -2023,65 +2023,20 @@ bool DwarfWalker::checkForConstantOrExpr(Dwarf_Half /*attr*/, return true; } -bool DwarfWalker::findString(Dwarf_Half attr, - string &str) -{ - Dwarf_Half form; - Dwarf_Attribute strattr; - +boost::optional DwarfWalker::find_call_file() { Dwarf_Die e = entry(); - if (attr == DW_AT_call_file || attr == DW_AT_decl_file) { - unsigned long line_index; - bool result = findConstant(attr, line_index, &e, dbg()); - if (!result) - return false; - StringTablePtr strs = mod()->getStrings(); - boost::unique_lock l(strs->lock); - if (line_index >= strs->size()) { - dwarf_printf("Dwarf error reading line index %lu from srcFiles(%p) of size %lu\n", - line_index, (void*)strs.get(), strs->size()); - return false; - } - // cout << "findString found " << (*srcFiles())[line_index].str << " at srcFiles[" << line_index << "] for " << mod()->fileName() << endl; - str = (*srcFiles())[line_index].str; - return true; - } - auto ret_p = dwarf_attr(&e, attr, &strattr); - if(!ret_p) return false; - form = dwarf_whatform(&strattr); - if (form != 0) { - return false; - } - - bool result; - switch (form) { - case DW_FORM_string: - { - const char *s = dwarf_formstring(&strattr); - if(!s) return false; - // cout << "findString found " << s << " in DW_FORM_string" << endl; - str = s; - result = true; - break; - } - case DW_FORM_block: - case DW_FORM_block1: - case DW_FORM_block2: - case DW_FORM_block4: - { - Dwarf_Block *block = NULL; - DWARF_FAIL_RET(dwarf_formblock(&strattr, block)); - str = (char *) block->data; - // cout << "findString found " << str << " in DW_FORM_block" << endl; - result = !str.empty(); - break; - } - default: - dwarf_printf("(0x%lx) Warning: string form not used 0x%x\n", id(), (int) form); - result = false; - break; + unsigned long line_index; + bool result = findConstant(DW_AT_call_file, line_index, &e, dbg()); + if (!result) + return {}; + StringTablePtr strs = mod()->getStrings(); + boost::unique_lock l(strs->lock); + if (line_index >= strs->size()) { + dwarf_printf("Dwarf error reading line index %lu from srcFiles(%p) of size %lu\n", + line_index, (void*)strs.get(), strs->size()); + return {}; } - return result; + return (*srcFiles())[line_index].str; } bool DwarfWalker::findConstant(Dwarf_Half attr, Address &value, Dwarf_Die *entry, Dwarf * /*dbg*/) { diff --git a/symtabAPI/src/dwarfWalker.h b/symtabAPI/src/dwarfWalker.h index 9bd29ee74d..90c81e2ffa 100644 --- a/symtabAPI/src/dwarfWalker.h +++ b/symtabAPI/src/dwarfWalker.h @@ -358,7 +358,7 @@ class DwarfWalker : public DwarfParseActions { bool &constant, bool &expr, Dwarf_Half &form); - bool findString(Dwarf_Half attr, std::string &str); + boost::optional find_call_file(); public: static bool findConstant(Dwarf_Half attr, Address &value, Dwarf_Die *entry, Dwarf *dbg); static bool findConstantWithForm(Dwarf_Attribute &attr, Dwarf_Half form, From dca907291e7cfb0f7f2fd49852ffc9489de48e46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Gergely?= Date: Thu, 9 Feb 2023 20:01:06 +0100 Subject: [PATCH 154/505] Fix sema type for vex2 encoded vpand (#1364) The vex encoded form of VPAND takes three operands dest,src1,src2. --- common/src/arch-x86.C | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/src/arch-x86.C b/common/src/arch-x86.C index d955d4d0ba..de886b026b 100644 --- a/common/src/arch-x86.C +++ b/common/src/arch-x86.C @@ -6790,7 +6790,7 @@ ia32_entry sseMapMult[][3] = { e_vpminub, t_done, 0, true, { Vps, Hps, Wps }, 0, s1W2R3R, 0 }, { e_vpminub, t_done, 0, true, { Vps, Hps, Wps }, 0, s1W2R3R, 0 }, }, { /* SSEDB_66 */ - { e_vpand, t_done, 0, true, { Vps, Hps, Wps }, 0, s1RW2R, 0 }, + { e_vpand, t_done, 0, true, { Vps, Hps, Wps }, 0, s1W2R3R, 0 }, { e_No_Entry, t_vexw, VEXW91, false, { Zz, Zz, Zz }, 0, 0, 0 }, { e_No_Entry, t_vexw, VEXW64, false, { Zz, Zz, Zz }, 0, 0, 0 } }, { /* SSEDC_66 */ From 89e2782a1ffa784b9a022f7eefb8ad3e4bba87b6 Mon Sep 17 00:00:00 2001 From: "Jonathan R. Madsen" Date: Thu, 9 Feb 2023 13:54:47 -0600 Subject: [PATCH 155/505] Fixed nullptr issues in dyninstAPI/src/mapped_object.C (#1361) - checking whether std::string::c_str() == 0 is pointless because std::string cannot be constructed from a nullptr. use std::string::empty() - add nullptr checks in find*Vector* functions --- dyninstAPI/src/mapped_object.C | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dyninstAPI/src/mapped_object.C b/dyninstAPI/src/mapped_object.C index ad6acf2529..a4c12f2508 100644 --- a/dyninstAPI/src/mapped_object.C +++ b/dyninstAPI/src/mapped_object.C @@ -425,7 +425,7 @@ void mapped_object::set_short_name() { const std::vector *mapped_object::findFuncVectorByPretty(const std::string &funcname) { - if (funcname.c_str() == 0) return NULL; + if (funcname.empty()) return NULL; // First, check the underlying image. const std::vector *img_funcs = parse_img()->findFuncVectorByPretty(funcname); if (img_funcs == NULL) { @@ -435,7 +435,7 @@ const std::vector *mapped_object::findFuncVectorByPretty(const assert(img_funcs->size()); // Fast path: auto iter = allFunctionsByPrettyName.find(funcname); - if (iter != allFunctionsByPrettyName.end()) { + if (iter != allFunctionsByPrettyName.end() && iter->second != nullptr) { // Okay, we've pulled in some of the functions before (this can happen as a // side effect of adding functions). But did we get them all? std::vector *map_funcs = iter->second; @@ -460,7 +460,7 @@ const std::vector *mapped_object::findFuncVectorByPretty(const const std::vector *mapped_object::findFuncVectorByMangled(const std::string &funcname) { - if (funcname.c_str() == 0) return NULL; + if (funcname.empty()) return NULL; // First, check the underlying image. const std::vector *img_funcs = parse_img()->findFuncVectorByMangled(funcname); @@ -471,7 +471,7 @@ const std::vector *mapped_object::findFuncVectorByMangled(cons assert(img_funcs->size()); // Fast path: auto iter = allFunctionsByMangledName.find(funcname); - if (iter != allFunctionsByMangledName.end()) { + if (iter != allFunctionsByMangledName.end() && iter->second != nullptr) { // Okay, we've pulled in some of the functions before (this can happen as a // side effect of adding functions). But did we get them all? std::vector *map_funcs = iter->second; @@ -497,7 +497,7 @@ const std::vector *mapped_object::findFuncVectorByMangled(cons const std::vector *mapped_object::findVarVectorByPretty(const std::string &varname) { - if (varname.c_str() == 0) return NULL; + if (varname.empty()) return NULL; // First, check the underlying image. const std::vector *img_vars = parse_img()->findVarVectorByPretty(varname); @@ -506,7 +506,7 @@ const std::vector *mapped_object::findVarVectorByPretty(const st assert(img_vars->size()); // Fast path: auto iter = allVarsByPrettyName.find(varname); - if (iter != allVarsByPrettyName.end()) { + if (iter != allVarsByPrettyName.end() && iter->second != nullptr) { // Okay, we've pulled in some of the variabletions before (this can happen as a // side effect of adding variabletions). But did we get them all? std::vector *map_variables = iter->second; @@ -531,7 +531,7 @@ const std::vector *mapped_object::findVarVectorByPretty(const st const std::vector *mapped_object::findVarVectorByMangled(const std::string &varname) { - if (varname.c_str() == 0) return NULL; + if (varname.empty()) return NULL; // First, check the underlying image. const std::vector *img_vars = parse_img()->findVarVectorByMangled(varname); @@ -541,7 +541,7 @@ const std::vector *mapped_object::findVarVectorByMangled(const // Fast path: auto iter = allVarsByMangledName.find(varname); - if (iter != allVarsByMangledName.end()) { + if (iter != allVarsByMangledName.end() && iter->second != nullptr) { // Okay, we've pulled in some of the variabletions before (this can happen as a // side effect of adding variables). But did we get them all? std::vector *map_variables = iter->second; From fd9cb3f69172b2b227a26f6f0f73d03561c5ea64 Mon Sep 17 00:00:00 2001 From: Weixiao Zhan Date: Tue, 14 Feb 2023 12:00:29 -0600 Subject: [PATCH 156/505] handle ENDBR64 --- common/h/entryIDs.h | 2 ++ common/src/arch-x86.C | 2 ++ instructionAPI/src/InstructionDecoder-x86.C | 23 +++++++++++++++++---- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/common/h/entryIDs.h b/common/h/entryIDs.h index fcbc935355..df44c39b71 100644 --- a/common/h/entryIDs.h +++ b/common/h/entryIDs.h @@ -202,6 +202,8 @@ enum entryID : unsigned int { e_vdppd, // SSE 4.1 e_dpps, // SSE 4.1 e_emms, + e_endbr32, + e_endbr64, e_enter, e_enterq, e_extractps, // SSE 4.1 diff --git a/common/src/arch-x86.C b/common/src/arch-x86.C index de886b026b..30c939600f 100644 --- a/common/src/arch-x86.C +++ b/common/src/arch-x86.C @@ -978,6 +978,8 @@ COMMON_EXPORT dyn_hash_map entryNames_IAPI = map_list_of (e_vdppd, "vdppd") (e_dpps, "dpps") (e_emms, "emms") + (e_endbr32, "endbr32") + (e_endbr64, "endbr64") (e_enter, "enter") (e_extractps, "extractps") (e_extrq, "extrq") diff --git a/instructionAPI/src/InstructionDecoder-x86.C b/instructionAPI/src/InstructionDecoder-x86.C index 769fa4775b..3cb5723b78 100644 --- a/instructionAPI/src/InstructionDecoder-x86.C +++ b/instructionAPI/src/InstructionDecoder-x86.C @@ -1797,7 +1797,17 @@ namespace Dyninst decodedInstruction->getPrefix(), locs, m_Arch); return; } - } + } else if (decodedInstruction->getPrefix()->getPrefix(0) == PREFIX_REP && + *(b.start+1) == (unsigned char)(0x0F) && *(b.start+2) == (unsigned char)(0x1E)) { + // handling ENDBR family + if (*(b.start+3) == (unsigned char)(0xFB)) { + m_Operation = Operation(e_endbr32, entryNames_IAPI[e_endbr32], m_Arch); + return; + } else if (*(b.start+3) == (unsigned char)(0xFA)) { + m_Operation = Operation(e_endbr64, entryNames_IAPI[e_endbr64], m_Arch); + return; + } + } m_Operation = Operation(decodedInstruction->getEntry(), decodedInstruction->getPrefix(), locs, m_Arch); @@ -1831,10 +1841,15 @@ namespace Dyninst if (decodedInstruction->getEntry()->getID() == e_ret_near || decodedInstruction->getEntry()->getID() == e_ret_far) { - Expression::Ptr ret_addr = makeDereferenceExpression(makeRegisterExpression(is64BitMode ? x86_64::rsp : x86::esp), + Expression::Ptr ret_addr = makeDereferenceExpression(makeRegisterExpression(is64BitMode ? x86_64::rsp : x86::esp), is64BitMode ? u64 : u32); - insn_to_complete->addSuccessor(ret_addr, false, true, false, false); - } + insn_to_complete->addSuccessor(ret_addr, false, true, false, false); + } + if (insn_to_complete->getOperation().getID() == e_endbr32 || + insn_to_complete->getOperation().getID() == e_endbr64) { + insn_to_complete->m_Operands.clear(); + return true; + } for(int i = 0; i < 3; i++) { From fb5fdc34210c52b4bc23b3eca791bef8a0670998 Mon Sep 17 00:00:00 2001 From: Weixiao Zhan Date: Tue, 14 Feb 2023 16:17:21 -0600 Subject: [PATCH 157/505] revise space --- instructionAPI/src/InstructionDecoder-x86.C | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instructionAPI/src/InstructionDecoder-x86.C b/instructionAPI/src/InstructionDecoder-x86.C index 3cb5723b78..8fec700cfb 100644 --- a/instructionAPI/src/InstructionDecoder-x86.C +++ b/instructionAPI/src/InstructionDecoder-x86.C @@ -1841,9 +1841,9 @@ namespace Dyninst if (decodedInstruction->getEntry()->getID() == e_ret_near || decodedInstruction->getEntry()->getID() == e_ret_far) { - Expression::Ptr ret_addr = makeDereferenceExpression(makeRegisterExpression(is64BitMode ? x86_64::rsp : x86::esp), + Expression::Ptr ret_addr = makeDereferenceExpression(makeRegisterExpression(is64BitMode ? x86_64::rsp : x86::esp), is64BitMode ? u64 : u32); - insn_to_complete->addSuccessor(ret_addr, false, true, false, false); + insn_to_complete->addSuccessor(ret_addr, false, true, false, false); } if (insn_to_complete->getOperation().getID() == e_endbr32 || insn_to_complete->getOperation().getID() == e_endbr64) { From 17b82b78f43169fff197c3b30020446c9b5701c5 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Wed, 15 Feb 2023 17:34:13 -0600 Subject: [PATCH 158/505] Remove use of couts in the AMDGPU instruction decoders --- .../cdna2/InstructionDecoder-amdgpu-cdna2.C | 11 +---------- .../vega/InstructionDecoder-amdgpu-vega.C | 17 +---------------- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C index 27b70c7eae..c17c20e6b9 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -205,8 +205,6 @@ namespace Dyninst { insn = insn_high = insn_long = 0; useImm = false; isCall = false; - if (!getenv("DEBUG_DECODE")) - cout.setstate(ios_base::badbit); } // here we assemble the first 64 bit (if available) as an instruction @@ -220,7 +218,6 @@ namespace Dyninst { imm_at_64 = get32bit(b,8); insn_long = ( ((uint64_t) insn_high) << 32) | insn; - cout << " setup insn_long = " << std::hex << insn_long << endl; } void InstructionDecoder_amdgpu_cdna2::decodeOpcode(InstructionDecoder::buffer &b) { @@ -230,9 +227,7 @@ namespace Dyninst { } void InstructionDecoder_amdgpu_cdna2::debug_instr(){ - cout << "decoded instruction " << insn_in_progress->getOperation().mnemonic << " " << std::hex << insn_long << " insn_family = " << instr_family - << " length = " << insn_in_progress->size()<< endl << endl; - + // cout << "decoded instruction " << insn_in_progress->getOperation().mnemonic << " " << std::hex << insn_long << " insn_family = " << instr_family << " length = " << insn_in_progress->size()<< endl << endl; } Instruction InstructionDecoder_amdgpu_cdna2::decode(InstructionDecoder::buffer &b) { @@ -242,8 +237,6 @@ namespace Dyninst { //cout << "Is Branch Instruction !! , name = " << insn_in_progress -> getOperation().mnemonic << endl; //std::mem_fun(decode_lookup_table[instr_family])(this); } - debug_instr(); - cout.clear(); b.start += insn_in_progress->size(); return *insn_in_progress; } @@ -253,8 +246,6 @@ namespace Dyninst { InstructionDecoder::buffer b(insn_to_complete->ptr(), insn_to_complete->size()); setupInsnWord(b); mainDecode(); - debug_instr(); - cout.clear(); Instruction* iptr = const_cast(insn_to_complete); *iptr = *(insn_in_progress.get()); } diff --git a/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C index 1666eb7387..449255ae00 100644 --- a/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C +++ b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C @@ -389,7 +389,6 @@ namespace Dyninst { void InstructionDecoder_amdgpu_vega::finalizeVOP1Operands(){ layout_vop1 & layout = insn_layout.vop1; - //cout << " finalizing vop1 operands , vdst = " << std::dec << layout.vdst << " src0 = " << layout.src0 <appendOperand(decodeVDST(layout.vdst),false,true); insn_in_progress->appendOperand(decodeSSRC(layout.src0),true,false); @@ -408,11 +407,9 @@ namespace Dyninst { makeAmdgpuRegID(amdgpu_vega::sgpr0,layout.ssrc0,2) ); - // TODO : addSuccessors commented out to avoid jump table analysis aborts if(insn_in_progress->getOperation().operationID == amdgpu_op_s_setpc_b64){ //RegisterAST::Ptr tmpqq = boost::dynamic_pointer_cast(new_pc_ast); - //std::cout << "setting pc to offset " << std::hex <getID()<< std::endl; // non fall through branches are added as Successor //insn_in_progress->appendOperand(new_pc_ast,true,false); insn_in_progress->addSuccessor(new_pc_ast, false, false, false, false); @@ -452,7 +449,6 @@ namespace Dyninst { if(isBranch){ if(!isModifyPC){ - //cout << "calling make branch target "<< endl; makeBranchTarget(isCall,isConditional,layout.simm16); } @@ -466,7 +462,6 @@ namespace Dyninst { if(isBranch){ if(!isModifyPC){ - //cout << "calling make branch target "<< endl; makeBranchTarget(isCall,isConditional,layout.simm16); } @@ -516,9 +511,7 @@ namespace Dyninst { offset_expr = layout.soe ? decodeSGPRorM0(layout.soffset) : Immediate::makeImmediate(Result(u64,0)); } - // cout << "layout.sbase = " << std::hex << layout.sbase << endl; //MachRegister mr = makeAmdgpuRegID(amdgpu_vega::sgpr0,4,2); - // cout << " shouldn't it be " << amdgpu_vega::sgpr_vec2_0 << " " << mr << endl; Expression::Ptr sbase_expr = makeRegisterExpression(makeAmdgpuRegID(amdgpu_vega::sgpr0,layout.sbase << 1,2)); if(isScratch) offset_expr = makeMultiplyExpression(offset_expr, @@ -698,8 +691,6 @@ namespace Dyninst { insn = insn_high = insn_long = 0; useImm = false; isCall = false; - if (!getenv("DEBUG_DECODE")) - cout.setstate(ios_base::badbit); } // here we assemble the first 64 bit (if available) as an instruction @@ -721,9 +712,7 @@ namespace Dyninst { } void InstructionDecoder_amdgpu_vega::debug_instr(){ - cout << "\ndecoded instruction " << insn_in_progress->getOperation().mnemonic - << " length = " << insn_in_progress->size()<< endl; - + //cout << "\ndecoded instruction " << insn_in_progress->getOperation().mnemonic << " length = " << insn_in_progress->size()<< endl; } @@ -733,8 +722,6 @@ namespace Dyninst { if(entryToCategory(insn_in_progress->getOperation().getID())==c_BranchInsn){ std::mem_fun(decode_lookup_table[instr_family])(this); } - debug_instr(); - cout.clear(); b.start += insn_in_progress->size(); return *insn_in_progress; } @@ -743,8 +730,6 @@ namespace Dyninst { InstructionDecoder::buffer b(insn_to_complete->ptr(), insn_to_complete->size()); setupInsnWord(b); mainDecode(b); - //debug_instr(); - cout.clear(); Instruction* iptr = const_cast(insn_to_complete); *iptr = *(insn_in_progress.get()); b.start += insn_in_progress->size(); From 54320d4d3016c654985f375bd5ea87e73c6315e6 Mon Sep 17 00:00:00 2001 From: "Weixiao.zhan" <45820168+weixiao-zhan@users.noreply.github.com> Date: Thu, 16 Feb 2023 16:41:34 -0600 Subject: [PATCH 159/505] update spack.yaml for spack v0.19.1 (#1367) --- docker/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 8f88f1df9a..dcf34aa65d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -110,7 +110,7 @@ COPY . /code WORKDIR /opt/dyninst-env RUN . /opt/spack/share/spack/setup-env.sh && \ spack env create -d . && \ - echo " concretization: together" >> spack.yaml && \ + echo " concretizer:\n unify: true" >> spack.yaml && \ spack env activate . && \ spack add cmake@${CMAKE_VERSION} && \ spack add perl@${PERL_VERSION} && \ From 72bc4c6de1baa151ca3941d0f63fb0a7b0925c70 Mon Sep 17 00:00:00 2001 From: Bolo -- Josef Burger Date: Fri, 17 Feb 2023 13:57:37 -0600 Subject: [PATCH 160/505] x86 8-bit immediate values were interpreted incorrectly cross-platform. (#1373) Correct interpretation of Intel instructions requires sign extension. On intel it works because chars are signed on that platform. On other platforms (arm64, powerpc64) intel code was not correctly analyzed because incorrect values were generated from 8 bit immediate constants; which were interpreted as unsigned on those systems. These changes ensure intel code will be correctly interpreted on any system, regardless of the signedness of chars. A n-way validation was used to validate this change, to ensure that correct code interpretation of (intel, arm, power) code happens on all three platforms. No other issues of this nature were located -- at this time. Jim Kupsch contributed additional correctness changes to common/src/arch-x86.C that were added to this branch/PR to fix yet more problems of this ilk. --- common/src/arch-x86.C | 10 +++++----- common/src/arch-x86.h | 3 ++- instructionAPI/h/Result.h | 5 +++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/common/src/arch-x86.C b/common/src/arch-x86.C index 30c939600f..e8484f52e8 100644 --- a/common/src/arch-x86.C +++ b/common/src/arch-x86.C @@ -10492,7 +10492,7 @@ static unsigned int ia32_decode_modrm(const unsigned int addrSzAttr, const unsig addr++; /* Get displacements we're going to use */ - const char* disp8 = (const char*)addr; + const signed char* disp8 = (const signed char*)addr; const short* disp16 = (const short*)addr; const int* disp32 = (const int*)addr; @@ -10677,7 +10677,7 @@ static unsigned int ia32_decode_modrm(const unsigned int addrSzAttr, const unsig } /* Update displacement pointers */ - disp8 = (const char*)addr; + disp8 = (const signed char*)addr; disp16 = (const short*)addr; disp32 = (const int*)addr; @@ -10955,7 +10955,7 @@ unsigned int ia32_decode_operands (const ia32_prefixes& pref, nib += wordSzB * addrSzAttr; if(mac) { - int offset = 0; + long offset = 0; switch(addrSzAttr) { case 1: // 16-bit offset @@ -11746,7 +11746,7 @@ int displacement(const unsigned char *instr, unsigned type) { disp = *(const int *)(instr+2); } else if (type & IS_JUMP) { if (type & REL_B) { - disp = *(const char *)(instr+1); + disp = *(const signed char *)(instr+1); } else if (type & REL_W) { disp = *(const short *)(instr+1); // skip opcode } else if (type & REL_D) { @@ -11754,7 +11754,7 @@ int displacement(const unsigned char *instr, unsigned type) { } } else if (type & IS_JCC) { if (type & REL_B) { - disp = *(const char *)(instr+1); + disp = *(const signed char *)(instr+1); } else if (type & REL_W) { disp = *(const short *)(instr+2); // skip two byte opcode } else if (type & REL_D) { diff --git a/common/src/arch-x86.h b/common/src/arch-x86.h index cf58611ad6..e6be9336e1 100644 --- a/common/src/arch-x86.h +++ b/common/src/arch-x86.h @@ -48,7 +48,8 @@ namespace NS_x86 { /* operand types */ -typedef char byte_t; /* a byte operand */ +/* signed char required for correct immediate value interpretation */ +typedef signed char byte_t; /* a byte operand */ typedef short word_t; /* a word (16-bit) operand */ typedef int dword_t; /* a double word (32-bit) operand */ diff --git a/instructionAPI/h/Result.h b/instructionAPI/h/Result.h index a8e27b67dd..19549232d3 100644 --- a/instructionAPI/h/Result.h +++ b/instructionAPI/h/Result.h @@ -56,7 +56,8 @@ namespace Dyninst { unsigned char bitval : 1; unsigned char u8val; - char s8val; + /* char can be signed or unsigned, must be signed for s8val */ + signed char s8val; uint16_t u16val; int16_t s16val; uint32_t u24val:24; @@ -132,7 +133,7 @@ namespace Dyninst }; template < > struct Result_type2type { - typedef char type; + typedef signed char type; }; template < > struct Result_type2type { From 5ad79439de5468982f9ba878e916403f2c8671ec Mon Sep 17 00:00:00 2001 From: Bolo Date: Mon, 20 Feb 2023 13:58:46 -0600 Subject: [PATCH 161/505] Prevent fallthrough analysis of amdgpu swap/set pc instructions. Both amdgpu setpc and swappc instructions are _not_ fallthrough branch instructions. We need to stop analysis at that instruction. The CDNA2 (MI200) instructions of swappc and ssetpc were missing. They have been added for similar fallthrough prevention on that architecture. --- instructionAPI/src/Instruction.C | 3 +++ 1 file changed, 3 insertions(+) diff --git a/instructionAPI/src/Instruction.C b/instructionAPI/src/Instruction.C index bcc16621bf..6f244d508b 100644 --- a/instructionAPI/src/Instruction.C +++ b/instructionAPI/src/Instruction.C @@ -540,7 +540,10 @@ namespace Dyninst case e_sysexit: case e_call: case e_syscall: + case amdgpu_op_s_setpc_b64: case amdgpu_op_s_swappc_b64: + case amdgpu_cdna2_op_S_SETPC_B64: + case amdgpu_cdna2_op_S_SWAPPC_B64: return false; case e_jnb: case e_jb: From f1987aa94789d4d2318a6db2a9edab9b303af560 Mon Sep 17 00:00:00 2001 From: Bolo Date: Tue, 21 Feb 2023 10:28:53 -0600 Subject: [PATCH 162/505] Allow CFG analysis based on instructionAPI alone w/out semantics. Dyninst can generate a CFG just based on instructions and decoding. However, up to this point if a semantics package was not available for an architecture, a non-semantics architecture would result in a panic. With this change, a warning message, similar to the crash message, is output once to allow users to know that they aren't using semantic info, and only instructionAPI itself. --- dataflowAPI/src/SymEval.C | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/dataflowAPI/src/SymEval.C b/dataflowAPI/src/SymEval.C index 89e1eea2df..68eeabcb9b 100644 --- a/dataflowAPI/src/SymEval.C +++ b/dataflowAPI/src/SymEval.C @@ -57,6 +57,9 @@ #include "boost/tuple/tuple.hpp" +/* once flag for the warning of unimplemented symbolic expansion */ +#include + using namespace std; using namespace Dyninst; using namespace InstructionAPI; @@ -536,8 +539,14 @@ bool SymEval::expandInsn(const Instruction &insn, break; } default: - assert(0 && "Unimplemented symbolic expansion architecture"); - break; + /* once per arch would be better, but ... */ + static std::once_flag arch_warning_flag; + std::call_once(arch_warning_flag, [&]{ + cerr << "Unimplemented symbolic expansion architecture: " << insn.getArch() << endl; + } + ); + return false; + break; } return true; From 6c21cc1da566466dc99d007a5ad1d1ca83cbae36 Mon Sep 17 00:00:00 2001 From: Hsuan-Heng Wu Date: Tue, 5 Jul 2022 20:24:04 -0500 Subject: [PATCH 163/505] Added support for gfx908 based on the XML-ISA-DROP for MI100 Fixed a bug in the instruction decoder that returns incorrect value on the last instruction. --- .../h/AMDGPU/gfx908/amdgpu_gfx908_op_table.h | 1216 ++ .../h/AMDGPU/gfx908/amdgpu_gfx908_sys_regs.h | 617 + common/h/dyn_regs.h | 203 + common/h/entryIDs.h | 1 + common/src/dyn_regs.C | 81 +- dwarf/src/dwarfHandle.C | 5 +- elf/src/Elf_X.C | 4 +- instructionAPI/CMakeLists.txt | 6 +- instructionAPI/h/Instruction.h | 2 +- instructionAPI/h/Operation_impl.h | 2 +- .../cdna2/InstructionDecoder-amdgpu-cdna2.C | 3 +- .../src/AMDGPU/cdna2/finalizeOperands.C | 24 + .../gfx908/InstructionDecoder-amdgpu-gfx908.C | 261 + .../gfx908/InstructionDecoder-amdgpu-gfx908.h | 317 + .../gfx908/amdgpu_gfx908_decoder_impl.C | 2387 ++++ .../gfx908/amdgpu_gfx908_decoder_impl.h | 401 + .../AMDGPU/gfx908/amdgpu_gfx908_insn_entry.h | 32 + .../gfx908/amdgpu_gfx908_opcode_tables.C | 2982 ++++ .../src/AMDGPU/gfx908/decodeOperands.C | 5884 ++++++++ .../src/AMDGPU/gfx908/decodeOperands.h | 41 + .../src/AMDGPU/gfx908/finalizeOperands.C | 11469 ++++++++++++++++ instructionAPI/src/Instruction.C | 2 +- instructionAPI/src/InstructionCategories.C | 1 + instructionAPI/src/InstructionDecoderImpl.C | 3 + instructionAPI/src/Register.C | 12 +- instructionAPI/src/amdgpu_branchinsn_table.h | 16 + instructionAPI/src/debug_decode.C | 77 + instructionAPI/src/debug_decode.h | 52 + parseAPI/src/IA_IAPI.C | 6 +- parseAPI/src/IA_amdgpu.C | 2 +- parseAPI/src/Parser.C | 7 + parseAPI/src/SymbolicExpression.C | 1 + proccontrol/src/process.C | 1 + 33 files changed, 26097 insertions(+), 21 deletions(-) create mode 100644 common/h/AMDGPU/gfx908/amdgpu_gfx908_op_table.h create mode 100644 common/h/AMDGPU/gfx908/amdgpu_gfx908_sys_regs.h create mode 100644 instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C create mode 100644 instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h create mode 100644 instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C create mode 100644 instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.h create mode 100644 instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_insn_entry.h create mode 100644 instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_opcode_tables.C create mode 100644 instructionAPI/src/AMDGPU/gfx908/decodeOperands.C create mode 100644 instructionAPI/src/AMDGPU/gfx908/decodeOperands.h create mode 100644 instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C create mode 100644 instructionAPI/src/debug_decode.C create mode 100644 instructionAPI/src/debug_decode.h diff --git a/common/h/AMDGPU/gfx908/amdgpu_gfx908_op_table.h b/common/h/AMDGPU/gfx908/amdgpu_gfx908_op_table.h new file mode 100644 index 0000000000..2c54592110 --- /dev/null +++ b/common/h/AMDGPU/gfx908/amdgpu_gfx908_op_table.h @@ -0,0 +1,1216 @@ +amdgpu_gfx908_op_BUFFER_ATOMIC_ADD, +amdgpu_gfx908_op_BUFFER_ATOMIC_ADD_F32, +amdgpu_gfx908_op_BUFFER_ATOMIC_ADD_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_AND, +amdgpu_gfx908_op_BUFFER_ATOMIC_AND_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_CMPSWAP, +amdgpu_gfx908_op_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_DEC, +amdgpu_gfx908_op_BUFFER_ATOMIC_DEC_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_INC, +amdgpu_gfx908_op_BUFFER_ATOMIC_INC_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_OR, +amdgpu_gfx908_op_BUFFER_ATOMIC_OR_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_PK_ADD_F16, +amdgpu_gfx908_op_BUFFER_ATOMIC_SMAX, +amdgpu_gfx908_op_BUFFER_ATOMIC_SMAX_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_SMIN, +amdgpu_gfx908_op_BUFFER_ATOMIC_SMIN_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_SUB, +amdgpu_gfx908_op_BUFFER_ATOMIC_SUB_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_SWAP, +amdgpu_gfx908_op_BUFFER_ATOMIC_SWAP_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_UMAX, +amdgpu_gfx908_op_BUFFER_ATOMIC_UMAX_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_UMIN, +amdgpu_gfx908_op_BUFFER_ATOMIC_UMIN_X2, +amdgpu_gfx908_op_BUFFER_ATOMIC_XOR, +amdgpu_gfx908_op_BUFFER_ATOMIC_XOR_X2, +amdgpu_gfx908_op_BUFFER_LOAD_DWORD, +amdgpu_gfx908_op_BUFFER_LOAD_DWORDX2, +amdgpu_gfx908_op_BUFFER_LOAD_DWORDX3, +amdgpu_gfx908_op_BUFFER_LOAD_DWORDX4, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_HI_X, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_X, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_XY, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_X, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_XY, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_XYZ, +amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_XYZW, +amdgpu_gfx908_op_BUFFER_LOAD_SBYTE, +amdgpu_gfx908_op_BUFFER_LOAD_SBYTE_D16, +amdgpu_gfx908_op_BUFFER_LOAD_SBYTE_D16_HI, +amdgpu_gfx908_op_BUFFER_LOAD_SHORT_D16, +amdgpu_gfx908_op_BUFFER_LOAD_SHORT_D16_HI, +amdgpu_gfx908_op_BUFFER_LOAD_SSHORT, +amdgpu_gfx908_op_BUFFER_LOAD_UBYTE, +amdgpu_gfx908_op_BUFFER_LOAD_UBYTE_D16, +amdgpu_gfx908_op_BUFFER_LOAD_UBYTE_D16_HI, +amdgpu_gfx908_op_BUFFER_LOAD_USHORT, +amdgpu_gfx908_op_BUFFER_STORE_BYTE, +amdgpu_gfx908_op_BUFFER_STORE_BYTE_D16_HI, +amdgpu_gfx908_op_BUFFER_STORE_DWORD, +amdgpu_gfx908_op_BUFFER_STORE_DWORDX2, +amdgpu_gfx908_op_BUFFER_STORE_DWORDX3, +amdgpu_gfx908_op_BUFFER_STORE_DWORDX4, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_HI_X, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_X, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_XY, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_X, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_XY, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_XYZ, +amdgpu_gfx908_op_BUFFER_STORE_FORMAT_XYZW, +amdgpu_gfx908_op_BUFFER_STORE_LDS_DWORD, +amdgpu_gfx908_op_BUFFER_STORE_SHORT, +amdgpu_gfx908_op_BUFFER_STORE_SHORT_D16_HI, +amdgpu_gfx908_op_BUFFER_WBINVL1, +amdgpu_gfx908_op_BUFFER_WBINVL1_VOL, +amdgpu_gfx908_op_DS_ADD_F32, +amdgpu_gfx908_op_DS_ADD_RTN_F32, +amdgpu_gfx908_op_DS_ADD_RTN_U32, +amdgpu_gfx908_op_DS_ADD_RTN_U64, +amdgpu_gfx908_op_DS_ADD_SRC2_F32, +amdgpu_gfx908_op_DS_ADD_SRC2_U32, +amdgpu_gfx908_op_DS_ADD_SRC2_U64, +amdgpu_gfx908_op_DS_ADD_U32, +amdgpu_gfx908_op_DS_ADD_U64, +amdgpu_gfx908_op_DS_AND_B32, +amdgpu_gfx908_op_DS_AND_B64, +amdgpu_gfx908_op_DS_AND_RTN_B32, +amdgpu_gfx908_op_DS_AND_RTN_B64, +amdgpu_gfx908_op_DS_AND_SRC2_B32, +amdgpu_gfx908_op_DS_AND_SRC2_B64, +amdgpu_gfx908_op_DS_APPEND, +amdgpu_gfx908_op_DS_BPERMUTE_B32, +amdgpu_gfx908_op_DS_CMPST_B32, +amdgpu_gfx908_op_DS_CMPST_B64, +amdgpu_gfx908_op_DS_CMPST_F32, +amdgpu_gfx908_op_DS_CMPST_F64, +amdgpu_gfx908_op_DS_CMPST_RTN_B32, +amdgpu_gfx908_op_DS_CMPST_RTN_B64, +amdgpu_gfx908_op_DS_CMPST_RTN_F32, +amdgpu_gfx908_op_DS_CMPST_RTN_F64, +amdgpu_gfx908_op_DS_CONDXCHG32_RTN_B64, +amdgpu_gfx908_op_DS_CONSUME, +amdgpu_gfx908_op_DS_DEC_RTN_U32, +amdgpu_gfx908_op_DS_DEC_RTN_U64, +amdgpu_gfx908_op_DS_DEC_SRC2_U32, +amdgpu_gfx908_op_DS_DEC_SRC2_U64, +amdgpu_gfx908_op_DS_DEC_U32, +amdgpu_gfx908_op_DS_DEC_U64, +amdgpu_gfx908_op_DS_GWS_BARRIER, +amdgpu_gfx908_op_DS_GWS_INIT, +amdgpu_gfx908_op_DS_GWS_SEMA_BR, +amdgpu_gfx908_op_DS_GWS_SEMA_P, +amdgpu_gfx908_op_DS_GWS_SEMA_RELEASE_ALL, +amdgpu_gfx908_op_DS_GWS_SEMA_V, +amdgpu_gfx908_op_DS_INC_RTN_U32, +amdgpu_gfx908_op_DS_INC_RTN_U64, +amdgpu_gfx908_op_DS_INC_SRC2_U32, +amdgpu_gfx908_op_DS_INC_SRC2_U64, +amdgpu_gfx908_op_DS_INC_U32, +amdgpu_gfx908_op_DS_INC_U64, +amdgpu_gfx908_op_DS_MAX_F32, +amdgpu_gfx908_op_DS_MAX_F64, +amdgpu_gfx908_op_DS_MAX_I32, +amdgpu_gfx908_op_DS_MAX_I64, +amdgpu_gfx908_op_DS_MAX_RTN_F32, +amdgpu_gfx908_op_DS_MAX_RTN_F64, +amdgpu_gfx908_op_DS_MAX_RTN_I32, +amdgpu_gfx908_op_DS_MAX_RTN_I64, +amdgpu_gfx908_op_DS_MAX_RTN_U32, +amdgpu_gfx908_op_DS_MAX_RTN_U64, +amdgpu_gfx908_op_DS_MAX_SRC2_F32, +amdgpu_gfx908_op_DS_MAX_SRC2_F64, +amdgpu_gfx908_op_DS_MAX_SRC2_I32, +amdgpu_gfx908_op_DS_MAX_SRC2_I64, +amdgpu_gfx908_op_DS_MAX_SRC2_U32, +amdgpu_gfx908_op_DS_MAX_SRC2_U64, +amdgpu_gfx908_op_DS_MAX_U32, +amdgpu_gfx908_op_DS_MAX_U64, +amdgpu_gfx908_op_DS_MIN_F32, +amdgpu_gfx908_op_DS_MIN_F64, +amdgpu_gfx908_op_DS_MIN_I32, +amdgpu_gfx908_op_DS_MIN_I64, +amdgpu_gfx908_op_DS_MIN_RTN_F32, +amdgpu_gfx908_op_DS_MIN_RTN_F64, +amdgpu_gfx908_op_DS_MIN_RTN_I32, +amdgpu_gfx908_op_DS_MIN_RTN_I64, +amdgpu_gfx908_op_DS_MIN_RTN_U32, +amdgpu_gfx908_op_DS_MIN_RTN_U64, +amdgpu_gfx908_op_DS_MIN_SRC2_F32, +amdgpu_gfx908_op_DS_MIN_SRC2_F64, +amdgpu_gfx908_op_DS_MIN_SRC2_I32, +amdgpu_gfx908_op_DS_MIN_SRC2_I64, +amdgpu_gfx908_op_DS_MIN_SRC2_U32, +amdgpu_gfx908_op_DS_MIN_SRC2_U64, +amdgpu_gfx908_op_DS_MIN_U32, +amdgpu_gfx908_op_DS_MIN_U64, +amdgpu_gfx908_op_DS_MSKOR_B32, +amdgpu_gfx908_op_DS_MSKOR_B64, +amdgpu_gfx908_op_DS_MSKOR_RTN_B32, +amdgpu_gfx908_op_DS_MSKOR_RTN_B64, +amdgpu_gfx908_op_DS_NOP, +amdgpu_gfx908_op_DS_ORDERED_COUNT, +amdgpu_gfx908_op_DS_OR_B32, +amdgpu_gfx908_op_DS_OR_B64, +amdgpu_gfx908_op_DS_OR_RTN_B32, +amdgpu_gfx908_op_DS_OR_RTN_B64, +amdgpu_gfx908_op_DS_OR_SRC2_B32, +amdgpu_gfx908_op_DS_OR_SRC2_B64, +amdgpu_gfx908_op_DS_PERMUTE_B32, +amdgpu_gfx908_op_DS_READ2ST64_B32, +amdgpu_gfx908_op_DS_READ2ST64_B64, +amdgpu_gfx908_op_DS_READ2_B32, +amdgpu_gfx908_op_DS_READ2_B64, +amdgpu_gfx908_op_DS_READ_ADDTID_B32, +amdgpu_gfx908_op_DS_READ_B128, +amdgpu_gfx908_op_DS_READ_B32, +amdgpu_gfx908_op_DS_READ_B64, +amdgpu_gfx908_op_DS_READ_B96, +amdgpu_gfx908_op_DS_READ_I16, +amdgpu_gfx908_op_DS_READ_I8, +amdgpu_gfx908_op_DS_READ_I8_D16, +amdgpu_gfx908_op_DS_READ_I8_D16_HI, +amdgpu_gfx908_op_DS_READ_U16, +amdgpu_gfx908_op_DS_READ_U16_D16, +amdgpu_gfx908_op_DS_READ_U16_D16_HI, +amdgpu_gfx908_op_DS_READ_U8, +amdgpu_gfx908_op_DS_READ_U8_D16, +amdgpu_gfx908_op_DS_READ_U8_D16_HI, +amdgpu_gfx908_op_DS_RSUB_RTN_U32, +amdgpu_gfx908_op_DS_RSUB_RTN_U64, +amdgpu_gfx908_op_DS_RSUB_SRC2_U32, +amdgpu_gfx908_op_DS_RSUB_SRC2_U64, +amdgpu_gfx908_op_DS_RSUB_U32, +amdgpu_gfx908_op_DS_RSUB_U64, +amdgpu_gfx908_op_DS_SUB_RTN_U32, +amdgpu_gfx908_op_DS_SUB_RTN_U64, +amdgpu_gfx908_op_DS_SUB_SRC2_U32, +amdgpu_gfx908_op_DS_SUB_SRC2_U64, +amdgpu_gfx908_op_DS_SUB_U32, +amdgpu_gfx908_op_DS_SUB_U64, +amdgpu_gfx908_op_DS_SWIZZLE_B32, +amdgpu_gfx908_op_DS_WRAP_RTN_B32, +amdgpu_gfx908_op_DS_WRITE2ST64_B32, +amdgpu_gfx908_op_DS_WRITE2ST64_B64, +amdgpu_gfx908_op_DS_WRITE2_B32, +amdgpu_gfx908_op_DS_WRITE2_B64, +amdgpu_gfx908_op_DS_WRITE_ADDTID_B32, +amdgpu_gfx908_op_DS_WRITE_B128, +amdgpu_gfx908_op_DS_WRITE_B16, +amdgpu_gfx908_op_DS_WRITE_B16_D16_HI, +amdgpu_gfx908_op_DS_WRITE_B32, +amdgpu_gfx908_op_DS_WRITE_B64, +amdgpu_gfx908_op_DS_WRITE_B8, +amdgpu_gfx908_op_DS_WRITE_B8_D16_HI, +amdgpu_gfx908_op_DS_WRITE_B96, +amdgpu_gfx908_op_DS_WRITE_SRC2_B32, +amdgpu_gfx908_op_DS_WRITE_SRC2_B64, +amdgpu_gfx908_op_DS_WRXCHG2ST64_RTN_B32, +amdgpu_gfx908_op_DS_WRXCHG2ST64_RTN_B64, +amdgpu_gfx908_op_DS_WRXCHG2_RTN_B32, +amdgpu_gfx908_op_DS_WRXCHG2_RTN_B64, +amdgpu_gfx908_op_DS_WRXCHG_RTN_B32, +amdgpu_gfx908_op_DS_WRXCHG_RTN_B64, +amdgpu_gfx908_op_DS_XOR_B32, +amdgpu_gfx908_op_DS_XOR_B64, +amdgpu_gfx908_op_DS_XOR_RTN_B32, +amdgpu_gfx908_op_DS_XOR_RTN_B64, +amdgpu_gfx908_op_DS_XOR_SRC2_B32, +amdgpu_gfx908_op_DS_XOR_SRC2_B64, +amdgpu_gfx908_op_EXP, +amdgpu_gfx908_op_FLAT_ATOMIC_ADD, +amdgpu_gfx908_op_FLAT_ATOMIC_ADD_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_AND, +amdgpu_gfx908_op_FLAT_ATOMIC_AND_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_CMPSWAP, +amdgpu_gfx908_op_FLAT_ATOMIC_CMPSWAP_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_DEC, +amdgpu_gfx908_op_FLAT_ATOMIC_DEC_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_INC, +amdgpu_gfx908_op_FLAT_ATOMIC_INC_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_OR, +amdgpu_gfx908_op_FLAT_ATOMIC_OR_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_SMAX, +amdgpu_gfx908_op_FLAT_ATOMIC_SMAX_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_SMIN, +amdgpu_gfx908_op_FLAT_ATOMIC_SMIN_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_SUB, +amdgpu_gfx908_op_FLAT_ATOMIC_SUB_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_SWAP, +amdgpu_gfx908_op_FLAT_ATOMIC_SWAP_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_UMAX, +amdgpu_gfx908_op_FLAT_ATOMIC_UMAX_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_UMIN, +amdgpu_gfx908_op_FLAT_ATOMIC_UMIN_X2, +amdgpu_gfx908_op_FLAT_ATOMIC_XOR, +amdgpu_gfx908_op_FLAT_ATOMIC_XOR_X2, +amdgpu_gfx908_op_FLAT_LOAD_DWORD, +amdgpu_gfx908_op_FLAT_LOAD_DWORDX2, +amdgpu_gfx908_op_FLAT_LOAD_DWORDX3, +amdgpu_gfx908_op_FLAT_LOAD_DWORDX4, +amdgpu_gfx908_op_FLAT_LOAD_SBYTE, +amdgpu_gfx908_op_FLAT_LOAD_SBYTE_D16, +amdgpu_gfx908_op_FLAT_LOAD_SBYTE_D16_HI, +amdgpu_gfx908_op_FLAT_LOAD_SHORT_D16, +amdgpu_gfx908_op_FLAT_LOAD_SHORT_D16_HI, +amdgpu_gfx908_op_FLAT_LOAD_SSHORT, +amdgpu_gfx908_op_FLAT_LOAD_UBYTE, +amdgpu_gfx908_op_FLAT_LOAD_UBYTE_D16, +amdgpu_gfx908_op_FLAT_LOAD_UBYTE_D16_HI, +amdgpu_gfx908_op_FLAT_LOAD_USHORT, +amdgpu_gfx908_op_FLAT_STORE_BYTE, +amdgpu_gfx908_op_FLAT_STORE_BYTE_D16_HI, +amdgpu_gfx908_op_FLAT_STORE_DWORD, +amdgpu_gfx908_op_FLAT_STORE_DWORDX2, +amdgpu_gfx908_op_FLAT_STORE_DWORDX3, +amdgpu_gfx908_op_FLAT_STORE_DWORDX4, +amdgpu_gfx908_op_FLAT_STORE_SHORT, +amdgpu_gfx908_op_FLAT_STORE_SHORT_D16_HI, +amdgpu_gfx908_op_GLOBAL_ATOMIC_ADD, +amdgpu_gfx908_op_GLOBAL_ATOMIC_ADD_F32, +amdgpu_gfx908_op_GLOBAL_ATOMIC_ADD_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_AND, +amdgpu_gfx908_op_GLOBAL_ATOMIC_AND_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_CMPSWAP, +amdgpu_gfx908_op_GLOBAL_ATOMIC_CMPSWAP_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_DEC, +amdgpu_gfx908_op_GLOBAL_ATOMIC_DEC_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_INC, +amdgpu_gfx908_op_GLOBAL_ATOMIC_INC_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_OR, +amdgpu_gfx908_op_GLOBAL_ATOMIC_OR_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_PK_ADD_F16, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SMAX, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SMAX_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SMIN, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SMIN_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SUB, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SUB_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SWAP, +amdgpu_gfx908_op_GLOBAL_ATOMIC_SWAP_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_UMAX, +amdgpu_gfx908_op_GLOBAL_ATOMIC_UMAX_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_UMIN, +amdgpu_gfx908_op_GLOBAL_ATOMIC_UMIN_X2, +amdgpu_gfx908_op_GLOBAL_ATOMIC_XOR, +amdgpu_gfx908_op_GLOBAL_ATOMIC_XOR_X2, +amdgpu_gfx908_op_GLOBAL_LOAD_DWORD, +amdgpu_gfx908_op_GLOBAL_LOAD_DWORDX2, +amdgpu_gfx908_op_GLOBAL_LOAD_DWORDX3, +amdgpu_gfx908_op_GLOBAL_LOAD_DWORDX4, +amdgpu_gfx908_op_GLOBAL_LOAD_SBYTE, +amdgpu_gfx908_op_GLOBAL_LOAD_SBYTE_D16, +amdgpu_gfx908_op_GLOBAL_LOAD_SBYTE_D16_HI, +amdgpu_gfx908_op_GLOBAL_LOAD_SHORT_D16, +amdgpu_gfx908_op_GLOBAL_LOAD_SHORT_D16_HI, +amdgpu_gfx908_op_GLOBAL_LOAD_SSHORT, +amdgpu_gfx908_op_GLOBAL_LOAD_UBYTE, +amdgpu_gfx908_op_GLOBAL_LOAD_UBYTE_D16, +amdgpu_gfx908_op_GLOBAL_LOAD_UBYTE_D16_HI, +amdgpu_gfx908_op_GLOBAL_LOAD_USHORT, +amdgpu_gfx908_op_GLOBAL_STORE_BYTE, +amdgpu_gfx908_op_GLOBAL_STORE_BYTE_D16_HI, +amdgpu_gfx908_op_GLOBAL_STORE_DWORD, +amdgpu_gfx908_op_GLOBAL_STORE_DWORDX2, +amdgpu_gfx908_op_GLOBAL_STORE_DWORDX3, +amdgpu_gfx908_op_GLOBAL_STORE_DWORDX4, +amdgpu_gfx908_op_GLOBAL_STORE_SHORT, +amdgpu_gfx908_op_GLOBAL_STORE_SHORT_D16_HI, +amdgpu_gfx908_op_IMAGE_ATOMIC_ADD, +amdgpu_gfx908_op_IMAGE_ATOMIC_AND, +amdgpu_gfx908_op_IMAGE_ATOMIC_CMPSWAP, +amdgpu_gfx908_op_IMAGE_ATOMIC_DEC, +amdgpu_gfx908_op_IMAGE_ATOMIC_INC, +amdgpu_gfx908_op_IMAGE_ATOMIC_OR, +amdgpu_gfx908_op_IMAGE_ATOMIC_SMAX, +amdgpu_gfx908_op_IMAGE_ATOMIC_SMIN, +amdgpu_gfx908_op_IMAGE_ATOMIC_SUB, +amdgpu_gfx908_op_IMAGE_ATOMIC_SWAP, +amdgpu_gfx908_op_IMAGE_ATOMIC_UMAX, +amdgpu_gfx908_op_IMAGE_ATOMIC_UMIN, +amdgpu_gfx908_op_IMAGE_ATOMIC_XOR, +amdgpu_gfx908_op_IMAGE_GATHER4, +amdgpu_gfx908_op_IMAGE_GATHER4H, +amdgpu_gfx908_op_IMAGE_GATHER4H_PCK, +amdgpu_gfx908_op_IMAGE_GATHER4_B, +amdgpu_gfx908_op_IMAGE_GATHER4_B_CL, +amdgpu_gfx908_op_IMAGE_GATHER4_B_CL_O, +amdgpu_gfx908_op_IMAGE_GATHER4_B_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C, +amdgpu_gfx908_op_IMAGE_GATHER4_CL, +amdgpu_gfx908_op_IMAGE_GATHER4_CL_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C_B, +amdgpu_gfx908_op_IMAGE_GATHER4_C_B_CL, +amdgpu_gfx908_op_IMAGE_GATHER4_C_B_CL_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C_B_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C_CL, +amdgpu_gfx908_op_IMAGE_GATHER4_C_CL_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C_L, +amdgpu_gfx908_op_IMAGE_GATHER4_C_LZ, +amdgpu_gfx908_op_IMAGE_GATHER4_C_LZ_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C_L_O, +amdgpu_gfx908_op_IMAGE_GATHER4_C_O, +amdgpu_gfx908_op_IMAGE_GATHER4_L, +amdgpu_gfx908_op_IMAGE_GATHER4_LZ, +amdgpu_gfx908_op_IMAGE_GATHER4_LZ_O, +amdgpu_gfx908_op_IMAGE_GATHER4_L_O, +amdgpu_gfx908_op_IMAGE_GATHER4_O, +amdgpu_gfx908_op_IMAGE_GATHER8H_PCK, +amdgpu_gfx908_op_IMAGE_GET_LOD, +amdgpu_gfx908_op_IMAGE_GET_RESINFO, +amdgpu_gfx908_op_IMAGE_LOAD, +amdgpu_gfx908_op_IMAGE_LOAD_MIP, +amdgpu_gfx908_op_IMAGE_LOAD_MIP_PCK, +amdgpu_gfx908_op_IMAGE_LOAD_MIP_PCK_SGN, +amdgpu_gfx908_op_IMAGE_LOAD_PCK, +amdgpu_gfx908_op_IMAGE_LOAD_PCK_SGN, +amdgpu_gfx908_op_IMAGE_SAMPLE, +amdgpu_gfx908_op_IMAGE_SAMPLE_B, +amdgpu_gfx908_op_IMAGE_SAMPLE_B_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_B_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_B_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C, +amdgpu_gfx908_op_IMAGE_SAMPLE_CD, +amdgpu_gfx908_op_IMAGE_SAMPLE_CD_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_CD_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_CD_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_B, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_B_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_B_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_B_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_D, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_D_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_D_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_D_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_L, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_LZ, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_LZ_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_L_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_C_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_D, +amdgpu_gfx908_op_IMAGE_SAMPLE_D_CL, +amdgpu_gfx908_op_IMAGE_SAMPLE_D_CL_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_D_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_L, +amdgpu_gfx908_op_IMAGE_SAMPLE_LZ, +amdgpu_gfx908_op_IMAGE_SAMPLE_LZ_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_L_O, +amdgpu_gfx908_op_IMAGE_SAMPLE_O, +amdgpu_gfx908_op_IMAGE_STORE, +amdgpu_gfx908_op_IMAGE_STORE_MIP, +amdgpu_gfx908_op_IMAGE_STORE_MIP_PCK, +amdgpu_gfx908_op_IMAGE_STORE_PCK, +amdgpu_gfx908_op_SCRATCH_LOAD_DWORD, +amdgpu_gfx908_op_SCRATCH_LOAD_DWORDX2, +amdgpu_gfx908_op_SCRATCH_LOAD_DWORDX3, +amdgpu_gfx908_op_SCRATCH_LOAD_DWORDX4, +amdgpu_gfx908_op_SCRATCH_LOAD_SBYTE, +amdgpu_gfx908_op_SCRATCH_LOAD_SBYTE_D16, +amdgpu_gfx908_op_SCRATCH_LOAD_SBYTE_D16_HI, +amdgpu_gfx908_op_SCRATCH_LOAD_SHORT_D16, +amdgpu_gfx908_op_SCRATCH_LOAD_SHORT_D16_HI, +amdgpu_gfx908_op_SCRATCH_LOAD_SSHORT, +amdgpu_gfx908_op_SCRATCH_LOAD_UBYTE, +amdgpu_gfx908_op_SCRATCH_LOAD_UBYTE_D16, +amdgpu_gfx908_op_SCRATCH_LOAD_UBYTE_D16_HI, +amdgpu_gfx908_op_SCRATCH_LOAD_USHORT, +amdgpu_gfx908_op_SCRATCH_STORE_BYTE, +amdgpu_gfx908_op_SCRATCH_STORE_BYTE_D16_HI, +amdgpu_gfx908_op_SCRATCH_STORE_DWORD, +amdgpu_gfx908_op_SCRATCH_STORE_DWORDX2, +amdgpu_gfx908_op_SCRATCH_STORE_DWORDX3, +amdgpu_gfx908_op_SCRATCH_STORE_DWORDX4, +amdgpu_gfx908_op_SCRATCH_STORE_SHORT, +amdgpu_gfx908_op_SCRATCH_STORE_SHORT_D16_HI, +amdgpu_gfx908_op_S_ABSDIFF_I32, +amdgpu_gfx908_op_S_ABS_I32, +amdgpu_gfx908_op_S_ADDC_U32, +amdgpu_gfx908_op_S_ADDK_I32, +amdgpu_gfx908_op_S_ADD_I32, +amdgpu_gfx908_op_S_ADD_U32, +amdgpu_gfx908_op_S_ANDN1_SAVEEXEC_B64, +amdgpu_gfx908_op_S_ANDN1_WREXEC_B64, +amdgpu_gfx908_op_S_ANDN2_B32, +amdgpu_gfx908_op_S_ANDN2_B64, +amdgpu_gfx908_op_S_ANDN2_SAVEEXEC_B64, +amdgpu_gfx908_op_S_ANDN2_WREXEC_B64, +amdgpu_gfx908_op_S_AND_B32, +amdgpu_gfx908_op_S_AND_B64, +amdgpu_gfx908_op_S_AND_SAVEEXEC_B64, +amdgpu_gfx908_op_S_ASHR_I32, +amdgpu_gfx908_op_S_ASHR_I64, +amdgpu_gfx908_op_S_ATC_PROBE, +amdgpu_gfx908_op_S_ATC_PROBE_BUFFER, +amdgpu_gfx908_op_S_ATOMIC_ADD, +amdgpu_gfx908_op_S_ATOMIC_ADD_X2, +amdgpu_gfx908_op_S_ATOMIC_AND, +amdgpu_gfx908_op_S_ATOMIC_AND_X2, +amdgpu_gfx908_op_S_ATOMIC_CMPSWAP, +amdgpu_gfx908_op_S_ATOMIC_CMPSWAP_X2, +amdgpu_gfx908_op_S_ATOMIC_DEC, +amdgpu_gfx908_op_S_ATOMIC_DEC_X2, +amdgpu_gfx908_op_S_ATOMIC_INC, +amdgpu_gfx908_op_S_ATOMIC_INC_X2, +amdgpu_gfx908_op_S_ATOMIC_OR, +amdgpu_gfx908_op_S_ATOMIC_OR_X2, +amdgpu_gfx908_op_S_ATOMIC_SMAX, +amdgpu_gfx908_op_S_ATOMIC_SMAX_X2, +amdgpu_gfx908_op_S_ATOMIC_SMIN, +amdgpu_gfx908_op_S_ATOMIC_SMIN_X2, +amdgpu_gfx908_op_S_ATOMIC_SUB, +amdgpu_gfx908_op_S_ATOMIC_SUB_X2, +amdgpu_gfx908_op_S_ATOMIC_SWAP, +amdgpu_gfx908_op_S_ATOMIC_SWAP_X2, +amdgpu_gfx908_op_S_ATOMIC_UMAX, +amdgpu_gfx908_op_S_ATOMIC_UMAX_X2, +amdgpu_gfx908_op_S_ATOMIC_UMIN, +amdgpu_gfx908_op_S_ATOMIC_UMIN_X2, +amdgpu_gfx908_op_S_ATOMIC_XOR, +amdgpu_gfx908_op_S_ATOMIC_XOR_X2, +amdgpu_gfx908_op_S_BARRIER, +amdgpu_gfx908_op_S_BCNT0_I32_B32, +amdgpu_gfx908_op_S_BCNT0_I32_B64, +amdgpu_gfx908_op_S_BCNT1_I32_B32, +amdgpu_gfx908_op_S_BCNT1_I32_B64, +amdgpu_gfx908_op_S_BFE_I32, +amdgpu_gfx908_op_S_BFE_I64, +amdgpu_gfx908_op_S_BFE_U32, +amdgpu_gfx908_op_S_BFE_U64, +amdgpu_gfx908_op_S_BFM_B32, +amdgpu_gfx908_op_S_BFM_B64, +amdgpu_gfx908_op_S_BITCMP0_B32, +amdgpu_gfx908_op_S_BITCMP0_B64, +amdgpu_gfx908_op_S_BITCMP1_B32, +amdgpu_gfx908_op_S_BITCMP1_B64, +amdgpu_gfx908_op_S_BITREPLICATE_B64_B32, +amdgpu_gfx908_op_S_BITSET0_B32, +amdgpu_gfx908_op_S_BITSET0_B64, +amdgpu_gfx908_op_S_BITSET1_B32, +amdgpu_gfx908_op_S_BITSET1_B64, +amdgpu_gfx908_op_S_BRANCH, +amdgpu_gfx908_op_S_BREV_B32, +amdgpu_gfx908_op_S_BREV_B64, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_ADD, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_ADD_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_AND, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_AND_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_CMPSWAP, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_CMPSWAP_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_DEC, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_DEC_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_INC, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_INC_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_OR, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_OR_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMAX, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMAX_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMIN, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMIN_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SUB, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SUB_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SWAP, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_SWAP_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMAX, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMAX_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMIN, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMIN_X2, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_XOR, +amdgpu_gfx908_op_S_BUFFER_ATOMIC_XOR_X2, +amdgpu_gfx908_op_S_BUFFER_LOAD_DWORD, +amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX16, +amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX2, +amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX4, +amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX8, +amdgpu_gfx908_op_S_BUFFER_STORE_DWORD, +amdgpu_gfx908_op_S_BUFFER_STORE_DWORDX2, +amdgpu_gfx908_op_S_BUFFER_STORE_DWORDX4, +amdgpu_gfx908_op_S_CALL_B64, +amdgpu_gfx908_op_S_CBRANCH_CDBGSYS, +amdgpu_gfx908_op_S_CBRANCH_CDBGSYS_AND_USER, +amdgpu_gfx908_op_S_CBRANCH_CDBGSYS_OR_USER, +amdgpu_gfx908_op_S_CBRANCH_CDBGUSER, +amdgpu_gfx908_op_S_CBRANCH_EXECNZ, +amdgpu_gfx908_op_S_CBRANCH_EXECZ, +amdgpu_gfx908_op_S_CBRANCH_G_FORK, +amdgpu_gfx908_op_S_CBRANCH_I_FORK, +amdgpu_gfx908_op_S_CBRANCH_JOIN, +amdgpu_gfx908_op_S_CBRANCH_SCC0, +amdgpu_gfx908_op_S_CBRANCH_SCC1, +amdgpu_gfx908_op_S_CBRANCH_VCCNZ, +amdgpu_gfx908_op_S_CBRANCH_VCCZ, +amdgpu_gfx908_op_S_CMOVK_I32, +amdgpu_gfx908_op_S_CMOV_B32, +amdgpu_gfx908_op_S_CMOV_B64, +amdgpu_gfx908_op_S_CMPK_EQ_I32, +amdgpu_gfx908_op_S_CMPK_EQ_U32, +amdgpu_gfx908_op_S_CMPK_GE_I32, +amdgpu_gfx908_op_S_CMPK_GE_U32, +amdgpu_gfx908_op_S_CMPK_GT_I32, +amdgpu_gfx908_op_S_CMPK_GT_U32, +amdgpu_gfx908_op_S_CMPK_LE_I32, +amdgpu_gfx908_op_S_CMPK_LE_U32, +amdgpu_gfx908_op_S_CMPK_LG_I32, +amdgpu_gfx908_op_S_CMPK_LG_U32, +amdgpu_gfx908_op_S_CMPK_LT_I32, +amdgpu_gfx908_op_S_CMPK_LT_U32, +amdgpu_gfx908_op_S_CMP_EQ_I32, +amdgpu_gfx908_op_S_CMP_EQ_U32, +amdgpu_gfx908_op_S_CMP_EQ_U64, +amdgpu_gfx908_op_S_CMP_GE_I32, +amdgpu_gfx908_op_S_CMP_GE_U32, +amdgpu_gfx908_op_S_CMP_GT_I32, +amdgpu_gfx908_op_S_CMP_GT_U32, +amdgpu_gfx908_op_S_CMP_LE_I32, +amdgpu_gfx908_op_S_CMP_LE_U32, +amdgpu_gfx908_op_S_CMP_LG_I32, +amdgpu_gfx908_op_S_CMP_LG_U32, +amdgpu_gfx908_op_S_CMP_LG_U64, +amdgpu_gfx908_op_S_CMP_LT_I32, +amdgpu_gfx908_op_S_CMP_LT_U32, +amdgpu_gfx908_op_S_CSELECT_B32, +amdgpu_gfx908_op_S_CSELECT_B64, +amdgpu_gfx908_op_S_DCACHE_DISCARD, +amdgpu_gfx908_op_S_DCACHE_DISCARD_X2, +amdgpu_gfx908_op_S_DCACHE_INV, +amdgpu_gfx908_op_S_DCACHE_INV_VOL, +amdgpu_gfx908_op_S_DCACHE_WB, +amdgpu_gfx908_op_S_DCACHE_WB_VOL, +amdgpu_gfx908_op_S_DECPERFLEVEL, +amdgpu_gfx908_op_S_ENDPGM, +amdgpu_gfx908_op_S_ENDPGM_ORDERED_PS_DONE, +amdgpu_gfx908_op_S_ENDPGM_SAVED, +amdgpu_gfx908_op_S_FF0_I32_B32, +amdgpu_gfx908_op_S_FF0_I32_B64, +amdgpu_gfx908_op_S_FF1_I32_B32, +amdgpu_gfx908_op_S_FF1_I32_B64, +amdgpu_gfx908_op_S_FLBIT_I32, +amdgpu_gfx908_op_S_FLBIT_I32_B32, +amdgpu_gfx908_op_S_FLBIT_I32_B64, +amdgpu_gfx908_op_S_FLBIT_I32_I64, +amdgpu_gfx908_op_S_GETPC_B64, +amdgpu_gfx908_op_S_GETREG_B32, +amdgpu_gfx908_op_S_ICACHE_INV, +amdgpu_gfx908_op_S_INCPERFLEVEL, +amdgpu_gfx908_op_S_LOAD_DWORD, +amdgpu_gfx908_op_S_LOAD_DWORDX16, +amdgpu_gfx908_op_S_LOAD_DWORDX2, +amdgpu_gfx908_op_S_LOAD_DWORDX4, +amdgpu_gfx908_op_S_LOAD_DWORDX8, +amdgpu_gfx908_op_S_LSHL1_ADD_U32, +amdgpu_gfx908_op_S_LSHL2_ADD_U32, +amdgpu_gfx908_op_S_LSHL3_ADD_U32, +amdgpu_gfx908_op_S_LSHL4_ADD_U32, +amdgpu_gfx908_op_S_LSHL_B32, +amdgpu_gfx908_op_S_LSHL_B64, +amdgpu_gfx908_op_S_LSHR_B32, +amdgpu_gfx908_op_S_LSHR_B64, +amdgpu_gfx908_op_S_MAX_I32, +amdgpu_gfx908_op_S_MAX_U32, +amdgpu_gfx908_op_S_MEMREALTIME, +amdgpu_gfx908_op_S_MEMTIME, +amdgpu_gfx908_op_S_MIN_I32, +amdgpu_gfx908_op_S_MIN_U32, +amdgpu_gfx908_op_S_MOVK_I32, +amdgpu_gfx908_op_S_MOVRELD_B32, +amdgpu_gfx908_op_S_MOVRELD_B64, +amdgpu_gfx908_op_S_MOVRELS_B32, +amdgpu_gfx908_op_S_MOVRELS_B64, +amdgpu_gfx908_op_S_MOV_B32, +amdgpu_gfx908_op_S_MOV_B64, +amdgpu_gfx908_op_S_MULK_I32, +amdgpu_gfx908_op_S_MUL_HI_I32, +amdgpu_gfx908_op_S_MUL_HI_U32, +amdgpu_gfx908_op_S_MUL_I32, +amdgpu_gfx908_op_S_NAND_B32, +amdgpu_gfx908_op_S_NAND_B64, +amdgpu_gfx908_op_S_NAND_SAVEEXEC_B64, +amdgpu_gfx908_op_S_NOP, +amdgpu_gfx908_op_S_NOR_B32, +amdgpu_gfx908_op_S_NOR_B64, +amdgpu_gfx908_op_S_NOR_SAVEEXEC_B64, +amdgpu_gfx908_op_S_NOT_B32, +amdgpu_gfx908_op_S_NOT_B64, +amdgpu_gfx908_op_S_ORN1_SAVEEXEC_B64, +amdgpu_gfx908_op_S_ORN2_B32, +amdgpu_gfx908_op_S_ORN2_B64, +amdgpu_gfx908_op_S_ORN2_SAVEEXEC_B64, +amdgpu_gfx908_op_S_OR_B32, +amdgpu_gfx908_op_S_OR_B64, +amdgpu_gfx908_op_S_OR_SAVEEXEC_B64, +amdgpu_gfx908_op_S_PACK_HH_B32_B16, +amdgpu_gfx908_op_S_PACK_LH_B32_B16, +amdgpu_gfx908_op_S_PACK_LL_B32_B16, +amdgpu_gfx908_op_S_QUADMASK_B32, +amdgpu_gfx908_op_S_QUADMASK_B64, +amdgpu_gfx908_op_S_RFE_B64, +amdgpu_gfx908_op_S_RFE_RESTORE_B64, +amdgpu_gfx908_op_S_SCRATCH_LOAD_DWORD, +amdgpu_gfx908_op_S_SCRATCH_LOAD_DWORDX2, +amdgpu_gfx908_op_S_SCRATCH_LOAD_DWORDX4, +amdgpu_gfx908_op_S_SCRATCH_STORE_DWORD, +amdgpu_gfx908_op_S_SCRATCH_STORE_DWORDX2, +amdgpu_gfx908_op_S_SCRATCH_STORE_DWORDX4, +amdgpu_gfx908_op_S_SENDMSG, +amdgpu_gfx908_op_S_SENDMSGHALT, +amdgpu_gfx908_op_S_SETHALT, +amdgpu_gfx908_op_S_SETKILL, +amdgpu_gfx908_op_S_SETPC_B64, +amdgpu_gfx908_op_S_SETPRIO, +amdgpu_gfx908_op_S_SETREG_B32, +amdgpu_gfx908_op_S_SETREG_IMM32_B32, +amdgpu_gfx908_op_S_SETVSKIP, +amdgpu_gfx908_op_S_SET_GPR_IDX_IDX, +amdgpu_gfx908_op_S_SET_GPR_IDX_MODE, +amdgpu_gfx908_op_S_SET_GPR_IDX_OFF, +amdgpu_gfx908_op_S_SET_GPR_IDX_ON, +amdgpu_gfx908_op_S_SEXT_I32_I16, +amdgpu_gfx908_op_S_SEXT_I32_I8, +amdgpu_gfx908_op_S_SLEEP, +amdgpu_gfx908_op_S_STORE_DWORD, +amdgpu_gfx908_op_S_STORE_DWORDX2, +amdgpu_gfx908_op_S_STORE_DWORDX4, +amdgpu_gfx908_op_S_SUBB_U32, +amdgpu_gfx908_op_S_SUB_I32, +amdgpu_gfx908_op_S_SUB_U32, +amdgpu_gfx908_op_S_SWAPPC_B64, +amdgpu_gfx908_op_S_TRAP, +amdgpu_gfx908_op_S_TTRACEDATA, +amdgpu_gfx908_op_S_WAITCNT, +amdgpu_gfx908_op_S_WAKEUP, +amdgpu_gfx908_op_S_WQM_B32, +amdgpu_gfx908_op_S_WQM_B64, +amdgpu_gfx908_op_S_XNOR_B32, +amdgpu_gfx908_op_S_XNOR_B64, +amdgpu_gfx908_op_S_XNOR_SAVEEXEC_B64, +amdgpu_gfx908_op_S_XOR_B32, +amdgpu_gfx908_op_S_XOR_B64, +amdgpu_gfx908_op_S_XOR_SAVEEXEC_B64, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_X, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_XY, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_XYZ, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_XYZW, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_X, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_XY, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_XYZ, +amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_XYZW, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_X, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_XY, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_XYZ, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_XYZW, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_X, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_XY, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_XYZ, +amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_XYZW, +amdgpu_gfx908_op_V_ACCVGPR_READ, +amdgpu_gfx908_op_V_ACCVGPR_WRITE, +amdgpu_gfx908_op_V_ADD3_U32, +amdgpu_gfx908_op_V_ADDC_CO_U32, +amdgpu_gfx908_op_V_ADD_CO_U32, +amdgpu_gfx908_op_V_ADD_F16, +amdgpu_gfx908_op_V_ADD_F32, +amdgpu_gfx908_op_V_ADD_F64, +amdgpu_gfx908_op_V_ADD_I16, +amdgpu_gfx908_op_V_ADD_I32, +amdgpu_gfx908_op_V_ADD_LSHL_U32, +amdgpu_gfx908_op_V_ADD_U16, +amdgpu_gfx908_op_V_ADD_U32, +amdgpu_gfx908_op_V_ALIGNBIT_B32, +amdgpu_gfx908_op_V_ALIGNBYTE_B32, +amdgpu_gfx908_op_V_AND_B32, +amdgpu_gfx908_op_V_AND_OR_B32, +amdgpu_gfx908_op_V_ASHRREV_I16, +amdgpu_gfx908_op_V_ASHRREV_I32, +amdgpu_gfx908_op_V_ASHRREV_I64, +amdgpu_gfx908_op_V_BCNT_U32_B32, +amdgpu_gfx908_op_V_BFE_I32, +amdgpu_gfx908_op_V_BFE_U32, +amdgpu_gfx908_op_V_BFI_B32, +amdgpu_gfx908_op_V_BFM_B32, +amdgpu_gfx908_op_V_BFREV_B32, +amdgpu_gfx908_op_V_CEIL_F16, +amdgpu_gfx908_op_V_CEIL_F32, +amdgpu_gfx908_op_V_CEIL_F64, +amdgpu_gfx908_op_V_CLREXCP, +amdgpu_gfx908_op_V_CMPX_CLASS_F16, +amdgpu_gfx908_op_V_CMPX_CLASS_F32, +amdgpu_gfx908_op_V_CMPX_CLASS_F64, +amdgpu_gfx908_op_V_CMPX_EQ_F16, +amdgpu_gfx908_op_V_CMPX_EQ_F32, +amdgpu_gfx908_op_V_CMPX_EQ_F64, +amdgpu_gfx908_op_V_CMPX_EQ_I16, +amdgpu_gfx908_op_V_CMPX_EQ_I32, +amdgpu_gfx908_op_V_CMPX_EQ_I64, +amdgpu_gfx908_op_V_CMPX_EQ_U16, +amdgpu_gfx908_op_V_CMPX_EQ_U32, +amdgpu_gfx908_op_V_CMPX_EQ_U64, +amdgpu_gfx908_op_V_CMPX_F_F16, +amdgpu_gfx908_op_V_CMPX_F_F32, +amdgpu_gfx908_op_V_CMPX_F_F64, +amdgpu_gfx908_op_V_CMPX_F_I16, +amdgpu_gfx908_op_V_CMPX_F_I32, +amdgpu_gfx908_op_V_CMPX_F_I64, +amdgpu_gfx908_op_V_CMPX_F_U16, +amdgpu_gfx908_op_V_CMPX_F_U32, +amdgpu_gfx908_op_V_CMPX_F_U64, +amdgpu_gfx908_op_V_CMPX_GE_F16, +amdgpu_gfx908_op_V_CMPX_GE_F32, +amdgpu_gfx908_op_V_CMPX_GE_F64, +amdgpu_gfx908_op_V_CMPX_GE_I16, +amdgpu_gfx908_op_V_CMPX_GE_I32, +amdgpu_gfx908_op_V_CMPX_GE_I64, +amdgpu_gfx908_op_V_CMPX_GE_U16, +amdgpu_gfx908_op_V_CMPX_GE_U32, +amdgpu_gfx908_op_V_CMPX_GE_U64, +amdgpu_gfx908_op_V_CMPX_GT_F16, +amdgpu_gfx908_op_V_CMPX_GT_F32, +amdgpu_gfx908_op_V_CMPX_GT_F64, +amdgpu_gfx908_op_V_CMPX_GT_I16, +amdgpu_gfx908_op_V_CMPX_GT_I32, +amdgpu_gfx908_op_V_CMPX_GT_I64, +amdgpu_gfx908_op_V_CMPX_GT_U16, +amdgpu_gfx908_op_V_CMPX_GT_U32, +amdgpu_gfx908_op_V_CMPX_GT_U64, +amdgpu_gfx908_op_V_CMPX_LE_F16, +amdgpu_gfx908_op_V_CMPX_LE_F32, +amdgpu_gfx908_op_V_CMPX_LE_F64, +amdgpu_gfx908_op_V_CMPX_LE_I16, +amdgpu_gfx908_op_V_CMPX_LE_I32, +amdgpu_gfx908_op_V_CMPX_LE_I64, +amdgpu_gfx908_op_V_CMPX_LE_U16, +amdgpu_gfx908_op_V_CMPX_LE_U32, +amdgpu_gfx908_op_V_CMPX_LE_U64, +amdgpu_gfx908_op_V_CMPX_LG_F16, +amdgpu_gfx908_op_V_CMPX_LG_F32, +amdgpu_gfx908_op_V_CMPX_LG_F64, +amdgpu_gfx908_op_V_CMPX_LT_F16, +amdgpu_gfx908_op_V_CMPX_LT_F32, +amdgpu_gfx908_op_V_CMPX_LT_F64, +amdgpu_gfx908_op_V_CMPX_LT_I16, +amdgpu_gfx908_op_V_CMPX_LT_I32, +amdgpu_gfx908_op_V_CMPX_LT_I64, +amdgpu_gfx908_op_V_CMPX_LT_U16, +amdgpu_gfx908_op_V_CMPX_LT_U32, +amdgpu_gfx908_op_V_CMPX_LT_U64, +amdgpu_gfx908_op_V_CMPX_NEQ_F16, +amdgpu_gfx908_op_V_CMPX_NEQ_F32, +amdgpu_gfx908_op_V_CMPX_NEQ_F64, +amdgpu_gfx908_op_V_CMPX_NE_I16, +amdgpu_gfx908_op_V_CMPX_NE_I32, +amdgpu_gfx908_op_V_CMPX_NE_I64, +amdgpu_gfx908_op_V_CMPX_NE_U16, +amdgpu_gfx908_op_V_CMPX_NE_U32, +amdgpu_gfx908_op_V_CMPX_NE_U64, +amdgpu_gfx908_op_V_CMPX_NGE_F16, +amdgpu_gfx908_op_V_CMPX_NGE_F32, +amdgpu_gfx908_op_V_CMPX_NGE_F64, +amdgpu_gfx908_op_V_CMPX_NGT_F16, +amdgpu_gfx908_op_V_CMPX_NGT_F32, +amdgpu_gfx908_op_V_CMPX_NGT_F64, +amdgpu_gfx908_op_V_CMPX_NLE_F16, +amdgpu_gfx908_op_V_CMPX_NLE_F32, +amdgpu_gfx908_op_V_CMPX_NLE_F64, +amdgpu_gfx908_op_V_CMPX_NLG_F16, +amdgpu_gfx908_op_V_CMPX_NLG_F32, +amdgpu_gfx908_op_V_CMPX_NLG_F64, +amdgpu_gfx908_op_V_CMPX_NLT_F16, +amdgpu_gfx908_op_V_CMPX_NLT_F32, +amdgpu_gfx908_op_V_CMPX_NLT_F64, +amdgpu_gfx908_op_V_CMPX_O_F16, +amdgpu_gfx908_op_V_CMPX_O_F32, +amdgpu_gfx908_op_V_CMPX_O_F64, +amdgpu_gfx908_op_V_CMPX_TRU_F16, +amdgpu_gfx908_op_V_CMPX_TRU_F32, +amdgpu_gfx908_op_V_CMPX_TRU_F64, +amdgpu_gfx908_op_V_CMPX_T_I16, +amdgpu_gfx908_op_V_CMPX_T_I32, +amdgpu_gfx908_op_V_CMPX_T_I64, +amdgpu_gfx908_op_V_CMPX_T_U16, +amdgpu_gfx908_op_V_CMPX_T_U32, +amdgpu_gfx908_op_V_CMPX_T_U64, +amdgpu_gfx908_op_V_CMPX_U_F16, +amdgpu_gfx908_op_V_CMPX_U_F32, +amdgpu_gfx908_op_V_CMPX_U_F64, +amdgpu_gfx908_op_V_CMP_CLASS_F16, +amdgpu_gfx908_op_V_CMP_CLASS_F32, +amdgpu_gfx908_op_V_CMP_CLASS_F64, +amdgpu_gfx908_op_V_CMP_EQ_F16, +amdgpu_gfx908_op_V_CMP_EQ_F32, +amdgpu_gfx908_op_V_CMP_EQ_F64, +amdgpu_gfx908_op_V_CMP_EQ_I16, +amdgpu_gfx908_op_V_CMP_EQ_I32, +amdgpu_gfx908_op_V_CMP_EQ_I64, +amdgpu_gfx908_op_V_CMP_EQ_U16, +amdgpu_gfx908_op_V_CMP_EQ_U32, +amdgpu_gfx908_op_V_CMP_EQ_U64, +amdgpu_gfx908_op_V_CMP_F_F16, +amdgpu_gfx908_op_V_CMP_F_F32, +amdgpu_gfx908_op_V_CMP_F_F64, +amdgpu_gfx908_op_V_CMP_F_I16, +amdgpu_gfx908_op_V_CMP_F_I32, +amdgpu_gfx908_op_V_CMP_F_I64, +amdgpu_gfx908_op_V_CMP_F_U16, +amdgpu_gfx908_op_V_CMP_F_U32, +amdgpu_gfx908_op_V_CMP_F_U64, +amdgpu_gfx908_op_V_CMP_GE_F16, +amdgpu_gfx908_op_V_CMP_GE_F32, +amdgpu_gfx908_op_V_CMP_GE_F64, +amdgpu_gfx908_op_V_CMP_GE_I16, +amdgpu_gfx908_op_V_CMP_GE_I32, +amdgpu_gfx908_op_V_CMP_GE_I64, +amdgpu_gfx908_op_V_CMP_GE_U16, +amdgpu_gfx908_op_V_CMP_GE_U32, +amdgpu_gfx908_op_V_CMP_GE_U64, +amdgpu_gfx908_op_V_CMP_GT_F16, +amdgpu_gfx908_op_V_CMP_GT_F32, +amdgpu_gfx908_op_V_CMP_GT_F64, +amdgpu_gfx908_op_V_CMP_GT_I16, +amdgpu_gfx908_op_V_CMP_GT_I32, +amdgpu_gfx908_op_V_CMP_GT_I64, +amdgpu_gfx908_op_V_CMP_GT_U16, +amdgpu_gfx908_op_V_CMP_GT_U32, +amdgpu_gfx908_op_V_CMP_GT_U64, +amdgpu_gfx908_op_V_CMP_LE_F16, +amdgpu_gfx908_op_V_CMP_LE_F32, +amdgpu_gfx908_op_V_CMP_LE_F64, +amdgpu_gfx908_op_V_CMP_LE_I16, +amdgpu_gfx908_op_V_CMP_LE_I32, +amdgpu_gfx908_op_V_CMP_LE_I64, +amdgpu_gfx908_op_V_CMP_LE_U16, +amdgpu_gfx908_op_V_CMP_LE_U32, +amdgpu_gfx908_op_V_CMP_LE_U64, +amdgpu_gfx908_op_V_CMP_LG_F16, +amdgpu_gfx908_op_V_CMP_LG_F32, +amdgpu_gfx908_op_V_CMP_LG_F64, +amdgpu_gfx908_op_V_CMP_LT_F16, +amdgpu_gfx908_op_V_CMP_LT_F32, +amdgpu_gfx908_op_V_CMP_LT_F64, +amdgpu_gfx908_op_V_CMP_LT_I16, +amdgpu_gfx908_op_V_CMP_LT_I32, +amdgpu_gfx908_op_V_CMP_LT_I64, +amdgpu_gfx908_op_V_CMP_LT_U16, +amdgpu_gfx908_op_V_CMP_LT_U32, +amdgpu_gfx908_op_V_CMP_LT_U64, +amdgpu_gfx908_op_V_CMP_NEQ_F16, +amdgpu_gfx908_op_V_CMP_NEQ_F32, +amdgpu_gfx908_op_V_CMP_NEQ_F64, +amdgpu_gfx908_op_V_CMP_NE_I16, +amdgpu_gfx908_op_V_CMP_NE_I32, +amdgpu_gfx908_op_V_CMP_NE_I64, +amdgpu_gfx908_op_V_CMP_NE_U16, +amdgpu_gfx908_op_V_CMP_NE_U32, +amdgpu_gfx908_op_V_CMP_NE_U64, +amdgpu_gfx908_op_V_CMP_NGE_F16, +amdgpu_gfx908_op_V_CMP_NGE_F32, +amdgpu_gfx908_op_V_CMP_NGE_F64, +amdgpu_gfx908_op_V_CMP_NGT_F16, +amdgpu_gfx908_op_V_CMP_NGT_F32, +amdgpu_gfx908_op_V_CMP_NGT_F64, +amdgpu_gfx908_op_V_CMP_NLE_F16, +amdgpu_gfx908_op_V_CMP_NLE_F32, +amdgpu_gfx908_op_V_CMP_NLE_F64, +amdgpu_gfx908_op_V_CMP_NLG_F16, +amdgpu_gfx908_op_V_CMP_NLG_F32, +amdgpu_gfx908_op_V_CMP_NLG_F64, +amdgpu_gfx908_op_V_CMP_NLT_F16, +amdgpu_gfx908_op_V_CMP_NLT_F32, +amdgpu_gfx908_op_V_CMP_NLT_F64, +amdgpu_gfx908_op_V_CMP_O_F16, +amdgpu_gfx908_op_V_CMP_O_F32, +amdgpu_gfx908_op_V_CMP_O_F64, +amdgpu_gfx908_op_V_CMP_TRU_F16, +amdgpu_gfx908_op_V_CMP_TRU_F32, +amdgpu_gfx908_op_V_CMP_TRU_F64, +amdgpu_gfx908_op_V_CMP_T_I16, +amdgpu_gfx908_op_V_CMP_T_I32, +amdgpu_gfx908_op_V_CMP_T_I64, +amdgpu_gfx908_op_V_CMP_T_U16, +amdgpu_gfx908_op_V_CMP_T_U32, +amdgpu_gfx908_op_V_CMP_T_U64, +amdgpu_gfx908_op_V_CMP_U_F16, +amdgpu_gfx908_op_V_CMP_U_F32, +amdgpu_gfx908_op_V_CMP_U_F64, +amdgpu_gfx908_op_V_CNDMASK_B32, +amdgpu_gfx908_op_V_COS_F16, +amdgpu_gfx908_op_V_COS_F32, +amdgpu_gfx908_op_V_CUBEID_F32, +amdgpu_gfx908_op_V_CUBEMA_F32, +amdgpu_gfx908_op_V_CUBESC_F32, +amdgpu_gfx908_op_V_CUBETC_F32, +amdgpu_gfx908_op_V_CVT_F16_F32, +amdgpu_gfx908_op_V_CVT_F16_I16, +amdgpu_gfx908_op_V_CVT_F16_U16, +amdgpu_gfx908_op_V_CVT_F32_F16, +amdgpu_gfx908_op_V_CVT_F32_F64, +amdgpu_gfx908_op_V_CVT_F32_I32, +amdgpu_gfx908_op_V_CVT_F32_U32, +amdgpu_gfx908_op_V_CVT_F32_UBYTE0, +amdgpu_gfx908_op_V_CVT_F32_UBYTE1, +amdgpu_gfx908_op_V_CVT_F32_UBYTE2, +amdgpu_gfx908_op_V_CVT_F32_UBYTE3, +amdgpu_gfx908_op_V_CVT_F64_F32, +amdgpu_gfx908_op_V_CVT_F64_I32, +amdgpu_gfx908_op_V_CVT_F64_U32, +amdgpu_gfx908_op_V_CVT_FLR_I32_F32, +amdgpu_gfx908_op_V_CVT_I16_F16, +amdgpu_gfx908_op_V_CVT_I32_F32, +amdgpu_gfx908_op_V_CVT_I32_F64, +amdgpu_gfx908_op_V_CVT_NORM_I16_F16, +amdgpu_gfx908_op_V_CVT_NORM_U16_F16, +amdgpu_gfx908_op_V_CVT_OFF_F32_I4, +amdgpu_gfx908_op_V_CVT_PKACCUM_U8_F32, +amdgpu_gfx908_op_V_CVT_PKNORM_I16_F16, +amdgpu_gfx908_op_V_CVT_PKNORM_I16_F32, +amdgpu_gfx908_op_V_CVT_PKNORM_U16_F16, +amdgpu_gfx908_op_V_CVT_PKNORM_U16_F32, +amdgpu_gfx908_op_V_CVT_PKRTZ_F16_F32, +amdgpu_gfx908_op_V_CVT_PK_I16_I32, +amdgpu_gfx908_op_V_CVT_PK_U16_U32, +amdgpu_gfx908_op_V_CVT_PK_U8_F32, +amdgpu_gfx908_op_V_CVT_RPI_I32_F32, +amdgpu_gfx908_op_V_CVT_U16_F16, +amdgpu_gfx908_op_V_CVT_U32_F32, +amdgpu_gfx908_op_V_CVT_U32_F64, +amdgpu_gfx908_op_V_DIV_FIXUP_F16, +amdgpu_gfx908_op_V_DIV_FIXUP_F32, +amdgpu_gfx908_op_V_DIV_FIXUP_F64, +amdgpu_gfx908_op_V_DIV_FIXUP_LEGACY_F16, +amdgpu_gfx908_op_V_DIV_FMAS_F32, +amdgpu_gfx908_op_V_DIV_FMAS_F64, +amdgpu_gfx908_op_V_DIV_SCALE_F32, +amdgpu_gfx908_op_V_DIV_SCALE_F64, +amdgpu_gfx908_op_V_DOT2C_F32_F16, +amdgpu_gfx908_op_V_DOT2C_I32_I16, +amdgpu_gfx908_op_V_DOT2_F32_F16, +amdgpu_gfx908_op_V_DOT2_I32_I16, +amdgpu_gfx908_op_V_DOT2_U32_U16, +amdgpu_gfx908_op_V_DOT4C_I32_I8, +amdgpu_gfx908_op_V_DOT4_I32_I8, +amdgpu_gfx908_op_V_DOT4_U32_U8, +amdgpu_gfx908_op_V_DOT8C_I32_I4, +amdgpu_gfx908_op_V_DOT8_I32_I4, +amdgpu_gfx908_op_V_DOT8_U32_U4, +amdgpu_gfx908_op_V_EXP_F16, +amdgpu_gfx908_op_V_EXP_F32, +amdgpu_gfx908_op_V_EXP_LEGACY_F32, +amdgpu_gfx908_op_V_FFBH_I32, +amdgpu_gfx908_op_V_FFBH_U32, +amdgpu_gfx908_op_V_FFBL_B32, +amdgpu_gfx908_op_V_FLOOR_F16, +amdgpu_gfx908_op_V_FLOOR_F32, +amdgpu_gfx908_op_V_FLOOR_F64, +amdgpu_gfx908_op_V_FMAC_F32, +amdgpu_gfx908_op_V_FMA_F16, +amdgpu_gfx908_op_V_FMA_F32, +amdgpu_gfx908_op_V_FMA_F64, +amdgpu_gfx908_op_V_FMA_LEGACY_F16, +amdgpu_gfx908_op_V_FRACT_F16, +amdgpu_gfx908_op_V_FRACT_F32, +amdgpu_gfx908_op_V_FRACT_F64, +amdgpu_gfx908_op_V_FREXP_EXP_I16_F16, +amdgpu_gfx908_op_V_FREXP_EXP_I32_F32, +amdgpu_gfx908_op_V_FREXP_EXP_I32_F64, +amdgpu_gfx908_op_V_FREXP_MANT_F16, +amdgpu_gfx908_op_V_FREXP_MANT_F32, +amdgpu_gfx908_op_V_FREXP_MANT_F64, +amdgpu_gfx908_op_V_INTERP_MOV_F32, +amdgpu_gfx908_op_V_INTERP_P1LL_F16, +amdgpu_gfx908_op_V_INTERP_P1LV_F16, +amdgpu_gfx908_op_V_INTERP_P1_F32, +amdgpu_gfx908_op_V_INTERP_P2_F16, +amdgpu_gfx908_op_V_INTERP_P2_F32, +amdgpu_gfx908_op_V_INTERP_P2_LEGACY_F16, +amdgpu_gfx908_op_V_LDEXP_F16, +amdgpu_gfx908_op_V_LDEXP_F32, +amdgpu_gfx908_op_V_LDEXP_F64, +amdgpu_gfx908_op_V_LERP_U8, +amdgpu_gfx908_op_V_LOG_F16, +amdgpu_gfx908_op_V_LOG_F32, +amdgpu_gfx908_op_V_LOG_LEGACY_F32, +amdgpu_gfx908_op_V_LSHLREV_B16, +amdgpu_gfx908_op_V_LSHLREV_B32, +amdgpu_gfx908_op_V_LSHLREV_B64, +amdgpu_gfx908_op_V_LSHL_ADD_U32, +amdgpu_gfx908_op_V_LSHL_OR_B32, +amdgpu_gfx908_op_V_LSHRREV_B16, +amdgpu_gfx908_op_V_LSHRREV_B32, +amdgpu_gfx908_op_V_LSHRREV_B64, +amdgpu_gfx908_op_V_MAC_F16, +amdgpu_gfx908_op_V_MAC_F32, +amdgpu_gfx908_op_V_MADAK_F16, +amdgpu_gfx908_op_V_MADAK_F32, +amdgpu_gfx908_op_V_MADMK_F16, +amdgpu_gfx908_op_V_MADMK_F32, +amdgpu_gfx908_op_V_MAD_F16, +amdgpu_gfx908_op_V_MAD_F32, +amdgpu_gfx908_op_V_MAD_I16, +amdgpu_gfx908_op_V_MAD_I32_I16, +amdgpu_gfx908_op_V_MAD_I32_I24, +amdgpu_gfx908_op_V_MAD_I64_I32, +amdgpu_gfx908_op_V_MAD_LEGACY_F16, +amdgpu_gfx908_op_V_MAD_LEGACY_F32, +amdgpu_gfx908_op_V_MAD_LEGACY_I16, +amdgpu_gfx908_op_V_MAD_LEGACY_U16, +amdgpu_gfx908_op_V_MAD_MIXHI_F16, +amdgpu_gfx908_op_V_MAD_MIXLO_F16, +amdgpu_gfx908_op_V_MAD_MIX_F32, +amdgpu_gfx908_op_V_MAD_U16, +amdgpu_gfx908_op_V_MAD_U32_U16, +amdgpu_gfx908_op_V_MAD_U32_U24, +amdgpu_gfx908_op_V_MAD_U64_U32, +amdgpu_gfx908_op_V_MAX3_F16, +amdgpu_gfx908_op_V_MAX3_F32, +amdgpu_gfx908_op_V_MAX3_I16, +amdgpu_gfx908_op_V_MAX3_I32, +amdgpu_gfx908_op_V_MAX3_U16, +amdgpu_gfx908_op_V_MAX3_U32, +amdgpu_gfx908_op_V_MAX_F16, +amdgpu_gfx908_op_V_MAX_F32, +amdgpu_gfx908_op_V_MAX_F64, +amdgpu_gfx908_op_V_MAX_I16, +amdgpu_gfx908_op_V_MAX_I32, +amdgpu_gfx908_op_V_MAX_U16, +amdgpu_gfx908_op_V_MAX_U32, +amdgpu_gfx908_op_V_MBCNT_HI_U32_B32, +amdgpu_gfx908_op_V_MBCNT_LO_U32_B32, +amdgpu_gfx908_op_V_MED3_F16, +amdgpu_gfx908_op_V_MED3_F32, +amdgpu_gfx908_op_V_MED3_I16, +amdgpu_gfx908_op_V_MED3_I32, +amdgpu_gfx908_op_V_MED3_U16, +amdgpu_gfx908_op_V_MED3_U32, +amdgpu_gfx908_op_V_MFMA_F32_16X16X16F16, +amdgpu_gfx908_op_V_MFMA_F32_16X16X1F32, +amdgpu_gfx908_op_V_MFMA_F32_16X16X2BF16, +amdgpu_gfx908_op_V_MFMA_F32_16X16X4F16, +amdgpu_gfx908_op_V_MFMA_F32_16X16X4F32, +amdgpu_gfx908_op_V_MFMA_F32_16X16X8BF16, +amdgpu_gfx908_op_V_MFMA_F32_32X32X1F32, +amdgpu_gfx908_op_V_MFMA_F32_32X32X2BF16, +amdgpu_gfx908_op_V_MFMA_F32_32X32X2F32, +amdgpu_gfx908_op_V_MFMA_F32_32X32X4BF16, +amdgpu_gfx908_op_V_MFMA_F32_32X32X4F16, +amdgpu_gfx908_op_V_MFMA_F32_32X32X8F16, +amdgpu_gfx908_op_V_MFMA_F32_4X4X1F32, +amdgpu_gfx908_op_V_MFMA_F32_4X4X2BF16, +amdgpu_gfx908_op_V_MFMA_F32_4X4X4F16, +amdgpu_gfx908_op_V_MFMA_I32_16X16X16I8, +amdgpu_gfx908_op_V_MFMA_I32_16X16X4I8, +amdgpu_gfx908_op_V_MFMA_I32_32X32X4I8, +amdgpu_gfx908_op_V_MFMA_I32_32X32X8I8, +amdgpu_gfx908_op_V_MFMA_I32_4X4X4I8, +amdgpu_gfx908_op_V_MIN3_F16, +amdgpu_gfx908_op_V_MIN3_F32, +amdgpu_gfx908_op_V_MIN3_I16, +amdgpu_gfx908_op_V_MIN3_I32, +amdgpu_gfx908_op_V_MIN3_U16, +amdgpu_gfx908_op_V_MIN3_U32, +amdgpu_gfx908_op_V_MIN_F16, +amdgpu_gfx908_op_V_MIN_F32, +amdgpu_gfx908_op_V_MIN_F64, +amdgpu_gfx908_op_V_MIN_I16, +amdgpu_gfx908_op_V_MIN_I32, +amdgpu_gfx908_op_V_MIN_U16, +amdgpu_gfx908_op_V_MIN_U32, +amdgpu_gfx908_op_V_MOV_B32, +amdgpu_gfx908_op_V_MQSAD_PK_U16_U8, +amdgpu_gfx908_op_V_MQSAD_U32_U8, +amdgpu_gfx908_op_V_MSAD_U8, +amdgpu_gfx908_op_V_MUL_F16, +amdgpu_gfx908_op_V_MUL_F32, +amdgpu_gfx908_op_V_MUL_F64, +amdgpu_gfx908_op_V_MUL_HI_I32, +amdgpu_gfx908_op_V_MUL_HI_I32_I24, +amdgpu_gfx908_op_V_MUL_HI_U32, +amdgpu_gfx908_op_V_MUL_HI_U32_U24, +amdgpu_gfx908_op_V_MUL_I32_I24, +amdgpu_gfx908_op_V_MUL_LEGACY_F32, +amdgpu_gfx908_op_V_MUL_LO_U16, +amdgpu_gfx908_op_V_MUL_LO_U32, +amdgpu_gfx908_op_V_MUL_U32_U24, +amdgpu_gfx908_op_V_NOP, +amdgpu_gfx908_op_V_NOT_B32, +amdgpu_gfx908_op_V_OR3_B32, +amdgpu_gfx908_op_V_OR_B32, +amdgpu_gfx908_op_V_PACK_B32_F16, +amdgpu_gfx908_op_V_PERM_B32, +amdgpu_gfx908_op_V_PK_ADD_F16, +amdgpu_gfx908_op_V_PK_ADD_I16, +amdgpu_gfx908_op_V_PK_ADD_U16, +amdgpu_gfx908_op_V_PK_ASHRREV_I16, +amdgpu_gfx908_op_V_PK_FMAC_F16, +amdgpu_gfx908_op_V_PK_FMA_F16, +amdgpu_gfx908_op_V_PK_LSHLREV_B16, +amdgpu_gfx908_op_V_PK_LSHRREV_B16, +amdgpu_gfx908_op_V_PK_MAD_I16, +amdgpu_gfx908_op_V_PK_MAD_U16, +amdgpu_gfx908_op_V_PK_MAX_F16, +amdgpu_gfx908_op_V_PK_MAX_I16, +amdgpu_gfx908_op_V_PK_MAX_U16, +amdgpu_gfx908_op_V_PK_MIN_F16, +amdgpu_gfx908_op_V_PK_MIN_I16, +amdgpu_gfx908_op_V_PK_MIN_U16, +amdgpu_gfx908_op_V_PK_MUL_F16, +amdgpu_gfx908_op_V_PK_MUL_LO_U16, +amdgpu_gfx908_op_V_PK_SUB_I16, +amdgpu_gfx908_op_V_PK_SUB_U16, +amdgpu_gfx908_op_V_QSAD_PK_U16_U8, +amdgpu_gfx908_op_V_RCP_F16, +amdgpu_gfx908_op_V_RCP_F32, +amdgpu_gfx908_op_V_RCP_F64, +amdgpu_gfx908_op_V_RCP_IFLAG_F32, +amdgpu_gfx908_op_V_READFIRSTLANE_B32, +amdgpu_gfx908_op_V_READLANE_B32, +amdgpu_gfx908_op_V_RNDNE_F16, +amdgpu_gfx908_op_V_RNDNE_F32, +amdgpu_gfx908_op_V_RNDNE_F64, +amdgpu_gfx908_op_V_RSQ_F16, +amdgpu_gfx908_op_V_RSQ_F32, +amdgpu_gfx908_op_V_RSQ_F64, +amdgpu_gfx908_op_V_SAD_HI_U8, +amdgpu_gfx908_op_V_SAD_U16, +amdgpu_gfx908_op_V_SAD_U32, +amdgpu_gfx908_op_V_SAD_U8, +amdgpu_gfx908_op_V_SAT_PK_U8_I16, +amdgpu_gfx908_op_V_SCREEN_PARTITION_4SE_B32, +amdgpu_gfx908_op_V_SIN_F16, +amdgpu_gfx908_op_V_SIN_F32, +amdgpu_gfx908_op_V_SQRT_F16, +amdgpu_gfx908_op_V_SQRT_F32, +amdgpu_gfx908_op_V_SQRT_F64, +amdgpu_gfx908_op_V_SUBBREV_CO_U32, +amdgpu_gfx908_op_V_SUBB_CO_U32, +amdgpu_gfx908_op_V_SUBREV_CO_U32, +amdgpu_gfx908_op_V_SUBREV_F16, +amdgpu_gfx908_op_V_SUBREV_F32, +amdgpu_gfx908_op_V_SUBREV_U16, +amdgpu_gfx908_op_V_SUBREV_U32, +amdgpu_gfx908_op_V_SUB_CO_U32, +amdgpu_gfx908_op_V_SUB_F16, +amdgpu_gfx908_op_V_SUB_F32, +amdgpu_gfx908_op_V_SUB_I16, +amdgpu_gfx908_op_V_SUB_I32, +amdgpu_gfx908_op_V_SUB_U16, +amdgpu_gfx908_op_V_SUB_U32, +amdgpu_gfx908_op_V_SWAP_B32, +amdgpu_gfx908_op_V_TRIG_PREOP_F64, +amdgpu_gfx908_op_V_TRUNC_F16, +amdgpu_gfx908_op_V_TRUNC_F32, +amdgpu_gfx908_op_V_TRUNC_F64, +amdgpu_gfx908_op_V_WRITELANE_B32, +amdgpu_gfx908_op_V_XAD_U32, +amdgpu_gfx908_op_V_XNOR_B32, +amdgpu_gfx908_op_V_XOR_B32, diff --git a/common/h/AMDGPU/gfx908/amdgpu_gfx908_sys_regs.h b/common/h/AMDGPU/gfx908/amdgpu_gfx908_sys_regs.h new file mode 100644 index 0000000000..df4bcc1162 --- /dev/null +++ b/common/h/AMDGPU/gfx908/amdgpu_gfx908_sys_regs.h @@ -0,0 +1,617 @@ +#ifndef DYNINST_AMDGPU_GFX908_SYS_REGS_H +#define DYNINST_AMDGPU_GFX908_SYS_REGS_H +DEF_REGISTER(s0, Arch_amdgpu_gfx908| SGPR | BITS_32 | 0 , "amdgpu_gfx908"); +DEF_REGISTER(s1, Arch_amdgpu_gfx908| SGPR | BITS_32 | 1 , "amdgpu_gfx908"); +DEF_REGISTER(s2, Arch_amdgpu_gfx908| SGPR | BITS_32 | 2 , "amdgpu_gfx908"); +DEF_REGISTER(s3, Arch_amdgpu_gfx908| SGPR | BITS_32 | 3 , "amdgpu_gfx908"); +DEF_REGISTER(s4, Arch_amdgpu_gfx908| SGPR | BITS_32 | 4 , "amdgpu_gfx908"); +DEF_REGISTER(s5, Arch_amdgpu_gfx908| SGPR | BITS_32 | 5 , "amdgpu_gfx908"); +DEF_REGISTER(s6, Arch_amdgpu_gfx908| SGPR | BITS_32 | 6 , "amdgpu_gfx908"); +DEF_REGISTER(s7, Arch_amdgpu_gfx908| SGPR | BITS_32 | 7 , "amdgpu_gfx908"); +DEF_REGISTER(s8, Arch_amdgpu_gfx908| SGPR | BITS_32 | 8 , "amdgpu_gfx908"); +DEF_REGISTER(s9, Arch_amdgpu_gfx908| SGPR | BITS_32 | 9 , "amdgpu_gfx908"); +DEF_REGISTER(s10, Arch_amdgpu_gfx908| SGPR | BITS_32 | 10 , "amdgpu_gfx908"); +DEF_REGISTER(s11, Arch_amdgpu_gfx908| SGPR | BITS_32 | 11 , "amdgpu_gfx908"); +DEF_REGISTER(s12, Arch_amdgpu_gfx908| SGPR | BITS_32 | 12 , "amdgpu_gfx908"); +DEF_REGISTER(s13, Arch_amdgpu_gfx908| SGPR | BITS_32 | 13 , "amdgpu_gfx908"); +DEF_REGISTER(s14, Arch_amdgpu_gfx908| SGPR | BITS_32 | 14 , "amdgpu_gfx908"); +DEF_REGISTER(s15, Arch_amdgpu_gfx908| SGPR | BITS_32 | 15 , "amdgpu_gfx908"); +DEF_REGISTER(s16, Arch_amdgpu_gfx908| SGPR | BITS_32 | 16 , "amdgpu_gfx908"); +DEF_REGISTER(s17, Arch_amdgpu_gfx908| SGPR | BITS_32 | 17 , "amdgpu_gfx908"); +DEF_REGISTER(s18, Arch_amdgpu_gfx908| SGPR | BITS_32 | 18 , "amdgpu_gfx908"); +DEF_REGISTER(s19, Arch_amdgpu_gfx908| SGPR | BITS_32 | 19 , "amdgpu_gfx908"); +DEF_REGISTER(s20, Arch_amdgpu_gfx908| SGPR | BITS_32 | 20 , "amdgpu_gfx908"); +DEF_REGISTER(s21, Arch_amdgpu_gfx908| SGPR | BITS_32 | 21 , "amdgpu_gfx908"); +DEF_REGISTER(s22, Arch_amdgpu_gfx908| SGPR | BITS_32 | 22 , "amdgpu_gfx908"); +DEF_REGISTER(s23, Arch_amdgpu_gfx908| SGPR | BITS_32 | 23 , "amdgpu_gfx908"); +DEF_REGISTER(s24, Arch_amdgpu_gfx908| SGPR | BITS_32 | 24 , "amdgpu_gfx908"); +DEF_REGISTER(s25, Arch_amdgpu_gfx908| SGPR | BITS_32 | 25 , "amdgpu_gfx908"); +DEF_REGISTER(s26, Arch_amdgpu_gfx908| SGPR | BITS_32 | 26 , "amdgpu_gfx908"); +DEF_REGISTER(s27, Arch_amdgpu_gfx908| SGPR | BITS_32 | 27 , "amdgpu_gfx908"); +DEF_REGISTER(s28, Arch_amdgpu_gfx908| SGPR | BITS_32 | 28 , "amdgpu_gfx908"); +DEF_REGISTER(s29, Arch_amdgpu_gfx908| SGPR | BITS_32 | 29 , "amdgpu_gfx908"); +DEF_REGISTER(s30, Arch_amdgpu_gfx908| SGPR | BITS_32 | 30 , "amdgpu_gfx908"); +DEF_REGISTER(s31, Arch_amdgpu_gfx908| SGPR | BITS_32 | 31 , "amdgpu_gfx908"); +DEF_REGISTER(s32, Arch_amdgpu_gfx908| SGPR | BITS_32 | 32 , "amdgpu_gfx908"); +DEF_REGISTER(s33, Arch_amdgpu_gfx908| SGPR | BITS_32 | 33 , "amdgpu_gfx908"); +DEF_REGISTER(s34, Arch_amdgpu_gfx908| SGPR | BITS_32 | 34 , "amdgpu_gfx908"); +DEF_REGISTER(s35, Arch_amdgpu_gfx908| SGPR | BITS_32 | 35 , "amdgpu_gfx908"); +DEF_REGISTER(s36, Arch_amdgpu_gfx908| SGPR | BITS_32 | 36 , "amdgpu_gfx908"); +DEF_REGISTER(s37, Arch_amdgpu_gfx908| SGPR | BITS_32 | 37 , "amdgpu_gfx908"); +DEF_REGISTER(s38, Arch_amdgpu_gfx908| SGPR | BITS_32 | 38 , "amdgpu_gfx908"); +DEF_REGISTER(s39, Arch_amdgpu_gfx908| SGPR | BITS_32 | 39 , "amdgpu_gfx908"); +DEF_REGISTER(s40, Arch_amdgpu_gfx908| SGPR | BITS_32 | 40 , "amdgpu_gfx908"); +DEF_REGISTER(s41, Arch_amdgpu_gfx908| SGPR | BITS_32 | 41 , "amdgpu_gfx908"); +DEF_REGISTER(s42, Arch_amdgpu_gfx908| SGPR | BITS_32 | 42 , "amdgpu_gfx908"); +DEF_REGISTER(s43, Arch_amdgpu_gfx908| SGPR | BITS_32 | 43 , "amdgpu_gfx908"); +DEF_REGISTER(s44, Arch_amdgpu_gfx908| SGPR | BITS_32 | 44 , "amdgpu_gfx908"); +DEF_REGISTER(s45, Arch_amdgpu_gfx908| SGPR | BITS_32 | 45 , "amdgpu_gfx908"); +DEF_REGISTER(s46, Arch_amdgpu_gfx908| SGPR | BITS_32 | 46 , "amdgpu_gfx908"); +DEF_REGISTER(s47, Arch_amdgpu_gfx908| SGPR | BITS_32 | 47 , "amdgpu_gfx908"); +DEF_REGISTER(s48, Arch_amdgpu_gfx908| SGPR | BITS_32 | 48 , "amdgpu_gfx908"); +DEF_REGISTER(s49, Arch_amdgpu_gfx908| SGPR | BITS_32 | 49 , "amdgpu_gfx908"); +DEF_REGISTER(s50, Arch_amdgpu_gfx908| SGPR | BITS_32 | 50 , "amdgpu_gfx908"); +DEF_REGISTER(s51, Arch_amdgpu_gfx908| SGPR | BITS_32 | 51 , "amdgpu_gfx908"); +DEF_REGISTER(s52, Arch_amdgpu_gfx908| SGPR | BITS_32 | 52 , "amdgpu_gfx908"); +DEF_REGISTER(s53, Arch_amdgpu_gfx908| SGPR | BITS_32 | 53 , "amdgpu_gfx908"); +DEF_REGISTER(s54, Arch_amdgpu_gfx908| SGPR | BITS_32 | 54 , "amdgpu_gfx908"); +DEF_REGISTER(s55, Arch_amdgpu_gfx908| SGPR | BITS_32 | 55 , "amdgpu_gfx908"); +DEF_REGISTER(s56, Arch_amdgpu_gfx908| SGPR | BITS_32 | 56 , "amdgpu_gfx908"); +DEF_REGISTER(s57, Arch_amdgpu_gfx908| SGPR | BITS_32 | 57 , "amdgpu_gfx908"); +DEF_REGISTER(s58, Arch_amdgpu_gfx908| SGPR | BITS_32 | 58 , "amdgpu_gfx908"); +DEF_REGISTER(s59, Arch_amdgpu_gfx908| SGPR | BITS_32 | 59 , "amdgpu_gfx908"); +DEF_REGISTER(s60, Arch_amdgpu_gfx908| SGPR | BITS_32 | 60 , "amdgpu_gfx908"); +DEF_REGISTER(s61, Arch_amdgpu_gfx908| SGPR | BITS_32 | 61 , "amdgpu_gfx908"); +DEF_REGISTER(s62, Arch_amdgpu_gfx908| SGPR | BITS_32 | 62 , "amdgpu_gfx908"); +DEF_REGISTER(s63, Arch_amdgpu_gfx908| SGPR | BITS_32 | 63 , "amdgpu_gfx908"); +DEF_REGISTER(s64, Arch_amdgpu_gfx908| SGPR | BITS_32 | 64 , "amdgpu_gfx908"); +DEF_REGISTER(s65, Arch_amdgpu_gfx908| SGPR | BITS_32 | 65 , "amdgpu_gfx908"); +DEF_REGISTER(s66, Arch_amdgpu_gfx908| SGPR | BITS_32 | 66 , "amdgpu_gfx908"); +DEF_REGISTER(s67, Arch_amdgpu_gfx908| SGPR | BITS_32 | 67 , "amdgpu_gfx908"); +DEF_REGISTER(s68, Arch_amdgpu_gfx908| SGPR | BITS_32 | 68 , "amdgpu_gfx908"); +DEF_REGISTER(s69, Arch_amdgpu_gfx908| SGPR | BITS_32 | 69 , "amdgpu_gfx908"); +DEF_REGISTER(s70, Arch_amdgpu_gfx908| SGPR | BITS_32 | 70 , "amdgpu_gfx908"); +DEF_REGISTER(s71, Arch_amdgpu_gfx908| SGPR | BITS_32 | 71 , "amdgpu_gfx908"); +DEF_REGISTER(s72, Arch_amdgpu_gfx908| SGPR | BITS_32 | 72 , "amdgpu_gfx908"); +DEF_REGISTER(s73, Arch_amdgpu_gfx908| SGPR | BITS_32 | 73 , "amdgpu_gfx908"); +DEF_REGISTER(s74, Arch_amdgpu_gfx908| SGPR | BITS_32 | 74 , "amdgpu_gfx908"); +DEF_REGISTER(s75, Arch_amdgpu_gfx908| SGPR | BITS_32 | 75 , "amdgpu_gfx908"); +DEF_REGISTER(s76, Arch_amdgpu_gfx908| SGPR | BITS_32 | 76 , "amdgpu_gfx908"); +DEF_REGISTER(s77, Arch_amdgpu_gfx908| SGPR | BITS_32 | 77 , "amdgpu_gfx908"); +DEF_REGISTER(s78, Arch_amdgpu_gfx908| SGPR | BITS_32 | 78 , "amdgpu_gfx908"); +DEF_REGISTER(s79, Arch_amdgpu_gfx908| SGPR | BITS_32 | 79 , "amdgpu_gfx908"); +DEF_REGISTER(s80, Arch_amdgpu_gfx908| SGPR | BITS_32 | 80 , "amdgpu_gfx908"); +DEF_REGISTER(s81, Arch_amdgpu_gfx908| SGPR | BITS_32 | 81 , "amdgpu_gfx908"); +DEF_REGISTER(s82, Arch_amdgpu_gfx908| SGPR | BITS_32 | 82 , "amdgpu_gfx908"); +DEF_REGISTER(s83, Arch_amdgpu_gfx908| SGPR | BITS_32 | 83 , "amdgpu_gfx908"); +DEF_REGISTER(s84, Arch_amdgpu_gfx908| SGPR | BITS_32 | 84 , "amdgpu_gfx908"); +DEF_REGISTER(s85, Arch_amdgpu_gfx908| SGPR | BITS_32 | 85 , "amdgpu_gfx908"); +DEF_REGISTER(s86, Arch_amdgpu_gfx908| SGPR | BITS_32 | 86 , "amdgpu_gfx908"); +DEF_REGISTER(s87, Arch_amdgpu_gfx908| SGPR | BITS_32 | 87 , "amdgpu_gfx908"); +DEF_REGISTER(s88, Arch_amdgpu_gfx908| SGPR | BITS_32 | 88 , "amdgpu_gfx908"); +DEF_REGISTER(s89, Arch_amdgpu_gfx908| SGPR | BITS_32 | 89 , "amdgpu_gfx908"); +DEF_REGISTER(s90, Arch_amdgpu_gfx908| SGPR | BITS_32 | 90 , "amdgpu_gfx908"); +DEF_REGISTER(s91, Arch_amdgpu_gfx908| SGPR | BITS_32 | 91 , "amdgpu_gfx908"); +DEF_REGISTER(s92, Arch_amdgpu_gfx908| SGPR | BITS_32 | 92 , "amdgpu_gfx908"); +DEF_REGISTER(s93, Arch_amdgpu_gfx908| SGPR | BITS_32 | 93 , "amdgpu_gfx908"); +DEF_REGISTER(s94, Arch_amdgpu_gfx908| SGPR | BITS_32 | 94 , "amdgpu_gfx908"); +DEF_REGISTER(s95, Arch_amdgpu_gfx908| SGPR | BITS_32 | 95 , "amdgpu_gfx908"); +DEF_REGISTER(s96, Arch_amdgpu_gfx908| SGPR | BITS_32 | 96 , "amdgpu_gfx908"); +DEF_REGISTER(s97, Arch_amdgpu_gfx908| SGPR | BITS_32 | 97 , "amdgpu_gfx908"); +DEF_REGISTER(s98, Arch_amdgpu_gfx908| SGPR | BITS_32 | 98 , "amdgpu_gfx908"); +DEF_REGISTER(s99, Arch_amdgpu_gfx908| SGPR | BITS_32 | 99 , "amdgpu_gfx908"); +DEF_REGISTER(s100, Arch_amdgpu_gfx908| SGPR | BITS_32 | 100 , "amdgpu_gfx908"); +DEF_REGISTER(s101, Arch_amdgpu_gfx908| SGPR | BITS_32 | 101 , "amdgpu_gfx908"); +DEF_REGISTER(v0, Arch_amdgpu_gfx908| VGPR | BITS_32 | 0 , "amdgpu_gfx908"); +DEF_REGISTER(v1, Arch_amdgpu_gfx908| VGPR | BITS_32 | 1 , "amdgpu_gfx908"); +DEF_REGISTER(v2, Arch_amdgpu_gfx908| VGPR | BITS_32 | 2 , "amdgpu_gfx908"); +DEF_REGISTER(v3, Arch_amdgpu_gfx908| VGPR | BITS_32 | 3 , "amdgpu_gfx908"); +DEF_REGISTER(v4, Arch_amdgpu_gfx908| VGPR | BITS_32 | 4 , "amdgpu_gfx908"); +DEF_REGISTER(v5, Arch_amdgpu_gfx908| VGPR | BITS_32 | 5 , "amdgpu_gfx908"); +DEF_REGISTER(v6, Arch_amdgpu_gfx908| VGPR | BITS_32 | 6 , "amdgpu_gfx908"); +DEF_REGISTER(v7, Arch_amdgpu_gfx908| VGPR | BITS_32 | 7 , "amdgpu_gfx908"); +DEF_REGISTER(v8, Arch_amdgpu_gfx908| VGPR | BITS_32 | 8 , "amdgpu_gfx908"); +DEF_REGISTER(v9, Arch_amdgpu_gfx908| VGPR | BITS_32 | 9 , "amdgpu_gfx908"); +DEF_REGISTER(v10, Arch_amdgpu_gfx908| VGPR | BITS_32 | 10 , "amdgpu_gfx908"); +DEF_REGISTER(v11, Arch_amdgpu_gfx908| VGPR | BITS_32 | 11 , "amdgpu_gfx908"); +DEF_REGISTER(v12, Arch_amdgpu_gfx908| VGPR | BITS_32 | 12 , "amdgpu_gfx908"); +DEF_REGISTER(v13, Arch_amdgpu_gfx908| VGPR | BITS_32 | 13 , "amdgpu_gfx908"); +DEF_REGISTER(v14, Arch_amdgpu_gfx908| VGPR | BITS_32 | 14 , "amdgpu_gfx908"); +DEF_REGISTER(v15, Arch_amdgpu_gfx908| VGPR | BITS_32 | 15 , "amdgpu_gfx908"); +DEF_REGISTER(v16, Arch_amdgpu_gfx908| VGPR | BITS_32 | 16 , "amdgpu_gfx908"); +DEF_REGISTER(v17, Arch_amdgpu_gfx908| VGPR | BITS_32 | 17 , "amdgpu_gfx908"); +DEF_REGISTER(v18, Arch_amdgpu_gfx908| VGPR | BITS_32 | 18 , "amdgpu_gfx908"); +DEF_REGISTER(v19, Arch_amdgpu_gfx908| VGPR | BITS_32 | 19 , "amdgpu_gfx908"); +DEF_REGISTER(v20, Arch_amdgpu_gfx908| VGPR | BITS_32 | 20 , "amdgpu_gfx908"); +DEF_REGISTER(v21, Arch_amdgpu_gfx908| VGPR | BITS_32 | 21 , "amdgpu_gfx908"); +DEF_REGISTER(v22, Arch_amdgpu_gfx908| VGPR | BITS_32 | 22 , "amdgpu_gfx908"); +DEF_REGISTER(v23, Arch_amdgpu_gfx908| VGPR | BITS_32 | 23 , "amdgpu_gfx908"); +DEF_REGISTER(v24, Arch_amdgpu_gfx908| VGPR | BITS_32 | 24 , "amdgpu_gfx908"); +DEF_REGISTER(v25, Arch_amdgpu_gfx908| VGPR | BITS_32 | 25 , "amdgpu_gfx908"); +DEF_REGISTER(v26, Arch_amdgpu_gfx908| VGPR | BITS_32 | 26 , "amdgpu_gfx908"); +DEF_REGISTER(v27, Arch_amdgpu_gfx908| VGPR | BITS_32 | 27 , "amdgpu_gfx908"); +DEF_REGISTER(v28, Arch_amdgpu_gfx908| VGPR | BITS_32 | 28 , "amdgpu_gfx908"); +DEF_REGISTER(v29, Arch_amdgpu_gfx908| VGPR | BITS_32 | 29 , "amdgpu_gfx908"); +DEF_REGISTER(v30, Arch_amdgpu_gfx908| VGPR | BITS_32 | 30 , "amdgpu_gfx908"); +DEF_REGISTER(v31, Arch_amdgpu_gfx908| VGPR | BITS_32 | 31 , "amdgpu_gfx908"); +DEF_REGISTER(v32, Arch_amdgpu_gfx908| VGPR | BITS_32 | 32 , "amdgpu_gfx908"); +DEF_REGISTER(v33, Arch_amdgpu_gfx908| VGPR | BITS_32 | 33 , "amdgpu_gfx908"); +DEF_REGISTER(v34, Arch_amdgpu_gfx908| VGPR | BITS_32 | 34 , "amdgpu_gfx908"); +DEF_REGISTER(v35, Arch_amdgpu_gfx908| VGPR | BITS_32 | 35 , "amdgpu_gfx908"); +DEF_REGISTER(v36, Arch_amdgpu_gfx908| VGPR | BITS_32 | 36 , "amdgpu_gfx908"); +DEF_REGISTER(v37, Arch_amdgpu_gfx908| VGPR | BITS_32 | 37 , "amdgpu_gfx908"); +DEF_REGISTER(v38, Arch_amdgpu_gfx908| VGPR | BITS_32 | 38 , "amdgpu_gfx908"); +DEF_REGISTER(v39, Arch_amdgpu_gfx908| VGPR | BITS_32 | 39 , "amdgpu_gfx908"); +DEF_REGISTER(v40, Arch_amdgpu_gfx908| VGPR | BITS_32 | 40 , "amdgpu_gfx908"); +DEF_REGISTER(v41, Arch_amdgpu_gfx908| VGPR | BITS_32 | 41 , "amdgpu_gfx908"); +DEF_REGISTER(v42, Arch_amdgpu_gfx908| VGPR | BITS_32 | 42 , "amdgpu_gfx908"); +DEF_REGISTER(v43, Arch_amdgpu_gfx908| VGPR | BITS_32 | 43 , "amdgpu_gfx908"); +DEF_REGISTER(v44, Arch_amdgpu_gfx908| VGPR | BITS_32 | 44 , "amdgpu_gfx908"); +DEF_REGISTER(v45, Arch_amdgpu_gfx908| VGPR | BITS_32 | 45 , "amdgpu_gfx908"); +DEF_REGISTER(v46, Arch_amdgpu_gfx908| VGPR | BITS_32 | 46 , "amdgpu_gfx908"); +DEF_REGISTER(v47, Arch_amdgpu_gfx908| VGPR | BITS_32 | 47 , "amdgpu_gfx908"); +DEF_REGISTER(v48, Arch_amdgpu_gfx908| VGPR | BITS_32 | 48 , "amdgpu_gfx908"); +DEF_REGISTER(v49, Arch_amdgpu_gfx908| VGPR | BITS_32 | 49 , "amdgpu_gfx908"); +DEF_REGISTER(v50, Arch_amdgpu_gfx908| VGPR | BITS_32 | 50 , "amdgpu_gfx908"); +DEF_REGISTER(v51, Arch_amdgpu_gfx908| VGPR | BITS_32 | 51 , "amdgpu_gfx908"); +DEF_REGISTER(v52, Arch_amdgpu_gfx908| VGPR | BITS_32 | 52 , "amdgpu_gfx908"); +DEF_REGISTER(v53, Arch_amdgpu_gfx908| VGPR | BITS_32 | 53 , "amdgpu_gfx908"); +DEF_REGISTER(v54, Arch_amdgpu_gfx908| VGPR | BITS_32 | 54 , "amdgpu_gfx908"); +DEF_REGISTER(v55, Arch_amdgpu_gfx908| VGPR | BITS_32 | 55 , "amdgpu_gfx908"); +DEF_REGISTER(v56, Arch_amdgpu_gfx908| VGPR | BITS_32 | 56 , "amdgpu_gfx908"); +DEF_REGISTER(v57, Arch_amdgpu_gfx908| VGPR | BITS_32 | 57 , "amdgpu_gfx908"); +DEF_REGISTER(v58, Arch_amdgpu_gfx908| VGPR | BITS_32 | 58 , "amdgpu_gfx908"); +DEF_REGISTER(v59, Arch_amdgpu_gfx908| VGPR | BITS_32 | 59 , "amdgpu_gfx908"); +DEF_REGISTER(v60, Arch_amdgpu_gfx908| VGPR | BITS_32 | 60 , "amdgpu_gfx908"); +DEF_REGISTER(v61, Arch_amdgpu_gfx908| VGPR | BITS_32 | 61 , "amdgpu_gfx908"); +DEF_REGISTER(v62, Arch_amdgpu_gfx908| VGPR | BITS_32 | 62 , "amdgpu_gfx908"); +DEF_REGISTER(v63, Arch_amdgpu_gfx908| VGPR | BITS_32 | 63 , "amdgpu_gfx908"); +DEF_REGISTER(v64, Arch_amdgpu_gfx908| VGPR | BITS_32 | 64 , "amdgpu_gfx908"); +DEF_REGISTER(v65, Arch_amdgpu_gfx908| VGPR | BITS_32 | 65 , "amdgpu_gfx908"); +DEF_REGISTER(v66, Arch_amdgpu_gfx908| VGPR | BITS_32 | 66 , "amdgpu_gfx908"); +DEF_REGISTER(v67, Arch_amdgpu_gfx908| VGPR | BITS_32 | 67 , "amdgpu_gfx908"); +DEF_REGISTER(v68, Arch_amdgpu_gfx908| VGPR | BITS_32 | 68 , "amdgpu_gfx908"); +DEF_REGISTER(v69, Arch_amdgpu_gfx908| VGPR | BITS_32 | 69 , "amdgpu_gfx908"); +DEF_REGISTER(v70, Arch_amdgpu_gfx908| VGPR | BITS_32 | 70 , "amdgpu_gfx908"); +DEF_REGISTER(v71, Arch_amdgpu_gfx908| VGPR | BITS_32 | 71 , "amdgpu_gfx908"); +DEF_REGISTER(v72, Arch_amdgpu_gfx908| VGPR | BITS_32 | 72 , "amdgpu_gfx908"); +DEF_REGISTER(v73, Arch_amdgpu_gfx908| VGPR | BITS_32 | 73 , "amdgpu_gfx908"); +DEF_REGISTER(v74, Arch_amdgpu_gfx908| VGPR | BITS_32 | 74 , "amdgpu_gfx908"); +DEF_REGISTER(v75, Arch_amdgpu_gfx908| VGPR | BITS_32 | 75 , "amdgpu_gfx908"); +DEF_REGISTER(v76, Arch_amdgpu_gfx908| VGPR | BITS_32 | 76 , "amdgpu_gfx908"); +DEF_REGISTER(v77, Arch_amdgpu_gfx908| VGPR | BITS_32 | 77 , "amdgpu_gfx908"); +DEF_REGISTER(v78, Arch_amdgpu_gfx908| VGPR | BITS_32 | 78 , "amdgpu_gfx908"); +DEF_REGISTER(v79, Arch_amdgpu_gfx908| VGPR | BITS_32 | 79 , "amdgpu_gfx908"); +DEF_REGISTER(v80, Arch_amdgpu_gfx908| VGPR | BITS_32 | 80 , "amdgpu_gfx908"); +DEF_REGISTER(v81, Arch_amdgpu_gfx908| VGPR | BITS_32 | 81 , "amdgpu_gfx908"); +DEF_REGISTER(v82, Arch_amdgpu_gfx908| VGPR | BITS_32 | 82 , "amdgpu_gfx908"); +DEF_REGISTER(v83, Arch_amdgpu_gfx908| VGPR | BITS_32 | 83 , "amdgpu_gfx908"); +DEF_REGISTER(v84, Arch_amdgpu_gfx908| VGPR | BITS_32 | 84 , "amdgpu_gfx908"); +DEF_REGISTER(v85, Arch_amdgpu_gfx908| VGPR | BITS_32 | 85 , "amdgpu_gfx908"); +DEF_REGISTER(v86, Arch_amdgpu_gfx908| VGPR | BITS_32 | 86 , "amdgpu_gfx908"); +DEF_REGISTER(v87, Arch_amdgpu_gfx908| VGPR | BITS_32 | 87 , "amdgpu_gfx908"); +DEF_REGISTER(v88, Arch_amdgpu_gfx908| VGPR | BITS_32 | 88 , "amdgpu_gfx908"); +DEF_REGISTER(v89, Arch_amdgpu_gfx908| VGPR | BITS_32 | 89 , "amdgpu_gfx908"); +DEF_REGISTER(v90, Arch_amdgpu_gfx908| VGPR | BITS_32 | 90 , "amdgpu_gfx908"); +DEF_REGISTER(v91, Arch_amdgpu_gfx908| VGPR | BITS_32 | 91 , "amdgpu_gfx908"); +DEF_REGISTER(v92, Arch_amdgpu_gfx908| VGPR | BITS_32 | 92 , "amdgpu_gfx908"); +DEF_REGISTER(v93, Arch_amdgpu_gfx908| VGPR | BITS_32 | 93 , "amdgpu_gfx908"); +DEF_REGISTER(v94, Arch_amdgpu_gfx908| VGPR | BITS_32 | 94 , "amdgpu_gfx908"); +DEF_REGISTER(v95, Arch_amdgpu_gfx908| VGPR | BITS_32 | 95 , "amdgpu_gfx908"); +DEF_REGISTER(v96, Arch_amdgpu_gfx908| VGPR | BITS_32 | 96 , "amdgpu_gfx908"); +DEF_REGISTER(v97, Arch_amdgpu_gfx908| VGPR | BITS_32 | 97 , "amdgpu_gfx908"); +DEF_REGISTER(v98, Arch_amdgpu_gfx908| VGPR | BITS_32 | 98 , "amdgpu_gfx908"); +DEF_REGISTER(v99, Arch_amdgpu_gfx908| VGPR | BITS_32 | 99 , "amdgpu_gfx908"); +DEF_REGISTER(v100, Arch_amdgpu_gfx908| VGPR | BITS_32 | 100 , "amdgpu_gfx908"); +DEF_REGISTER(v101, Arch_amdgpu_gfx908| VGPR | BITS_32 | 101 , "amdgpu_gfx908"); +DEF_REGISTER(v102, Arch_amdgpu_gfx908| VGPR | BITS_32 | 102 , "amdgpu_gfx908"); +DEF_REGISTER(v103, Arch_amdgpu_gfx908| VGPR | BITS_32 | 103 , "amdgpu_gfx908"); +DEF_REGISTER(v104, Arch_amdgpu_gfx908| VGPR | BITS_32 | 104 , "amdgpu_gfx908"); +DEF_REGISTER(v105, Arch_amdgpu_gfx908| VGPR | BITS_32 | 105 , "amdgpu_gfx908"); +DEF_REGISTER(v106, Arch_amdgpu_gfx908| VGPR | BITS_32 | 106 , "amdgpu_gfx908"); +DEF_REGISTER(v107, Arch_amdgpu_gfx908| VGPR | BITS_32 | 107 , "amdgpu_gfx908"); +DEF_REGISTER(v108, Arch_amdgpu_gfx908| VGPR | BITS_32 | 108 , "amdgpu_gfx908"); +DEF_REGISTER(v109, Arch_amdgpu_gfx908| VGPR | BITS_32 | 109 , "amdgpu_gfx908"); +DEF_REGISTER(v110, Arch_amdgpu_gfx908| VGPR | BITS_32 | 110 , "amdgpu_gfx908"); +DEF_REGISTER(v111, Arch_amdgpu_gfx908| VGPR | BITS_32 | 111 , "amdgpu_gfx908"); +DEF_REGISTER(v112, Arch_amdgpu_gfx908| VGPR | BITS_32 | 112 , "amdgpu_gfx908"); +DEF_REGISTER(v113, Arch_amdgpu_gfx908| VGPR | BITS_32 | 113 , "amdgpu_gfx908"); +DEF_REGISTER(v114, Arch_amdgpu_gfx908| VGPR | BITS_32 | 114 , "amdgpu_gfx908"); +DEF_REGISTER(v115, Arch_amdgpu_gfx908| VGPR | BITS_32 | 115 , "amdgpu_gfx908"); +DEF_REGISTER(v116, Arch_amdgpu_gfx908| VGPR | BITS_32 | 116 , "amdgpu_gfx908"); +DEF_REGISTER(v117, Arch_amdgpu_gfx908| VGPR | BITS_32 | 117 , "amdgpu_gfx908"); +DEF_REGISTER(v118, Arch_amdgpu_gfx908| VGPR | BITS_32 | 118 , "amdgpu_gfx908"); +DEF_REGISTER(v119, Arch_amdgpu_gfx908| VGPR | BITS_32 | 119 , "amdgpu_gfx908"); +DEF_REGISTER(v120, Arch_amdgpu_gfx908| VGPR | BITS_32 | 120 , "amdgpu_gfx908"); +DEF_REGISTER(v121, Arch_amdgpu_gfx908| VGPR | BITS_32 | 121 , "amdgpu_gfx908"); +DEF_REGISTER(v122, Arch_amdgpu_gfx908| VGPR | BITS_32 | 122 , "amdgpu_gfx908"); +DEF_REGISTER(v123, Arch_amdgpu_gfx908| VGPR | BITS_32 | 123 , "amdgpu_gfx908"); +DEF_REGISTER(v124, Arch_amdgpu_gfx908| VGPR | BITS_32 | 124 , "amdgpu_gfx908"); +DEF_REGISTER(v125, Arch_amdgpu_gfx908| VGPR | BITS_32 | 125 , "amdgpu_gfx908"); +DEF_REGISTER(v126, Arch_amdgpu_gfx908| VGPR | BITS_32 | 126 , "amdgpu_gfx908"); +DEF_REGISTER(v127, Arch_amdgpu_gfx908| VGPR | BITS_32 | 127 , "amdgpu_gfx908"); +DEF_REGISTER(v128, Arch_amdgpu_gfx908| VGPR | BITS_32 | 128 , "amdgpu_gfx908"); +DEF_REGISTER(v129, Arch_amdgpu_gfx908| VGPR | BITS_32 | 129 , "amdgpu_gfx908"); +DEF_REGISTER(v130, Arch_amdgpu_gfx908| VGPR | BITS_32 | 130 , "amdgpu_gfx908"); +DEF_REGISTER(v131, Arch_amdgpu_gfx908| VGPR | BITS_32 | 131 , "amdgpu_gfx908"); +DEF_REGISTER(v132, Arch_amdgpu_gfx908| VGPR | BITS_32 | 132 , "amdgpu_gfx908"); +DEF_REGISTER(v133, Arch_amdgpu_gfx908| VGPR | BITS_32 | 133 , "amdgpu_gfx908"); +DEF_REGISTER(v134, Arch_amdgpu_gfx908| VGPR | BITS_32 | 134 , "amdgpu_gfx908"); +DEF_REGISTER(v135, Arch_amdgpu_gfx908| VGPR | BITS_32 | 135 , "amdgpu_gfx908"); +DEF_REGISTER(v136, Arch_amdgpu_gfx908| VGPR | BITS_32 | 136 , "amdgpu_gfx908"); +DEF_REGISTER(v137, Arch_amdgpu_gfx908| VGPR | BITS_32 | 137 , "amdgpu_gfx908"); +DEF_REGISTER(v138, Arch_amdgpu_gfx908| VGPR | BITS_32 | 138 , "amdgpu_gfx908"); +DEF_REGISTER(v139, Arch_amdgpu_gfx908| VGPR | BITS_32 | 139 , "amdgpu_gfx908"); +DEF_REGISTER(v140, Arch_amdgpu_gfx908| VGPR | BITS_32 | 140 , "amdgpu_gfx908"); +DEF_REGISTER(v141, Arch_amdgpu_gfx908| VGPR | BITS_32 | 141 , "amdgpu_gfx908"); +DEF_REGISTER(v142, Arch_amdgpu_gfx908| VGPR | BITS_32 | 142 , "amdgpu_gfx908"); +DEF_REGISTER(v143, Arch_amdgpu_gfx908| VGPR | BITS_32 | 143 , "amdgpu_gfx908"); +DEF_REGISTER(v144, Arch_amdgpu_gfx908| VGPR | BITS_32 | 144 , "amdgpu_gfx908"); +DEF_REGISTER(v145, Arch_amdgpu_gfx908| VGPR | BITS_32 | 145 , "amdgpu_gfx908"); +DEF_REGISTER(v146, Arch_amdgpu_gfx908| VGPR | BITS_32 | 146 , "amdgpu_gfx908"); +DEF_REGISTER(v147, Arch_amdgpu_gfx908| VGPR | BITS_32 | 147 , "amdgpu_gfx908"); +DEF_REGISTER(v148, Arch_amdgpu_gfx908| VGPR | BITS_32 | 148 , "amdgpu_gfx908"); +DEF_REGISTER(v149, Arch_amdgpu_gfx908| VGPR | BITS_32 | 149 , "amdgpu_gfx908"); +DEF_REGISTER(v150, Arch_amdgpu_gfx908| VGPR | BITS_32 | 150 , "amdgpu_gfx908"); +DEF_REGISTER(v151, Arch_amdgpu_gfx908| VGPR | BITS_32 | 151 , "amdgpu_gfx908"); +DEF_REGISTER(v152, Arch_amdgpu_gfx908| VGPR | BITS_32 | 152 , "amdgpu_gfx908"); +DEF_REGISTER(v153, Arch_amdgpu_gfx908| VGPR | BITS_32 | 153 , "amdgpu_gfx908"); +DEF_REGISTER(v154, Arch_amdgpu_gfx908| VGPR | BITS_32 | 154 , "amdgpu_gfx908"); +DEF_REGISTER(v155, Arch_amdgpu_gfx908| VGPR | BITS_32 | 155 , "amdgpu_gfx908"); +DEF_REGISTER(v156, Arch_amdgpu_gfx908| VGPR | BITS_32 | 156 , "amdgpu_gfx908"); +DEF_REGISTER(v157, Arch_amdgpu_gfx908| VGPR | BITS_32 | 157 , "amdgpu_gfx908"); +DEF_REGISTER(v158, Arch_amdgpu_gfx908| VGPR | BITS_32 | 158 , "amdgpu_gfx908"); +DEF_REGISTER(v159, Arch_amdgpu_gfx908| VGPR | BITS_32 | 159 , "amdgpu_gfx908"); +DEF_REGISTER(v160, Arch_amdgpu_gfx908| VGPR | BITS_32 | 160 , "amdgpu_gfx908"); +DEF_REGISTER(v161, Arch_amdgpu_gfx908| VGPR | BITS_32 | 161 , "amdgpu_gfx908"); +DEF_REGISTER(v162, Arch_amdgpu_gfx908| VGPR | BITS_32 | 162 , "amdgpu_gfx908"); +DEF_REGISTER(v163, Arch_amdgpu_gfx908| VGPR | BITS_32 | 163 , "amdgpu_gfx908"); +DEF_REGISTER(v164, Arch_amdgpu_gfx908| VGPR | BITS_32 | 164 , "amdgpu_gfx908"); +DEF_REGISTER(v165, Arch_amdgpu_gfx908| VGPR | BITS_32 | 165 , "amdgpu_gfx908"); +DEF_REGISTER(v166, Arch_amdgpu_gfx908| VGPR | BITS_32 | 166 , "amdgpu_gfx908"); +DEF_REGISTER(v167, Arch_amdgpu_gfx908| VGPR | BITS_32 | 167 , "amdgpu_gfx908"); +DEF_REGISTER(v168, Arch_amdgpu_gfx908| VGPR | BITS_32 | 168 , "amdgpu_gfx908"); +DEF_REGISTER(v169, Arch_amdgpu_gfx908| VGPR | BITS_32 | 169 , "amdgpu_gfx908"); +DEF_REGISTER(v170, Arch_amdgpu_gfx908| VGPR | BITS_32 | 170 , "amdgpu_gfx908"); +DEF_REGISTER(v171, Arch_amdgpu_gfx908| VGPR | BITS_32 | 171 , "amdgpu_gfx908"); +DEF_REGISTER(v172, Arch_amdgpu_gfx908| VGPR | BITS_32 | 172 , "amdgpu_gfx908"); +DEF_REGISTER(v173, Arch_amdgpu_gfx908| VGPR | BITS_32 | 173 , "amdgpu_gfx908"); +DEF_REGISTER(v174, Arch_amdgpu_gfx908| VGPR | BITS_32 | 174 , "amdgpu_gfx908"); +DEF_REGISTER(v175, Arch_amdgpu_gfx908| VGPR | BITS_32 | 175 , "amdgpu_gfx908"); +DEF_REGISTER(v176, Arch_amdgpu_gfx908| VGPR | BITS_32 | 176 , "amdgpu_gfx908"); +DEF_REGISTER(v177, Arch_amdgpu_gfx908| VGPR | BITS_32 | 177 , "amdgpu_gfx908"); +DEF_REGISTER(v178, Arch_amdgpu_gfx908| VGPR | BITS_32 | 178 , "amdgpu_gfx908"); +DEF_REGISTER(v179, Arch_amdgpu_gfx908| VGPR | BITS_32 | 179 , "amdgpu_gfx908"); +DEF_REGISTER(v180, Arch_amdgpu_gfx908| VGPR | BITS_32 | 180 , "amdgpu_gfx908"); +DEF_REGISTER(v181, Arch_amdgpu_gfx908| VGPR | BITS_32 | 181 , "amdgpu_gfx908"); +DEF_REGISTER(v182, Arch_amdgpu_gfx908| VGPR | BITS_32 | 182 , "amdgpu_gfx908"); +DEF_REGISTER(v183, Arch_amdgpu_gfx908| VGPR | BITS_32 | 183 , "amdgpu_gfx908"); +DEF_REGISTER(v184, Arch_amdgpu_gfx908| VGPR | BITS_32 | 184 , "amdgpu_gfx908"); +DEF_REGISTER(v185, Arch_amdgpu_gfx908| VGPR | BITS_32 | 185 , "amdgpu_gfx908"); +DEF_REGISTER(v186, Arch_amdgpu_gfx908| VGPR | BITS_32 | 186 , "amdgpu_gfx908"); +DEF_REGISTER(v187, Arch_amdgpu_gfx908| VGPR | BITS_32 | 187 , "amdgpu_gfx908"); +DEF_REGISTER(v188, Arch_amdgpu_gfx908| VGPR | BITS_32 | 188 , "amdgpu_gfx908"); +DEF_REGISTER(v189, Arch_amdgpu_gfx908| VGPR | BITS_32 | 189 , "amdgpu_gfx908"); +DEF_REGISTER(v190, Arch_amdgpu_gfx908| VGPR | BITS_32 | 190 , "amdgpu_gfx908"); +DEF_REGISTER(v191, Arch_amdgpu_gfx908| VGPR | BITS_32 | 191 , "amdgpu_gfx908"); +DEF_REGISTER(v192, Arch_amdgpu_gfx908| VGPR | BITS_32 | 192 , "amdgpu_gfx908"); +DEF_REGISTER(v193, Arch_amdgpu_gfx908| VGPR | BITS_32 | 193 , "amdgpu_gfx908"); +DEF_REGISTER(v194, Arch_amdgpu_gfx908| VGPR | BITS_32 | 194 , "amdgpu_gfx908"); +DEF_REGISTER(v195, Arch_amdgpu_gfx908| VGPR | BITS_32 | 195 , "amdgpu_gfx908"); +DEF_REGISTER(v196, Arch_amdgpu_gfx908| VGPR | BITS_32 | 196 , "amdgpu_gfx908"); +DEF_REGISTER(v197, Arch_amdgpu_gfx908| VGPR | BITS_32 | 197 , "amdgpu_gfx908"); +DEF_REGISTER(v198, Arch_amdgpu_gfx908| VGPR | BITS_32 | 198 , "amdgpu_gfx908"); +DEF_REGISTER(v199, Arch_amdgpu_gfx908| VGPR | BITS_32 | 199 , "amdgpu_gfx908"); +DEF_REGISTER(v200, Arch_amdgpu_gfx908| VGPR | BITS_32 | 200 , "amdgpu_gfx908"); +DEF_REGISTER(v201, Arch_amdgpu_gfx908| VGPR | BITS_32 | 201 , "amdgpu_gfx908"); +DEF_REGISTER(v202, Arch_amdgpu_gfx908| VGPR | BITS_32 | 202 , "amdgpu_gfx908"); +DEF_REGISTER(v203, Arch_amdgpu_gfx908| VGPR | BITS_32 | 203 , "amdgpu_gfx908"); +DEF_REGISTER(v204, Arch_amdgpu_gfx908| VGPR | BITS_32 | 204 , "amdgpu_gfx908"); +DEF_REGISTER(v205, Arch_amdgpu_gfx908| VGPR | BITS_32 | 205 , "amdgpu_gfx908"); +DEF_REGISTER(v206, Arch_amdgpu_gfx908| VGPR | BITS_32 | 206 , "amdgpu_gfx908"); +DEF_REGISTER(v207, Arch_amdgpu_gfx908| VGPR | BITS_32 | 207 , "amdgpu_gfx908"); +DEF_REGISTER(v208, Arch_amdgpu_gfx908| VGPR | BITS_32 | 208 , "amdgpu_gfx908"); +DEF_REGISTER(v209, Arch_amdgpu_gfx908| VGPR | BITS_32 | 209 , "amdgpu_gfx908"); +DEF_REGISTER(v210, Arch_amdgpu_gfx908| VGPR | BITS_32 | 210 , "amdgpu_gfx908"); +DEF_REGISTER(v211, Arch_amdgpu_gfx908| VGPR | BITS_32 | 211 , "amdgpu_gfx908"); +DEF_REGISTER(v212, Arch_amdgpu_gfx908| VGPR | BITS_32 | 212 , "amdgpu_gfx908"); +DEF_REGISTER(v213, Arch_amdgpu_gfx908| VGPR | BITS_32 | 213 , "amdgpu_gfx908"); +DEF_REGISTER(v214, Arch_amdgpu_gfx908| VGPR | BITS_32 | 214 , "amdgpu_gfx908"); +DEF_REGISTER(v215, Arch_amdgpu_gfx908| VGPR | BITS_32 | 215 , "amdgpu_gfx908"); +DEF_REGISTER(v216, Arch_amdgpu_gfx908| VGPR | BITS_32 | 216 , "amdgpu_gfx908"); +DEF_REGISTER(v217, Arch_amdgpu_gfx908| VGPR | BITS_32 | 217 , "amdgpu_gfx908"); +DEF_REGISTER(v218, Arch_amdgpu_gfx908| VGPR | BITS_32 | 218 , "amdgpu_gfx908"); +DEF_REGISTER(v219, Arch_amdgpu_gfx908| VGPR | BITS_32 | 219 , "amdgpu_gfx908"); +DEF_REGISTER(v220, Arch_amdgpu_gfx908| VGPR | BITS_32 | 220 , "amdgpu_gfx908"); +DEF_REGISTER(v221, Arch_amdgpu_gfx908| VGPR | BITS_32 | 221 , "amdgpu_gfx908"); +DEF_REGISTER(v222, Arch_amdgpu_gfx908| VGPR | BITS_32 | 222 , "amdgpu_gfx908"); +DEF_REGISTER(v223, Arch_amdgpu_gfx908| VGPR | BITS_32 | 223 , "amdgpu_gfx908"); +DEF_REGISTER(v224, Arch_amdgpu_gfx908| VGPR | BITS_32 | 224 , "amdgpu_gfx908"); +DEF_REGISTER(v225, Arch_amdgpu_gfx908| VGPR | BITS_32 | 225 , "amdgpu_gfx908"); +DEF_REGISTER(v226, Arch_amdgpu_gfx908| VGPR | BITS_32 | 226 , "amdgpu_gfx908"); +DEF_REGISTER(v227, Arch_amdgpu_gfx908| VGPR | BITS_32 | 227 , "amdgpu_gfx908"); +DEF_REGISTER(v228, Arch_amdgpu_gfx908| VGPR | BITS_32 | 228 , "amdgpu_gfx908"); +DEF_REGISTER(v229, Arch_amdgpu_gfx908| VGPR | BITS_32 | 229 , "amdgpu_gfx908"); +DEF_REGISTER(v230, Arch_amdgpu_gfx908| VGPR | BITS_32 | 230 , "amdgpu_gfx908"); +DEF_REGISTER(v231, Arch_amdgpu_gfx908| VGPR | BITS_32 | 231 , "amdgpu_gfx908"); +DEF_REGISTER(v232, Arch_amdgpu_gfx908| VGPR | BITS_32 | 232 , "amdgpu_gfx908"); +DEF_REGISTER(v233, Arch_amdgpu_gfx908| VGPR | BITS_32 | 233 , "amdgpu_gfx908"); +DEF_REGISTER(v234, Arch_amdgpu_gfx908| VGPR | BITS_32 | 234 , "amdgpu_gfx908"); +DEF_REGISTER(v235, Arch_amdgpu_gfx908| VGPR | BITS_32 | 235 , "amdgpu_gfx908"); +DEF_REGISTER(v236, Arch_amdgpu_gfx908| VGPR | BITS_32 | 236 , "amdgpu_gfx908"); +DEF_REGISTER(v237, Arch_amdgpu_gfx908| VGPR | BITS_32 | 237 , "amdgpu_gfx908"); +DEF_REGISTER(v238, Arch_amdgpu_gfx908| VGPR | BITS_32 | 238 , "amdgpu_gfx908"); +DEF_REGISTER(v239, Arch_amdgpu_gfx908| VGPR | BITS_32 | 239 , "amdgpu_gfx908"); +DEF_REGISTER(v240, Arch_amdgpu_gfx908| VGPR | BITS_32 | 240 , "amdgpu_gfx908"); +DEF_REGISTER(v241, Arch_amdgpu_gfx908| VGPR | BITS_32 | 241 , "amdgpu_gfx908"); +DEF_REGISTER(v242, Arch_amdgpu_gfx908| VGPR | BITS_32 | 242 , "amdgpu_gfx908"); +DEF_REGISTER(v243, Arch_amdgpu_gfx908| VGPR | BITS_32 | 243 , "amdgpu_gfx908"); +DEF_REGISTER(v244, Arch_amdgpu_gfx908| VGPR | BITS_32 | 244 , "amdgpu_gfx908"); +DEF_REGISTER(v245, Arch_amdgpu_gfx908| VGPR | BITS_32 | 245 , "amdgpu_gfx908"); +DEF_REGISTER(v246, Arch_amdgpu_gfx908| VGPR | BITS_32 | 246 , "amdgpu_gfx908"); +DEF_REGISTER(v247, Arch_amdgpu_gfx908| VGPR | BITS_32 | 247 , "amdgpu_gfx908"); +DEF_REGISTER(v248, Arch_amdgpu_gfx908| VGPR | BITS_32 | 248 , "amdgpu_gfx908"); +DEF_REGISTER(v249, Arch_amdgpu_gfx908| VGPR | BITS_32 | 249 , "amdgpu_gfx908"); +DEF_REGISTER(v250, Arch_amdgpu_gfx908| VGPR | BITS_32 | 250 , "amdgpu_gfx908"); +DEF_REGISTER(v251, Arch_amdgpu_gfx908| VGPR | BITS_32 | 251 , "amdgpu_gfx908"); +DEF_REGISTER(v252, Arch_amdgpu_gfx908| VGPR | BITS_32 | 252 , "amdgpu_gfx908"); +DEF_REGISTER(v253, Arch_amdgpu_gfx908| VGPR | BITS_32 | 253 , "amdgpu_gfx908"); +DEF_REGISTER(v254, Arch_amdgpu_gfx908| VGPR | BITS_32 | 254 , "amdgpu_gfx908"); +DEF_REGISTER(v255, Arch_amdgpu_gfx908| VGPR | BITS_32 | 255 , "amdgpu_gfx908"); +DEF_REGISTER(acc0, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 0 , "amdgpu_gfx908"); +DEF_REGISTER(acc1, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 1 , "amdgpu_gfx908"); +DEF_REGISTER(acc2, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 2 , "amdgpu_gfx908"); +DEF_REGISTER(acc3, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 3 , "amdgpu_gfx908"); +DEF_REGISTER(acc4, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 4 , "amdgpu_gfx908"); +DEF_REGISTER(acc5, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 5 , "amdgpu_gfx908"); +DEF_REGISTER(acc6, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 6 , "amdgpu_gfx908"); +DEF_REGISTER(acc7, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 7 , "amdgpu_gfx908"); +DEF_REGISTER(acc8, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 8 , "amdgpu_gfx908"); +DEF_REGISTER(acc9, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 9 , "amdgpu_gfx908"); +DEF_REGISTER(acc10, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 10 , "amdgpu_gfx908"); +DEF_REGISTER(acc11, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 11 , "amdgpu_gfx908"); +DEF_REGISTER(acc12, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 12 , "amdgpu_gfx908"); +DEF_REGISTER(acc13, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 13 , "amdgpu_gfx908"); +DEF_REGISTER(acc14, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 14 , "amdgpu_gfx908"); +DEF_REGISTER(acc15, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 15 , "amdgpu_gfx908"); +DEF_REGISTER(acc16, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 16 , "amdgpu_gfx908"); +DEF_REGISTER(acc17, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 17 , "amdgpu_gfx908"); +DEF_REGISTER(acc18, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 18 , "amdgpu_gfx908"); +DEF_REGISTER(acc19, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 19 , "amdgpu_gfx908"); +DEF_REGISTER(acc20, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 20 , "amdgpu_gfx908"); +DEF_REGISTER(acc21, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 21 , "amdgpu_gfx908"); +DEF_REGISTER(acc22, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 22 , "amdgpu_gfx908"); +DEF_REGISTER(acc23, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 23 , "amdgpu_gfx908"); +DEF_REGISTER(acc24, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 24 , "amdgpu_gfx908"); +DEF_REGISTER(acc25, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 25 , "amdgpu_gfx908"); +DEF_REGISTER(acc26, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 26 , "amdgpu_gfx908"); +DEF_REGISTER(acc27, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 27 , "amdgpu_gfx908"); +DEF_REGISTER(acc28, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 28 , "amdgpu_gfx908"); +DEF_REGISTER(acc29, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 29 , "amdgpu_gfx908"); +DEF_REGISTER(acc30, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 30 , "amdgpu_gfx908"); +DEF_REGISTER(acc31, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 31 , "amdgpu_gfx908"); +DEF_REGISTER(acc32, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 32 , "amdgpu_gfx908"); +DEF_REGISTER(acc33, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 33 , "amdgpu_gfx908"); +DEF_REGISTER(acc34, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 34 , "amdgpu_gfx908"); +DEF_REGISTER(acc35, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 35 , "amdgpu_gfx908"); +DEF_REGISTER(acc36, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 36 , "amdgpu_gfx908"); +DEF_REGISTER(acc37, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 37 , "amdgpu_gfx908"); +DEF_REGISTER(acc38, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 38 , "amdgpu_gfx908"); +DEF_REGISTER(acc39, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 39 , "amdgpu_gfx908"); +DEF_REGISTER(acc40, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 40 , "amdgpu_gfx908"); +DEF_REGISTER(acc41, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 41 , "amdgpu_gfx908"); +DEF_REGISTER(acc42, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 42 , "amdgpu_gfx908"); +DEF_REGISTER(acc43, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 43 , "amdgpu_gfx908"); +DEF_REGISTER(acc44, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 44 , "amdgpu_gfx908"); +DEF_REGISTER(acc45, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 45 , "amdgpu_gfx908"); +DEF_REGISTER(acc46, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 46 , "amdgpu_gfx908"); +DEF_REGISTER(acc47, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 47 , "amdgpu_gfx908"); +DEF_REGISTER(acc48, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 48 , "amdgpu_gfx908"); +DEF_REGISTER(acc49, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 49 , "amdgpu_gfx908"); +DEF_REGISTER(acc50, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 50 , "amdgpu_gfx908"); +DEF_REGISTER(acc51, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 51 , "amdgpu_gfx908"); +DEF_REGISTER(acc52, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 52 , "amdgpu_gfx908"); +DEF_REGISTER(acc53, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 53 , "amdgpu_gfx908"); +DEF_REGISTER(acc54, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 54 , "amdgpu_gfx908"); +DEF_REGISTER(acc55, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 55 , "amdgpu_gfx908"); +DEF_REGISTER(acc56, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 56 , "amdgpu_gfx908"); +DEF_REGISTER(acc57, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 57 , "amdgpu_gfx908"); +DEF_REGISTER(acc58, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 58 , "amdgpu_gfx908"); +DEF_REGISTER(acc59, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 59 , "amdgpu_gfx908"); +DEF_REGISTER(acc60, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 60 , "amdgpu_gfx908"); +DEF_REGISTER(acc61, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 61 , "amdgpu_gfx908"); +DEF_REGISTER(acc62, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 62 , "amdgpu_gfx908"); +DEF_REGISTER(acc63, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 63 , "amdgpu_gfx908"); +DEF_REGISTER(acc64, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 64 , "amdgpu_gfx908"); +DEF_REGISTER(acc65, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 65 , "amdgpu_gfx908"); +DEF_REGISTER(acc66, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 66 , "amdgpu_gfx908"); +DEF_REGISTER(acc67, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 67 , "amdgpu_gfx908"); +DEF_REGISTER(acc68, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 68 , "amdgpu_gfx908"); +DEF_REGISTER(acc69, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 69 , "amdgpu_gfx908"); +DEF_REGISTER(acc70, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 70 , "amdgpu_gfx908"); +DEF_REGISTER(acc71, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 71 , "amdgpu_gfx908"); +DEF_REGISTER(acc72, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 72 , "amdgpu_gfx908"); +DEF_REGISTER(acc73, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 73 , "amdgpu_gfx908"); +DEF_REGISTER(acc74, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 74 , "amdgpu_gfx908"); +DEF_REGISTER(acc75, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 75 , "amdgpu_gfx908"); +DEF_REGISTER(acc76, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 76 , "amdgpu_gfx908"); +DEF_REGISTER(acc77, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 77 , "amdgpu_gfx908"); +DEF_REGISTER(acc78, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 78 , "amdgpu_gfx908"); +DEF_REGISTER(acc79, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 79 , "amdgpu_gfx908"); +DEF_REGISTER(acc80, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 80 , "amdgpu_gfx908"); +DEF_REGISTER(acc81, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 81 , "amdgpu_gfx908"); +DEF_REGISTER(acc82, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 82 , "amdgpu_gfx908"); +DEF_REGISTER(acc83, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 83 , "amdgpu_gfx908"); +DEF_REGISTER(acc84, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 84 , "amdgpu_gfx908"); +DEF_REGISTER(acc85, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 85 , "amdgpu_gfx908"); +DEF_REGISTER(acc86, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 86 , "amdgpu_gfx908"); +DEF_REGISTER(acc87, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 87 , "amdgpu_gfx908"); +DEF_REGISTER(acc88, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 88 , "amdgpu_gfx908"); +DEF_REGISTER(acc89, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 89 , "amdgpu_gfx908"); +DEF_REGISTER(acc90, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 90 , "amdgpu_gfx908"); +DEF_REGISTER(acc91, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 91 , "amdgpu_gfx908"); +DEF_REGISTER(acc92, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 92 , "amdgpu_gfx908"); +DEF_REGISTER(acc93, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 93 , "amdgpu_gfx908"); +DEF_REGISTER(acc94, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 94 , "amdgpu_gfx908"); +DEF_REGISTER(acc95, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 95 , "amdgpu_gfx908"); +DEF_REGISTER(acc96, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 96 , "amdgpu_gfx908"); +DEF_REGISTER(acc97, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 97 , "amdgpu_gfx908"); +DEF_REGISTER(acc98, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 98 , "amdgpu_gfx908"); +DEF_REGISTER(acc99, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 99 , "amdgpu_gfx908"); +DEF_REGISTER(acc100, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 100 , "amdgpu_gfx908"); +DEF_REGISTER(acc101, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 101 , "amdgpu_gfx908"); +DEF_REGISTER(acc102, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 102 , "amdgpu_gfx908"); +DEF_REGISTER(acc103, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 103 , "amdgpu_gfx908"); +DEF_REGISTER(acc104, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 104 , "amdgpu_gfx908"); +DEF_REGISTER(acc105, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 105 , "amdgpu_gfx908"); +DEF_REGISTER(acc106, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 106 , "amdgpu_gfx908"); +DEF_REGISTER(acc107, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 107 , "amdgpu_gfx908"); +DEF_REGISTER(acc108, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 108 , "amdgpu_gfx908"); +DEF_REGISTER(acc109, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 109 , "amdgpu_gfx908"); +DEF_REGISTER(acc110, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 110 , "amdgpu_gfx908"); +DEF_REGISTER(acc111, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 111 , "amdgpu_gfx908"); +DEF_REGISTER(acc112, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 112 , "amdgpu_gfx908"); +DEF_REGISTER(acc113, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 113 , "amdgpu_gfx908"); +DEF_REGISTER(acc114, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 114 , "amdgpu_gfx908"); +DEF_REGISTER(acc115, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 115 , "amdgpu_gfx908"); +DEF_REGISTER(acc116, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 116 , "amdgpu_gfx908"); +DEF_REGISTER(acc117, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 117 , "amdgpu_gfx908"); +DEF_REGISTER(acc118, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 118 , "amdgpu_gfx908"); +DEF_REGISTER(acc119, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 119 , "amdgpu_gfx908"); +DEF_REGISTER(acc120, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 120 , "amdgpu_gfx908"); +DEF_REGISTER(acc121, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 121 , "amdgpu_gfx908"); +DEF_REGISTER(acc122, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 122 , "amdgpu_gfx908"); +DEF_REGISTER(acc123, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 123 , "amdgpu_gfx908"); +DEF_REGISTER(acc124, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 124 , "amdgpu_gfx908"); +DEF_REGISTER(acc125, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 125 , "amdgpu_gfx908"); +DEF_REGISTER(acc126, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 126 , "amdgpu_gfx908"); +DEF_REGISTER(acc127, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 127 , "amdgpu_gfx908"); +DEF_REGISTER(acc128, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 128 , "amdgpu_gfx908"); +DEF_REGISTER(acc129, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 129 , "amdgpu_gfx908"); +DEF_REGISTER(acc130, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 130 , "amdgpu_gfx908"); +DEF_REGISTER(acc131, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 131 , "amdgpu_gfx908"); +DEF_REGISTER(acc132, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 132 , "amdgpu_gfx908"); +DEF_REGISTER(acc133, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 133 , "amdgpu_gfx908"); +DEF_REGISTER(acc134, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 134 , "amdgpu_gfx908"); +DEF_REGISTER(acc135, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 135 , "amdgpu_gfx908"); +DEF_REGISTER(acc136, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 136 , "amdgpu_gfx908"); +DEF_REGISTER(acc137, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 137 , "amdgpu_gfx908"); +DEF_REGISTER(acc138, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 138 , "amdgpu_gfx908"); +DEF_REGISTER(acc139, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 139 , "amdgpu_gfx908"); +DEF_REGISTER(acc140, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 140 , "amdgpu_gfx908"); +DEF_REGISTER(acc141, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 141 , "amdgpu_gfx908"); +DEF_REGISTER(acc142, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 142 , "amdgpu_gfx908"); +DEF_REGISTER(acc143, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 143 , "amdgpu_gfx908"); +DEF_REGISTER(acc144, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 144 , "amdgpu_gfx908"); +DEF_REGISTER(acc145, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 145 , "amdgpu_gfx908"); +DEF_REGISTER(acc146, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 146 , "amdgpu_gfx908"); +DEF_REGISTER(acc147, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 147 , "amdgpu_gfx908"); +DEF_REGISTER(acc148, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 148 , "amdgpu_gfx908"); +DEF_REGISTER(acc149, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 149 , "amdgpu_gfx908"); +DEF_REGISTER(acc150, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 150 , "amdgpu_gfx908"); +DEF_REGISTER(acc151, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 151 , "amdgpu_gfx908"); +DEF_REGISTER(acc152, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 152 , "amdgpu_gfx908"); +DEF_REGISTER(acc153, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 153 , "amdgpu_gfx908"); +DEF_REGISTER(acc154, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 154 , "amdgpu_gfx908"); +DEF_REGISTER(acc155, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 155 , "amdgpu_gfx908"); +DEF_REGISTER(acc156, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 156 , "amdgpu_gfx908"); +DEF_REGISTER(acc157, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 157 , "amdgpu_gfx908"); +DEF_REGISTER(acc158, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 158 , "amdgpu_gfx908"); +DEF_REGISTER(acc159, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 159 , "amdgpu_gfx908"); +DEF_REGISTER(acc160, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 160 , "amdgpu_gfx908"); +DEF_REGISTER(acc161, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 161 , "amdgpu_gfx908"); +DEF_REGISTER(acc162, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 162 , "amdgpu_gfx908"); +DEF_REGISTER(acc163, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 163 , "amdgpu_gfx908"); +DEF_REGISTER(acc164, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 164 , "amdgpu_gfx908"); +DEF_REGISTER(acc165, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 165 , "amdgpu_gfx908"); +DEF_REGISTER(acc166, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 166 , "amdgpu_gfx908"); +DEF_REGISTER(acc167, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 167 , "amdgpu_gfx908"); +DEF_REGISTER(acc168, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 168 , "amdgpu_gfx908"); +DEF_REGISTER(acc169, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 169 , "amdgpu_gfx908"); +DEF_REGISTER(acc170, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 170 , "amdgpu_gfx908"); +DEF_REGISTER(acc171, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 171 , "amdgpu_gfx908"); +DEF_REGISTER(acc172, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 172 , "amdgpu_gfx908"); +DEF_REGISTER(acc173, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 173 , "amdgpu_gfx908"); +DEF_REGISTER(acc174, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 174 , "amdgpu_gfx908"); +DEF_REGISTER(acc175, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 175 , "amdgpu_gfx908"); +DEF_REGISTER(acc176, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 176 , "amdgpu_gfx908"); +DEF_REGISTER(acc177, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 177 , "amdgpu_gfx908"); +DEF_REGISTER(acc178, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 178 , "amdgpu_gfx908"); +DEF_REGISTER(acc179, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 179 , "amdgpu_gfx908"); +DEF_REGISTER(acc180, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 180 , "amdgpu_gfx908"); +DEF_REGISTER(acc181, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 181 , "amdgpu_gfx908"); +DEF_REGISTER(acc182, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 182 , "amdgpu_gfx908"); +DEF_REGISTER(acc183, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 183 , "amdgpu_gfx908"); +DEF_REGISTER(acc184, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 184 , "amdgpu_gfx908"); +DEF_REGISTER(acc185, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 185 , "amdgpu_gfx908"); +DEF_REGISTER(acc186, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 186 , "amdgpu_gfx908"); +DEF_REGISTER(acc187, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 187 , "amdgpu_gfx908"); +DEF_REGISTER(acc188, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 188 , "amdgpu_gfx908"); +DEF_REGISTER(acc189, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 189 , "amdgpu_gfx908"); +DEF_REGISTER(acc190, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 190 , "amdgpu_gfx908"); +DEF_REGISTER(acc191, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 191 , "amdgpu_gfx908"); +DEF_REGISTER(acc192, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 192 , "amdgpu_gfx908"); +DEF_REGISTER(acc193, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 193 , "amdgpu_gfx908"); +DEF_REGISTER(acc194, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 194 , "amdgpu_gfx908"); +DEF_REGISTER(acc195, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 195 , "amdgpu_gfx908"); +DEF_REGISTER(acc196, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 196 , "amdgpu_gfx908"); +DEF_REGISTER(acc197, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 197 , "amdgpu_gfx908"); +DEF_REGISTER(acc198, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 198 , "amdgpu_gfx908"); +DEF_REGISTER(acc199, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 199 , "amdgpu_gfx908"); +DEF_REGISTER(acc200, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 200 , "amdgpu_gfx908"); +DEF_REGISTER(acc201, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 201 , "amdgpu_gfx908"); +DEF_REGISTER(acc202, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 202 , "amdgpu_gfx908"); +DEF_REGISTER(acc203, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 203 , "amdgpu_gfx908"); +DEF_REGISTER(acc204, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 204 , "amdgpu_gfx908"); +DEF_REGISTER(acc205, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 205 , "amdgpu_gfx908"); +DEF_REGISTER(acc206, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 206 , "amdgpu_gfx908"); +DEF_REGISTER(acc207, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 207 , "amdgpu_gfx908"); +DEF_REGISTER(acc208, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 208 , "amdgpu_gfx908"); +DEF_REGISTER(acc209, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 209 , "amdgpu_gfx908"); +DEF_REGISTER(acc210, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 210 , "amdgpu_gfx908"); +DEF_REGISTER(acc211, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 211 , "amdgpu_gfx908"); +DEF_REGISTER(acc212, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 212 , "amdgpu_gfx908"); +DEF_REGISTER(acc213, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 213 , "amdgpu_gfx908"); +DEF_REGISTER(acc214, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 214 , "amdgpu_gfx908"); +DEF_REGISTER(acc215, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 215 , "amdgpu_gfx908"); +DEF_REGISTER(acc216, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 216 , "amdgpu_gfx908"); +DEF_REGISTER(acc217, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 217 , "amdgpu_gfx908"); +DEF_REGISTER(acc218, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 218 , "amdgpu_gfx908"); +DEF_REGISTER(acc219, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 219 , "amdgpu_gfx908"); +DEF_REGISTER(acc220, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 220 , "amdgpu_gfx908"); +DEF_REGISTER(acc221, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 221 , "amdgpu_gfx908"); +DEF_REGISTER(acc222, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 222 , "amdgpu_gfx908"); +DEF_REGISTER(acc223, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 223 , "amdgpu_gfx908"); +DEF_REGISTER(acc224, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 224 , "amdgpu_gfx908"); +DEF_REGISTER(acc225, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 225 , "amdgpu_gfx908"); +DEF_REGISTER(acc226, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 226 , "amdgpu_gfx908"); +DEF_REGISTER(acc227, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 227 , "amdgpu_gfx908"); +DEF_REGISTER(acc228, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 228 , "amdgpu_gfx908"); +DEF_REGISTER(acc229, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 229 , "amdgpu_gfx908"); +DEF_REGISTER(acc230, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 230 , "amdgpu_gfx908"); +DEF_REGISTER(acc231, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 231 , "amdgpu_gfx908"); +DEF_REGISTER(acc232, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 232 , "amdgpu_gfx908"); +DEF_REGISTER(acc233, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 233 , "amdgpu_gfx908"); +DEF_REGISTER(acc234, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 234 , "amdgpu_gfx908"); +DEF_REGISTER(acc235, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 235 , "amdgpu_gfx908"); +DEF_REGISTER(acc236, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 236 , "amdgpu_gfx908"); +DEF_REGISTER(acc237, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 237 , "amdgpu_gfx908"); +DEF_REGISTER(acc238, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 238 , "amdgpu_gfx908"); +DEF_REGISTER(acc239, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 239 , "amdgpu_gfx908"); +DEF_REGISTER(acc240, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 240 , "amdgpu_gfx908"); +DEF_REGISTER(acc241, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 241 , "amdgpu_gfx908"); +DEF_REGISTER(acc242, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 242 , "amdgpu_gfx908"); +DEF_REGISTER(acc243, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 243 , "amdgpu_gfx908"); +DEF_REGISTER(acc244, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 244 , "amdgpu_gfx908"); +DEF_REGISTER(acc245, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 245 , "amdgpu_gfx908"); +DEF_REGISTER(acc246, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 246 , "amdgpu_gfx908"); +DEF_REGISTER(acc247, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 247 , "amdgpu_gfx908"); +DEF_REGISTER(acc248, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 248 , "amdgpu_gfx908"); +DEF_REGISTER(acc249, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 249 , "amdgpu_gfx908"); +DEF_REGISTER(acc250, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 250 , "amdgpu_gfx908"); +DEF_REGISTER(acc251, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 251 , "amdgpu_gfx908"); +DEF_REGISTER(acc252, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 252 , "amdgpu_gfx908"); +DEF_REGISTER(acc253, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 253 , "amdgpu_gfx908"); +DEF_REGISTER(acc254, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 254 , "amdgpu_gfx908"); +DEF_REGISTER(acc255, Arch_amdgpu_gfx908| ACC_VGPR | BITS_32 | 255 , "amdgpu_gfx908"); +#endif diff --git a/common/h/dyn_regs.h b/common/h/dyn_regs.h index d1463d88a3..9bbdf5fc3d 100644 --- a/common/h/dyn_regs.h +++ b/common/h/dyn_regs.h @@ -60,6 +60,7 @@ namespace Dyninst Arch_amdgpu_vega = 0x84000000, Arch_cuda = 0x88000000, Arch_amdgpu_cdna2 = 0x94000000, //future support for cdna2 + Arch_amdgpu_gfx908 = 0x98000000, //future support for gfx908 Arch_intelGen9 = 0xb6000000 //same as machine no. retrevied from eu-readelf } Architecture; @@ -1616,6 +1617,208 @@ namespace Dyninst #include "AMDGPU/vega/amdgpu_vega_sys_regs.h" } + namespace amdgpu_gfx908{ + //0xff000000 0x00ff0000 0x0000ff00 0x000000ff + //arch reg cat:GPR alias&subrange reg ID + const signed int SGPR = 0x00010000; + const signed int SGPR_VEC2 = 0x00020000; + const signed int SGPR_VEC4 = 0x00030000; + const signed int SGPR_VEC8 = 0x00040000; + const signed int SGPR_VEC16 = 0x00050000; + + const signed int VGPR = 0x00060000; + const signed int VGPR_VEC2 = 0x00070000; + const signed int VGPR_VEC4 = 0x00080000; + const signed int VGPR_VEC8 = 0x00090000; + const signed int VGPR_VEC16 = 0x000A0000; + + const signed int ACC_VGPR = 0x000B0000; + + const signed int HWR = 0x000C0000; + const signed int TTMP_SGPR = 0x000D0000; + const signed int FLAGS = 0x000E0000; + const signed int PC = 0x000F0000; + const signed int SYSREG = 0x00100000; + const signed int TGT = 0x00110000; // I have no idea what TGT is yet + const signed int ATTR = 0x00120000; + const signed int PARAM = 0x00130000; // LDS Parameter + + // aliasing for flags + // if we found out that it is a flag, we no longer need to use the cat 0x00ff0000 + // so we use that part to encode the low offset in the base register + // + + + const signed int BITS_1 = 0x00000100; + const signed int BITS_2 = 0x00000200; + const signed int BITS_3 = 0x00000300; + const signed int BITS_4 = 0x00000400; + const signed int BITS_6 = 0x00000500; + const signed int BITS_7 = 0x00000600; + const signed int BITS_8 = 0x00000700; + const signed int BITS_9 = 0x00000800; + const signed int BITS_15 = 0x00000900; + const signed int BITS_16 = 0x00000A00; + const signed int BITS_32 = 0x00000B00; + const signed int BITS_48 = 0x00000C00; + const signed int BITS_64 = 0x00000D00; + const signed int BITS_128 = 0x00000E00; + const signed int BITS_256 = 0x00000F00; + const signed int BITS_512 = 0x00001000; + + + + DEF_REGISTER(tid, Arch_amdgpu_gfx908| SYSREG | BITS_32 | 0 , "amdgpu_gfx908"); + + DEF_REGISTER(invalid, Arch_amdgpu_gfx908| SYSREG | BITS_32 | 1 , "amdgpu_gfx908"); + DEF_REGISTER(pc_all, Arch_amdgpu_gfx908| PC | BITS_48 | 0 , "amdgpu_gfx908"); + + + DEF_REGISTER(src_scc, Arch_amdgpu_gfx908| HWR | BITS_32 | 0 , "amdgpu_gfx908"); + + + DEF_REGISTER(src_vccz, Arch_amdgpu_gfx908| HWR | BITS_1 | 1 , "amdgpu_gfx908"); + DEF_REGISTER(vcc_lo, Arch_amdgpu_gfx908| HWR | BITS_32 | 2 , "amdgpu_gfx908"); + DEF_REGISTER(vcc_hi, Arch_amdgpu_gfx908| HWR | BITS_32 | 3 , "amdgpu_gfx908"); + DEF_REGISTER(vcc, Arch_amdgpu_gfx908| HWR | BITS_64 | 2 , "amdgpu_gfx908"); + + + + DEF_REGISTER(src_execz, Arch_amdgpu_gfx908| HWR | BITS_1 | 4 , "amdgpu_gfx908"); + DEF_REGISTER(exec_lo, Arch_amdgpu_gfx908| HWR | BITS_32 | 5 , "amdgpu_gfx908"); + DEF_REGISTER(exec_hi, Arch_amdgpu_gfx908| HWR | BITS_32 | 6 , "amdgpu_gfx908"); + DEF_REGISTER(exec, Arch_amdgpu_gfx908| HWR | BITS_64 | 5 , "amdgpu_gfx908"); + + + DEF_REGISTER(flat_scratch_lo, Arch_amdgpu_gfx908| HWR | BITS_64 | 7 , "amdgpu_gfx908"); + DEF_REGISTER(flat_scratch_hi, Arch_amdgpu_gfx908| HWR | BITS_32 | 8 , "amdgpu_gfx908"); + DEF_REGISTER(flat_scratch_all, Arch_amdgpu_gfx908| HWR | BITS_32 | 7 , "amdgpu_gfx908"); + + DEF_REGISTER(m0, Arch_amdgpu_gfx908| HWR | BITS_32 | 10 , "amdgpu_gfx908"); + + DEF_REGISTER(src_literal, Arch_amdgpu_gfx908| HWR | BITS_32 | 11 , "amdgpu_gfx908");// TODO + DEF_REGISTER(src_pops_exiting_wave_id, Arch_amdgpu_gfx908| HWR | BITS_32 | 12 , "amdgpu_gfx908");// TODO + + DEF_REGISTER(src_private_base, Arch_amdgpu_gfx908| HWR | BITS_32 | 13 , "amdgpu_gfx908"); + DEF_REGISTER(src_private_limit, Arch_amdgpu_gfx908| HWR | BITS_32 | 14 , "amdgpu_gfx908"); + DEF_REGISTER(src_shared_base, Arch_amdgpu_gfx908| HWR | BITS_32 | 15 , "amdgpu_gfx908"); + DEF_REGISTER(src_shared_limit, Arch_amdgpu_gfx908| HWR | BITS_32 | 16, "amdgpu_gfx908"); + + DEF_REGISTER(xnack_mask_lo, Arch_amdgpu_gfx908| HWR | BITS_32 | 17, "amdgpu_gfx908"); + DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_gfx908| HWR | BITS_32 | 18, "amdgpu_gfx908"); + + DEF_REGISTER(src_lds_direct, Arch_amdgpu_gfx908| HWR | BITS_32 | 19 , "amdgpu_gfx908"); + + + DEF_REGISTER(ttmp0, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 0 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp1, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 1 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp2, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 2 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp3, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 3 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp4, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 4 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp5, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 5 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp6, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 6 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp7, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 7 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp8, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 8 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp9, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 9 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp10, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 10 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp11, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 11 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp12, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 12 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp13, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 13 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp14, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 14 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp15, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 15 , "amdgpu_gfx908"); + + + + DEF_REGISTER(mrt0, Arch_amdgpu_gfx908| TGT | BITS_32 | 0 , "amdgpu_gfx908"); + DEF_REGISTER(mrt1, Arch_amdgpu_gfx908| TGT | BITS_32 | 1 , "amdgpu_gfx908"); + DEF_REGISTER(mrt2, Arch_amdgpu_gfx908| TGT | BITS_32 | 2 , "amdgpu_gfx908"); + DEF_REGISTER(mrt3, Arch_amdgpu_gfx908| TGT | BITS_32 | 3 , "amdgpu_gfx908"); + DEF_REGISTER(mrt4, Arch_amdgpu_gfx908| TGT | BITS_32 | 4 , "amdgpu_gfx908"); + DEF_REGISTER(mrt5, Arch_amdgpu_gfx908| TGT | BITS_32 | 5 , "amdgpu_gfx908"); + DEF_REGISTER(mrt6, Arch_amdgpu_gfx908| TGT | BITS_32 | 6 , "amdgpu_gfx908"); + DEF_REGISTER(mrt7, Arch_amdgpu_gfx908| TGT | BITS_32 | 7 , "amdgpu_gfx908"); + DEF_REGISTER(mrtz, Arch_amdgpu_gfx908| TGT | BITS_32 | 8 , "amdgpu_gfx908"); + DEF_REGISTER(null, Arch_amdgpu_gfx908| TGT | BITS_32 | 9 , "amdgpu_gfx908"); + DEF_REGISTER(pos0, Arch_amdgpu_gfx908| TGT | BITS_32 | 12 , "amdgpu_gfx908"); + DEF_REGISTER(pos1, Arch_amdgpu_gfx908| TGT | BITS_32 | 13 , "amdgpu_gfx908"); + DEF_REGISTER(pos2, Arch_amdgpu_gfx908| TGT | BITS_32 | 14 , "amdgpu_gfx908"); + DEF_REGISTER(pos3, Arch_amdgpu_gfx908| TGT | BITS_32 | 15 , "amdgpu_gfx908"); + DEF_REGISTER(param0, Arch_amdgpu_gfx908| TGT | BITS_32 | 32 , "amdgpu_gfx908"); + DEF_REGISTER(param1, Arch_amdgpu_gfx908| TGT | BITS_32 | 33 , "amdgpu_gfx908"); + DEF_REGISTER(param2, Arch_amdgpu_gfx908| TGT | BITS_32 | 34 , "amdgpu_gfx908"); + DEF_REGISTER(param3, Arch_amdgpu_gfx908| TGT | BITS_32 | 35 , "amdgpu_gfx908"); + DEF_REGISTER(param4, Arch_amdgpu_gfx908| TGT | BITS_32 | 36 , "amdgpu_gfx908"); + DEF_REGISTER(param5, Arch_amdgpu_gfx908| TGT | BITS_32 | 37 , "amdgpu_gfx908"); + DEF_REGISTER(param6, Arch_amdgpu_gfx908| TGT | BITS_32 | 38 , "amdgpu_gfx908"); + DEF_REGISTER(param7, Arch_amdgpu_gfx908| TGT | BITS_32 | 39 , "amdgpu_gfx908"); + DEF_REGISTER(param8, Arch_amdgpu_gfx908| TGT | BITS_32 | 40 , "amdgpu_gfx908"); + DEF_REGISTER(param9, Arch_amdgpu_gfx908| TGT | BITS_32 | 41 , "amdgpu_gfx908"); + DEF_REGISTER(param10, Arch_amdgpu_gfx908| TGT | BITS_32 | 42 , "amdgpu_gfx908"); + DEF_REGISTER(param11, Arch_amdgpu_gfx908| TGT | BITS_32 | 43 , "amdgpu_gfx908"); + DEF_REGISTER(param12, Arch_amdgpu_gfx908| TGT | BITS_32 | 44 , "amdgpu_gfx908"); + DEF_REGISTER(param13, Arch_amdgpu_gfx908| TGT | BITS_32 | 45 , "amdgpu_gfx908"); + DEF_REGISTER(param14, Arch_amdgpu_gfx908| TGT | BITS_32 | 46 , "amdgpu_gfx908"); + DEF_REGISTER(param15, Arch_amdgpu_gfx908| TGT | BITS_32 | 47 , "amdgpu_gfx908"); + DEF_REGISTER(param16, Arch_amdgpu_gfx908| TGT | BITS_32 | 48 , "amdgpu_gfx908"); + DEF_REGISTER(param17, Arch_amdgpu_gfx908| TGT | BITS_32 | 49 , "amdgpu_gfx908"); + DEF_REGISTER(param18, Arch_amdgpu_gfx908| TGT | BITS_32 | 50 , "amdgpu_gfx908"); + DEF_REGISTER(param19, Arch_amdgpu_gfx908| TGT | BITS_32 | 51 , "amdgpu_gfx908"); + DEF_REGISTER(param20, Arch_amdgpu_gfx908| TGT | BITS_32 | 52 , "amdgpu_gfx908"); + DEF_REGISTER(param21, Arch_amdgpu_gfx908| TGT | BITS_32 | 53 , "amdgpu_gfx908"); + DEF_REGISTER(param22, Arch_amdgpu_gfx908| TGT | BITS_32 | 54 , "amdgpu_gfx908"); + DEF_REGISTER(param23, Arch_amdgpu_gfx908| TGT | BITS_32 | 55 , "amdgpu_gfx908"); + DEF_REGISTER(param24, Arch_amdgpu_gfx908| TGT | BITS_32 | 56 , "amdgpu_gfx908"); + DEF_REGISTER(param25, Arch_amdgpu_gfx908| TGT | BITS_32 | 57 , "amdgpu_gfx908"); + DEF_REGISTER(param26, Arch_amdgpu_gfx908| TGT | BITS_32 | 58 , "amdgpu_gfx908"); + DEF_REGISTER(param27, Arch_amdgpu_gfx908| TGT | BITS_32 | 59 , "amdgpu_gfx908"); + DEF_REGISTER(param28, Arch_amdgpu_gfx908| TGT | BITS_32 | 60 , "amdgpu_gfx908"); + DEF_REGISTER(param29, Arch_amdgpu_gfx908| TGT | BITS_32 | 61 , "amdgpu_gfx908"); + DEF_REGISTER(param30, Arch_amdgpu_gfx908| TGT | BITS_32 | 62 , "amdgpu_gfx908"); + DEF_REGISTER(param31, Arch_amdgpu_gfx908| TGT | BITS_32 | 63 , "amdgpu_gfx908"); + + DEF_REGISTER(attr0, Arch_amdgpu_gfx908| ATTR | BITS_32 | 0 , "amdgpu_gfx908"); + DEF_REGISTER(attr1, Arch_amdgpu_gfx908| ATTR | BITS_32 | 1 , "amdgpu_gfx908"); + DEF_REGISTER(attr2, Arch_amdgpu_gfx908| ATTR | BITS_32 | 2 , "amdgpu_gfx908"); + DEF_REGISTER(attr3, Arch_amdgpu_gfx908| ATTR | BITS_32 | 3 , "amdgpu_gfx908"); + DEF_REGISTER(attr4, Arch_amdgpu_gfx908| ATTR | BITS_32 | 4 , "amdgpu_gfx908"); + DEF_REGISTER(attr5, Arch_amdgpu_gfx908| ATTR | BITS_32 | 5 , "amdgpu_gfx908"); + DEF_REGISTER(attr6, Arch_amdgpu_gfx908| ATTR | BITS_32 | 6 , "amdgpu_gfx908"); + DEF_REGISTER(attr7, Arch_amdgpu_gfx908| ATTR | BITS_32 | 7 , "amdgpu_gfx908"); + DEF_REGISTER(attr8, Arch_amdgpu_gfx908| ATTR | BITS_32 | 8 , "amdgpu_gfx908"); + DEF_REGISTER(attr9, Arch_amdgpu_gfx908| ATTR | BITS_32 | 9 , "amdgpu_gfx908"); + DEF_REGISTER(attr10, Arch_amdgpu_gfx908| ATTR | BITS_32 | 10 , "amdgpu_gfx908"); + DEF_REGISTER(attr11, Arch_amdgpu_gfx908| ATTR | BITS_32 | 11 , "amdgpu_gfx908"); + DEF_REGISTER(attr12, Arch_amdgpu_gfx908| ATTR | BITS_32 | 12 , "amdgpu_gfx908"); + DEF_REGISTER(attr13, Arch_amdgpu_gfx908| ATTR | BITS_32 | 13 , "amdgpu_gfx908"); + DEF_REGISTER(attr14, Arch_amdgpu_gfx908| ATTR | BITS_32 | 14 , "amdgpu_gfx908"); + DEF_REGISTER(attr15, Arch_amdgpu_gfx908| ATTR | BITS_32 | 15 , "amdgpu_gfx908"); + DEF_REGISTER(attr16, Arch_amdgpu_gfx908| ATTR | BITS_32 | 16 , "amdgpu_gfx908"); + DEF_REGISTER(attr17, Arch_amdgpu_gfx908| ATTR | BITS_32 | 17 , "amdgpu_gfx908"); + DEF_REGISTER(attr18, Arch_amdgpu_gfx908| ATTR | BITS_32 | 18 , "amdgpu_gfx908"); + DEF_REGISTER(attr19, Arch_amdgpu_gfx908| ATTR | BITS_32 | 19 , "amdgpu_gfx908"); + DEF_REGISTER(attr20, Arch_amdgpu_gfx908| ATTR | BITS_32 | 20 , "amdgpu_gfx908"); + DEF_REGISTER(attr21, Arch_amdgpu_gfx908| ATTR | BITS_32 | 21 , "amdgpu_gfx908"); + DEF_REGISTER(attr22, Arch_amdgpu_gfx908| ATTR | BITS_32 | 22 , "amdgpu_gfx908"); + DEF_REGISTER(attr23, Arch_amdgpu_gfx908| ATTR | BITS_32 | 23 , "amdgpu_gfx908"); + DEF_REGISTER(attr24, Arch_amdgpu_gfx908| ATTR | BITS_32 | 24 , "amdgpu_gfx908"); + DEF_REGISTER(attr25, Arch_amdgpu_gfx908| ATTR | BITS_32 | 25 , "amdgpu_gfx908"); + DEF_REGISTER(attr26, Arch_amdgpu_gfx908| ATTR | BITS_32 | 26 , "amdgpu_gfx908"); + DEF_REGISTER(attr27, Arch_amdgpu_gfx908| ATTR | BITS_32 | 27 , "amdgpu_gfx908"); + DEF_REGISTER(attr28, Arch_amdgpu_gfx908| ATTR | BITS_32 | 28 , "amdgpu_gfx908"); + DEF_REGISTER(attr29, Arch_amdgpu_gfx908| ATTR | BITS_32 | 29 , "amdgpu_gfx908"); + DEF_REGISTER(attr30, Arch_amdgpu_gfx908| ATTR | BITS_32 | 30 , "amdgpu_gfx908"); + DEF_REGISTER(attr31, Arch_amdgpu_gfx908| ATTR | BITS_32 | 31 , "amdgpu_gfx908"); + DEF_REGISTER(attr32, Arch_amdgpu_gfx908| ATTR | BITS_32 | 32 , "amdgpu_gfx908"); + + + + DEF_REGISTER(p10, Arch_amdgpu_gfx908| PARAM | BITS_32 | 32 , "amdgpu_gfx908"); + DEF_REGISTER(p20, Arch_amdgpu_gfx908| PARAM | BITS_32 | 32 , "amdgpu_gfx908"); + DEF_REGISTER(p0, Arch_amdgpu_gfx908| PARAM | BITS_32 | 32 , "amdgpu_gfx908"); + +#include "AMDGPU/gfx908/amdgpu_gfx908_sys_regs.h" + } + namespace amdgpu_cdna2{ //0xff000000 0x00ff0000 0x0000ff00 0x000000ff diff --git a/common/h/entryIDs.h b/common/h/entryIDs.h index df44c39b71..5a150eb05f 100644 --- a/common/h/entryIDs.h +++ b/common/h/entryIDs.h @@ -3010,6 +3010,7 @@ power_op_dxex, aarch64_op_zip2_advsimd, amdgpu_op_sop1_nop, #include "AMDGPU/vega/amdgpu_vega_op_table.h" +#include "AMDGPU/gfx908/amdgpu_gfx908_op_table.h" #include "AMDGPU/cdna2/amdgpu_cdna2_op_table.h" cuda_op_general, cuda_op_call, diff --git a/common/src/dyn_regs.C b/common/src/dyn_regs.C index 88be3da518..770ba92a90 100644 --- a/common/src/dyn_regs.C +++ b/common/src/dyn_regs.C @@ -109,6 +109,27 @@ MachRegister MachRegister::getBaseRegister() const { default: return *this; } + case Arch_amdgpu_gfx908: + switch (category){ + case amdgpu_gfx908::SGPR: + case amdgpu_gfx908::SGPR_VEC2: + case amdgpu_gfx908::SGPR_VEC4: + case amdgpu_gfx908::SGPR_VEC8: + case amdgpu_gfx908::SGPR_VEC16: + return MachRegister( (reg & 0x000000ff) | amdgpu_gfx908::s0); + case amdgpu_gfx908::VGPR: + case amdgpu_gfx908::VGPR_VEC2: + case amdgpu_gfx908::VGPR_VEC4: + case amdgpu_gfx908::VGPR_VEC8: + case amdgpu_gfx908::VGPR_VEC16: + return MachRegister( (reg & 0x000000ff) | amdgpu_gfx908::v0); + case amdgpu_gfx908::HWR: + return MachRegister(reg); + + default: + return *this; + } + case Arch_amdgpu_cdna2: switch (category){ case amdgpu_cdna2::SGPR: @@ -217,7 +238,7 @@ std::string MachRegister::name() const { break; } return ret; - }else if(getArchitecture() == Arch_amdgpu_cdna2){ + }else if(getArchitecture() == Arch_amdgpu_cdna2 || getArchitecture() == Arch_amdgpu_gfx908){ return iter->second; }else{ return iter->second; @@ -342,6 +363,51 @@ unsigned int MachRegister::size() const { assert(0); } } + case Arch_amdgpu_gfx908:{ + int reg_class = (reg&0x00ff0000 ) ; + if ( reg_class == amdgpu_gfx908::SGPR || reg_class == amdgpu_gfx908::VGPR){ + return 4; + }else if (reg_class == amdgpu_gfx908::SGPR_VEC2 || reg_class == amdgpu_gfx908::VGPR_VEC2){ + return 8; + }else if (reg_class == amdgpu_gfx908::SGPR_VEC4 || reg_class == amdgpu_gfx908::VGPR_VEC4){ + return 16; + }else if (reg_class == amdgpu_gfx908::SGPR_VEC8 || reg_class == amdgpu_gfx908::VGPR_VEC8){ + return 32; + }else if (reg_class == amdgpu_gfx908::SGPR_VEC16 || reg_class == amdgpu_gfx908::VGPR_VEC16){ + return 64; + }else{ + switch(reg & 0x00007f00){ + case amdgpu_gfx908::BITS_1: + case amdgpu_gfx908::BITS_2: + case amdgpu_gfx908::BITS_3: + case amdgpu_gfx908::BITS_4: + case amdgpu_gfx908::BITS_6: + case amdgpu_gfx908::BITS_7: + case amdgpu_gfx908::BITS_8: + return 1; + case amdgpu_gfx908::BITS_9: + case amdgpu_gfx908::BITS_15: + case amdgpu_gfx908::BITS_16: + return 2; + case amdgpu_gfx908::BITS_32: + return 4; + case amdgpu_gfx908::BITS_48: + return 6; + case amdgpu_gfx908::BITS_64: + return 8; + case amdgpu_gfx908::BITS_128: + return 16; + case amdgpu_gfx908::BITS_256: + return 32; + case amdgpu_gfx908::BITS_512: + return 64; + } + common_parsing_printf(" unknown reg size %x\n", (unsigned int)reg); + assert(0); + } + } + + case Arch_amdgpu_cdna2:{ int reg_class = (reg&0x00ff0000 ) ; if ( reg_class == amdgpu_cdna2::SGPR || reg_class == amdgpu_cdna2::VGPR){ @@ -466,6 +532,8 @@ MachRegister MachRegister::getPC(Dyninst::Architecture arch) return InvalidReg; case Arch_amdgpu_vega: return amdgpu_vega::pc; + case Arch_amdgpu_gfx908: + return amdgpu_gfx908::pc_all; case Arch_amdgpu_cdna2: return amdgpu_cdna2::pc_all; case Arch_none: @@ -492,6 +560,7 @@ MachRegister MachRegister::getReturnAddress(Dyninst::Architecture arch) case Arch_aarch32: case Arch_cuda: case Arch_amdgpu_vega: // TODO:Since amdgpu functions are all inlined, the return address is highly likely in sgpr[30:31] + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: case Arch_intelGen9: assert(0); @@ -517,6 +586,7 @@ MachRegister MachRegister::getFramePointer(Dyninst::Architecture arch) return aarch64::x29; //aarch64: frame pointer is X29 by convention case Arch_amdgpu_vega: + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: case Arch_none: return InvalidReg; @@ -547,7 +617,7 @@ MachRegister MachRegister::getStackPointer(Dyninst::Architecture arch) assert(0); case Arch_none: case Arch_amdgpu_vega: - + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: return InvalidReg; default: @@ -574,6 +644,7 @@ MachRegister MachRegister::getSyscallNumberReg(Dyninst::Architecture arch) case Arch_aarch32: case Arch_cuda: case Arch_amdgpu_vega: + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: assert(0); case Arch_none: @@ -686,7 +757,7 @@ bool MachRegister::isPC() const { return (*this == x86_64::rip || *this == x86::eip || *this == ppc32::pc || *this == ppc64::pc || - *this == aarch64::pc || *this == amdgpu_cdna2::pc_all ); + *this == aarch64::pc || *this == amdgpu_gfx908::pc_all ||*this == amdgpu_cdna2::pc_all ); } bool MachRegister::isFramePointer() const @@ -741,6 +812,7 @@ bool MachRegister::isFlag() const return (baseID <= 731 && baseID >= 700) || (baseID <= 629 && baseID >= 621); } case Arch_amdgpu_vega: + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: { return (reg & 0x0000F000); @@ -838,7 +910,7 @@ void MachRegister::getROSERegister(int &c, int &n, int &p) // Rose: class, number, position // Dyninst: category, base id, subrange Architecture maybe_amdgpu = getArchitecture(); - if (maybe_amdgpu==Arch_amdgpu_vega || maybe_amdgpu == Arch_amdgpu_cdna2){ + if (maybe_amdgpu==Arch_amdgpu_vega || maybe_amdgpu == Arch_amdgpu_gfx908 || maybe_amdgpu == Arch_amdgpu_cdna2){ getAMDGPUROSERegister(c,n,p); return; } @@ -2289,6 +2361,7 @@ unsigned Dyninst::getArchAddressWidth(Dyninst::Architecture arch) case Arch_cuda: case Arch_intelGen9: case Arch_amdgpu_vega: + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: return 8; default: diff --git a/dwarf/src/dwarfHandle.C b/dwarf/src/dwarfHandle.C index 937d08a913..e26f30a2df 100644 --- a/dwarf/src/dwarfHandle.C +++ b/dwarf/src/dwarfHandle.C @@ -203,7 +203,10 @@ bool DwarfHandle::init_dbg() case 0x3f: arch = Dyninst::Arch_amdgpu_cdna2; break; - case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x30: case 0x31: + case 0x30: + arch = Dyninst::Arch_amdgpu_gfx908; + break; + case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x31: arch = Dyninst::Arch_amdgpu_vega; break; case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: diff --git a/elf/src/Elf_X.C b/elf/src/Elf_X.C index 6a750dac4b..949b2a5815 100644 --- a/elf/src/Elf_X.C +++ b/elf/src/Elf_X.C @@ -1831,7 +1831,9 @@ Dyninst::Architecture Elf_X::getArch() const switch(ef_amdgpu_mach){ case 0x3f: return Dyninst::Arch_amdgpu_cdna2; - case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x30: case 0x31: + case 0x30: + return Dyninst::Arch_amdgpu_gfx908; + case 0x28: case 0x29: case 0x2a: case 0x2b: case 0x2c: case 0x2d: case 0x2e: case 0x2f: case 0x31: return Dyninst::Arch_amdgpu_vega; case 0x11: case 0x12: case 0x13: case 0x14: case 0x15: case 0x16: case 0x17: case 0x18: case 0x19: case 0x1a: case 0x1b: case 0x1c: case 0x1d: case 0x1e: case 0x1f: diff --git a/instructionAPI/CMakeLists.txt b/instructionAPI/CMakeLists.txt index 3d81cec4e5..337b3f903c 100644 --- a/instructionAPI/CMakeLists.txt +++ b/instructionAPI/CMakeLists.txt @@ -2,10 +2,11 @@ include_directories( ${PROJECT_SOURCE_DIR}/instructionAPI/src - ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/cdna2 + ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/gfx908 ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/vega) set(SRC_LIST + src/debug_decode.C src/Instruction.C src/InstructionAST.C src/Operation.C @@ -22,6 +23,7 @@ set(SRC_LIST src/InstructionDecoder-power.C src/InstructionDecoder-aarch64.C src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C + src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C src/InstructionDecoderImpl.C) set_source_files_properties(${SRC_LIST} PROPERTIES LANGUAGE CXX) @@ -81,6 +83,8 @@ endif() if(NOT finalizeOperandsExtraFlags STREQUAL "") set_source_files_properties(src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C PROPERTIES COMPILE_FLAGS "${finalizeOperandsExtraFlags}") + set_source_files_properties(src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C + PROPERTIES COMPILE_FLAGS "${finalizeOperandsExtraFlags}") endif() add_definitions(-DINSTRUCTION_LIB) diff --git a/instructionAPI/h/Instruction.h b/instructionAPI/h/Instruction.h index e9298c82d1..bac7bebbdd 100644 --- a/instructionAPI/h/Instruction.h +++ b/instructionAPI/h/Instruction.h @@ -92,7 +92,7 @@ namespace Dyninst friend class InstructionDecoder_power; friend class InstructionDecoder_aarch64; friend class InstructionDecoder_amdgpu_vega; - friend class InstructionDecoder_amdgpu_cdna; + friend class InstructionDecoder_amdgpu_gfx908; friend class InstructionDecoder_amdgpu_cdna2; struct CFT diff --git a/instructionAPI/h/Operation_impl.h b/instructionAPI/h/Operation_impl.h index 34902f3041..7da897f42a 100644 --- a/instructionAPI/h/Operation_impl.h +++ b/instructionAPI/h/Operation_impl.h @@ -102,7 +102,7 @@ namespace Dyninst friend class InstructionDecoder_power; // for editing mnemonics after creation friend class InstructionDecoder_aarch64; friend class InstructionDecoder_amdgpu_vega; - friend class InstructionDecoder_amdgpu_cdna; + friend class InstructionDecoder_amdgpu_gfx908; friend class InstructionDecoder_amdgpu_cdna2; friend class Instruction; // to make use of the update size function diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C index c17c20e6b9..e852f47437 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -184,7 +184,7 @@ namespace Dyninst { #include "finalizeOperands.C" inline unsigned int InstructionDecoder_amdgpu_cdna2::get32bit(InstructionDecoder::buffer &b,unsigned int offset ){ assert(offset %4 ==0 ); - if(b.start + offset + 4 < b.end) + if(b.start + offset + 4 <= b.end) return b.start[offset+3] << 24 | b.start[offset + 2] << 16 | b.start[offset +1 ] << 8 | b.start [offset]; return 0; } @@ -218,7 +218,6 @@ namespace Dyninst { imm_at_64 = get32bit(b,8); insn_long = ( ((uint64_t) insn_high) << 32) | insn; - } void InstructionDecoder_amdgpu_cdna2::decodeOpcode(InstructionDecoder::buffer &b) { setupInsnWord(b); diff --git a/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C b/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C index f93b63d1c4..db789288b6 100644 --- a/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/cdna2/finalizeOperands.C @@ -4002,11 +4002,15 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); break; case 29:// S_SETPC_B64 +setBranch(); +setModifyPC(); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); break; case 30:// S_SWAPPC_B64 +setBranch(); +setModifyPC(); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); @@ -4768,31 +4772,51 @@ break; case 1:// S_ENDPGM break; case 2:// S_BRANCH +setBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); break; case 3:// S_WAKEUP break; case 4:// S_CBRANCH_SCC0 +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; case 5:// S_CBRANCH_SCC1 +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; case 6:// S_CBRANCH_VCCZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; case 7:// S_CBRANCH_VCCNZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; case 8:// S_CBRANCH_EXECZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); break; case 9:// S_CBRANCH_EXECNZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); break; diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C new file mode 100644 index 0000000000..852743bda0 --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C @@ -0,0 +1,261 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "Ternary.h" +#include "InstructionDecoder-amdgpu-gfx908.h" +#include "debug_decode.h" + +namespace Dyninst { + namespace InstructionAPI { + typedef void (InstructionDecoder_amdgpu_gfx908::*operandFactory)(); + + typedef amdgpu_gfx908_insn_entry amdgpu_gfx908_insn_table[]; + typedef amdgpu_mask_entry amdgpu_decoder_table[]; + + const std::array InstructionDecoder_amdgpu_gfx908::condNames = { { + "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", "hi", "ls", "ge", + "lt", "gt", "le", "al", "nv", + } }; + + const char* InstructionDecoder_amdgpu_gfx908::bitfieldInsnAliasMap(entryID) { + assert(!"no alias for entryID"); + return nullptr; + } + const char* InstructionDecoder_amdgpu_gfx908::condInsnAliasMap(entryID) { + assert(!"no alias for entryID"); + return nullptr; + } + +#include "amdgpu_gfx908_insn_entry.h" + struct amdgpu_mask_entry { + unsigned int mask; + std::size_t branchCnt; + const std::pair* nodeBranches; + int insnTableIndex; + + static const amdgpu_decoder_table main_decoder_table; + static const std::pair branchTable[]; + }; + +#include "amdgpu_gfx908_opcode_tables.C" + + using namespace std; + void InstructionDecoder_amdgpu_gfx908::NOTHING() { + } + + Result_Type InstructionDecoder_amdgpu_gfx908::makeSizeType(unsigned int) { + assert(0); //not implemented + return u32; + } + + // **************** + // decoding opcodes + // **************** + + MachRegister InstructionDecoder_amdgpu_gfx908::makeAmdgpuRegID(MachRegister base, unsigned int encoding , unsigned int) { + return MachRegister(base.val() + encoding); + + } + + Expression::Ptr InstructionDecoder_amdgpu_gfx908::makePCExpr() { + MachRegister baseReg = amdgpu_gfx908::pc_all; + return makeRegisterExpression(baseReg); + } + + void InstructionDecoder_amdgpu_gfx908::makeBranchTarget(bool branchIsCall, bool bIsConditional, int immVal, + int immLen_ = 16) { + Expression::Ptr lhs = makeAddExpression(makePCExpr(),Immediate::makeImmediate(Result(s48,4)),s48); + int64_t offset = sign_extend64(immLen_, immVal * 4); + + Expression::Ptr rhs = Immediate::makeImmediate(Result(s64, offset)); + + insn_in_progress->addSuccessor(makeAddExpression(lhs, rhs, s64), branchIsCall, false, bIsConditional, + false); + if (bIsConditional || branchIsCall) { + insn_in_progress->addSuccessor(makeFallThroughExpr(), false, false, false, true); + } + + } + + Expression::Ptr InstructionDecoder_amdgpu_gfx908::makeFallThroughExpr() { + // TODO: while s_call_B64 is always 4 bytes, it is not clear whether all instructions that has a fall through branch are 4 bytes long + return makeAddExpression(makePCExpr(), Immediate::makeImmediate(Result(u64, unsign_extend64(3, 4))), u64); + } + + + bool InstructionDecoder_amdgpu_gfx908::decodeOperands(const Instruction *) { + assert(0 && "decodeOperands deprecated for amdgpu"); + return true; + } + + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeSGPRorM0(unsigned int offset){ + if( offset <= 104) + return makeRegisterExpression(makeAmdgpuRegID(amdgpu_gfx908::s0,offset)); + if (offset == 124) + return makeRegisterExpression(amdgpu_gfx908::m0); + cerr << " unknown offset in sgpr or m0 " << offset << endl; + assert(0 && "shouldn't reach here"); + return {}; + } + + + uint32_t InstructionDecoder_amdgpu_gfx908::decodeOPR_LITERAL(){ + if (!useImm){ + useImm = true; + immLen = 4; + if(insn_size == 4) + immLiteral = imm_at_32; + else if(insn_size ==8) + immLiteral = imm_at_64; + else + assert(0 && "unsupported instruction size"); + + } + return immLiteral; + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_LABEL(uint64_t input){ + Expression::Ptr lhs = makeAddExpression(makePCExpr(),Immediate::makeImmediate(Result(s48,4)),s48); + int64_t offset = sign_extend64(immLen, input * 4); + Expression::Ptr rhs = Immediate::makeImmediate(Result(s64, offset)); + return makeAddExpression(lhs, rhs, s64); + + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SIMM4(uint64_t input){ + return Immediate::makeImmediate(Result(s8, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SIMM8(uint64_t input){ + return Immediate::makeImmediate(Result(s8, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SIMM16(uint64_t input){ + return Immediate::makeImmediate(Result(s16, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SIMM32(uint64_t input){ + return Immediate::makeImmediate(Result(s32, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_WAITCNT(uint64_t input){ + return Immediate::makeImmediate(Result(s16, input)); + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::makeRegisterExpression(MachRegister registerID){ + if(registerID == amdgpu_gfx908::src_literal){ + return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); + } + return InstructionDecoderImpl::makeRegisterExpression(registerID); + } + Expression::Ptr InstructionDecoder_amdgpu_gfx908::makeRegisterExpression(MachRegister registerID, uint32_t low, uint32_t high ){ + if(registerID == amdgpu_gfx908::src_literal){ + return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); + } + return InstructionDecoderImpl::makeRegisterExpression(registerID, low, high ); + } + + + +#include "amdgpu_gfx908_decoder_impl.C" +#include "decodeOperands.C" +#include "finalizeOperands.C" + inline unsigned int InstructionDecoder_amdgpu_gfx908::get32bit(InstructionDecoder::buffer &b,unsigned int offset ){ + assert(offset %4 ==0 ); + if(b.start + offset + 4 <= b.end) + return b.start[offset+3] << 24 | b.start[offset + 2] << 16 | b.start[offset +1 ] << 8 | b.start [offset]; + return 0; + } + + + void InstructionDecoder_amdgpu_gfx908::reset(){ + immLen = 0; + insn_size = 0; + num_elements =1; + isBranch = false; + isConditional = false; + isModifyPC =false; + isSMEM = false; + isLoad = false ; + isStore =false; + isBuffer =false ; + isScratch = false; + insn = insn_high = insn_long = 0; + useImm = false; + isCall = false; + } + // here we assemble the first 64 bit (if available) as an instruction + + void InstructionDecoder_amdgpu_gfx908::setupInsnWord(InstructionDecoder::buffer &b) { + reset(); + + + insn = get32bit(b,0); + + imm_at_32 = insn_high = get32bit(b,4); + imm_at_64 = get32bit(b,8); + + insn_long = ( ((uint64_t) insn_high) << 32) | insn; + decoding_printf("[%s:%d]: setting up insnword, bits = %llu\n",FILE__,__LINE__, insn_long ); + + + } + void InstructionDecoder_amdgpu_gfx908::decodeOpcode(InstructionDecoder::buffer &b) { + setupInsnWord(b); + mainDecode(); + b.start += insn_in_progress->size(); + } + + void InstructionDecoder_amdgpu_gfx908::debug_instr(){ + cout << "decoded instruction " << insn_in_progress->getOperation().mnemonic << " " << std::hex << insn_long << " insn_family = " << instr_family + << " length = " << insn_in_progress->size()<< endl << endl; + + } + + Instruction InstructionDecoder_amdgpu_gfx908::decode(InstructionDecoder::buffer &b) { + setupInsnWord(b); + mainDecode(); + if(entryToCategory(insn_in_progress->getOperation().getID())==c_BranchInsn){ + //cout << "Is Branch Instruction !! , name = " << insn_in_progress -> getOperation().mnemonic << endl; + //std::mem_fun(decode_lookup_table[instr_family])(this); + } + decoding_printf("[%s:%d]: decoded instruction = %s\n",FILE__,__LINE__, insn_in_progress->getOperation().mnemonic.c_str() ); + b.start += insn_in_progress->size(); + return *insn_in_progress; + } + + void InstructionDecoder_amdgpu_gfx908::doDelayedDecode(const Instruction *insn_to_complete) { + + InstructionDecoder::buffer b(insn_to_complete->ptr(), insn_to_complete->size()); + setupInsnWord(b); + mainDecode(); + decoding_printf("[%s:%d]: decoded instruction = %s\n",FILE__,__LINE__, insn_in_progress->getOperation().mnemonic.c_str() ); + cout.clear(); + Instruction* iptr = const_cast(insn_to_complete); + *iptr = *(insn_in_progress.get()); + } + } +} + + + diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h new file mode 100644 index 0000000000..d05c2971ef --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h @@ -0,0 +1,317 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include "InstructionDecoderImpl.h" +#include +#include "Immediate.h" +#include "dyn_regs.h" + +namespace Dyninst { + namespace InstructionAPI { + +#define insn_printf(format, ...) \ + do{ \ + printf("[%s:%u]insn_debug " format, FILE__, __LINE__, ## __VA_ARGS__); \ + }while(0) + + struct amdgpu_gfx908_insn_entry; + struct amdgpu_mask_entry; + + class InstructionDecoder_amdgpu_gfx908 : public InstructionDecoderImpl { + friend struct amdgpu_gfx908_insn_entry; + friend struct amdgpu_mask_entry; + enum DecodeFamily {sopp}; + + public: + InstructionDecoder_amdgpu_gfx908(Architecture a) : InstructionDecoderImpl(a) {} + + virtual ~InstructionDecoder_amdgpu_gfx908() = default; + + virtual void decodeOpcode(InstructionDecoder::buffer &b); + + // decode one instruction starting from b.start + // will advance b.start whenver a instruction is successfully decoded + virtual Instruction decode(InstructionDecoder::buffer &b); + + virtual void setMode(bool) { } + + virtual bool decodeOperands(const Instruction *insn_to_complete); + + bool decodeOperands(const amdgpu_gfx908_insn_entry & insn_entry); + + virtual void doDelayedDecode(const Instruction *insn_to_complete); + + static const std::array condNames; + static MachRegister sysRegMap(unsigned int); + static const char* bitfieldInsnAliasMap(entryID); + static const char* condInsnAliasMap(entryID); + + + + private: + virtual Result_Type makeSizeType(unsigned int opType); + + bool is64Bit{}; + + unsigned int insn_size{}; // size of the instruction that we are currently working on + unsigned int insn{}; // the first 32 bit + unsigned int insn_high{}; // the second 32 bit + unsigned long long int insn_long{}; // the combined 64 bit: insn_high << 32 | insn + + // the main process of decoding an instruciton, won't advance buffer + void mainDecode(); + + void mainDecodeOpcode(); + + + void setupInsnWord(InstructionDecoder::buffer &b); + // pointer to the instruction that we are currently working on + boost::shared_ptr insn_in_progress; + + template + int field(unsigned int raw) { +#if defined DEBUG_FIELD + std::cerr << start << "-" << end << ":" << std::dec << (raw >> (start) & + (0xFFFFFFFF >> (31 - (end - start)))) << " "; +#endif + return (raw >> (start) & (0xFFFFFFFF >> (31 - (end - start)))); + } + + template + int longfield(unsigned long long int raw) { +#if defined DEBUG_FIELD + std::cerr << start << "-" << end << ":" << std::dec << (raw >> (start) & + (0xFFFFFFFFFFFFFFFF >> (63 - (end - start)))) << " "; +#endif + return ( (raw >> (start)) & (0xFFFFFFFFFFFFFFFF >> (63 - (end - start)))); + } + + int32_t sign_extend32(int size_, int in) { + int32_t val = 0 | in; + + return (val << (32 - size_)) >> (32 - size_); + } + + int64_t sign_extend64(int size_, int in) { + int64_t val = 0 | in; + + return (val << (64 - size_)) >> (64 - size_); + } + + uint32_t unsign_extend32(int size_, int in) { + uint32_t mask = ~0; + + return (mask >> (32 - size_)) & in; + } + + uint64_t unsign_extend64(int size_, int in) { + uint64_t mask = ~0; + + return (mask >> (64 - size_)) & in; + } + + int highest_set_bit(int32_t val) { + for (int bit_index = 31; bit_index >= 0; bit_index--) + if (((static_cast(val) >> bit_index) & 0x1) == 0x1) + return bit_index + 1; + + return -1; + } + + int lowest_set_bit(int32_t val) { + for (int bit_index = 0; bit_index <= 31; bit_index++) + if (((static_cast(val) >> bit_index) & 0x1) == 0x1) + return bit_index + 1; + + return -1; + } + + + bool hasHw{}; + int hwField{}; + + void processHwFieldInsn(int, int); + + bool hasShift{}; + int shiftField{}; + + void makeBranchTarget(bool, bool, int, int); + + Expression::Ptr makeFallThroughExpr(); + + int _szField{}, size{}; + int _typeField{}; + int cmode{}; + int op{}; + int simdAlphabetImm{}; + + void processAlphabetImm(); + + void NOTHING(); + bool fix_bitfieldinsn_alias(int, int); + void fix_condinsn_alias_and_cond(int &); + void modify_mnemonic_simd_upperhalf_insns(); + + MachRegister makeAmdgpuRegID(MachRegister, unsigned int, unsigned int len = 1); + + MachRegister getLoadStoreSimdRegister(int encoding); + + Expression::Ptr makePCExpr(); + + + template + Expression::Ptr makeLogicalImm(int immr, int imms, int immsLen, Result_Type rT); + + + //for load store + void insnSize(unsigned int insn_size ); + + Expression::Ptr decodeSSRC(unsigned int index); + Expression::Ptr decodeVSRC(unsigned int index); + Expression::Ptr decodeVDST(unsigned int index); + + Expression::Ptr decodeSGPRorM0(unsigned int offset); + + + bool useImm{}; + uint32_t immLen{}; + uint32_t immLiteral{}; + uint32_t imm_at_32{}; + uint32_t imm_at_64{}; + uint32_t imm_at_96{}; + + bool setSCC{}; + +#define IS_LD_ST() (isLoad || isStore ) + + unsigned int num_elements{1}; // the number of elements that will be load or store by each instruction + bool isSMEM{}; // this is set when using smem instruction + bool isLoad{}; // this is set when a smem instruction is load, will set number of elements that are loaded at the same time + bool isStore{}; // similar to isLoad, but for store instructions + bool isBuffer{}; // + bool isScratch{}; + + bool isBranch{}; // this is set for all branch instructions, + bool isConditional{}; // this is set for all conditional branch instruction, will set branchCond + bool isCall{}; // this is a call function + + + + // this is set for instructions that directly modify pc + // namely s_setpc and s_swappc + bool isModifyPC{}; + + // reset the decoder internal state for decoding the next instruction + void reset(); + + Expression::Ptr branchCond; + Expression::Ptr branchTarget; + + void setBranch(){ + isBranch = true; + } + + void setConditionalBranch(){ + isConditional = true; + // TODO : set conditional branch + } + void setModifyPC(){ + isModifyPC = true; + } + + void setCall(){ + isCall = true; + } + + inline unsigned int get32bit(InstructionDecoder::buffer &b,unsigned int offset ); + + template + void setUseImm(InstructionDecoder::buffer & b, unsigned int offset){ + if ( longfield(insn_long) == candidate ){ + useImm = true; + immLen = 4; + immLiteral = get32bit(b,offset); + } + + } + + void setSMEM() {isSMEM = true;} + + + + template + void setLoad(){isLoad = true; this->num_elements = num_elements; } + + template + void setStore() {isStore = true;this->num_elements = num_elements;} + + void setScratch() {isScratch = true;} + + void setBuffer() {isBuffer = true;} + + typedef struct buffer_resource_desc{ + unsigned long long base_address; + unsigned stride; + unsigned cache_swizzle; + unsigned swizzle_enable; + unsigned num_records; + unsigned dst_sel_x; + unsigned dst_sel_y; + unsigned dst_sel_z; + unsigned dst_sel_w; + unsigned num_format; + unsigned data_format; + unsigned user_vm_enable; + unsigned user_vm_mode; + unsigned index_stride; + unsigned add_tid_enable; + unsigned non_volatile; + unsigned type; + }buffer_resource_desc; + + void debug_instr(); + + uint32_t decodeOPR_LITERAL(); + Expression::Ptr decodeOPR_LABEL(uint64_t input); + Expression::Ptr decodeOPR_SIMM4(uint64_t input); + Expression::Ptr decodeOPR_SIMM8(uint64_t input); + Expression::Ptr decodeOPR_SIMM16(uint64_t input); + Expression::Ptr decodeOPR_SIMM32(uint64_t input); + Expression::Ptr decodeOPR_WAITCNT(uint64_t input); + using InstructionDecoderImpl::makeRegisterExpression; + Expression::Ptr makeRegisterExpression(MachRegister registerID); + Expression::Ptr makeRegisterExpression(MachRegister registerID, uint32_t low , uint32_t high ); + void specialHandle(); + #include "amdgpu_gfx908_decoder_impl.h" + #include "decodeOperands.h" + }; + } +} + diff --git a/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C new file mode 100644 index 0000000000..8727c7a553 --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C @@ -0,0 +1,2387 @@ +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_SOP1(uint64_t I){ + switch( I & 4286643968 ){ + case 3196059648: + case 3196059904: + case 3196060672: + case 3196060160: + case 3196060416: + case 3196060928: + case 3196061184: + case 3196061440: + case 3196061696: + case 3196061952: + case 3196063744: + case 3196064000: + case 3196068096: + case 3196067840: + case 3196064256: + case 3196068352: + case 3196071936: + case 3196072448: + case 3196064512: + case 3196068608: + case 3196072704: + case 3196064768: + case 3196068864: + case 3196072960: + case 3196065024: + case 3196069120: + case 3196073216: + case 3196065280: + case 3196069376: + case 3196073472: + case 3196065536: + case 3196069632: + case 3196073728: + case 3196065792: + case 3196069888: + case 3196066048: + case 3196070144: + case 3196062208: + case 3196066304: + case 3196070400: + case 3196062464: + case 3196066560: + case 3196070656: + case 3196062720: + case 3196066816: + case 3196070912: + case 3196067584: + case 3196062976: + case 3196067072: + case 3196071168: + case 3196063232: + case 3196067328: + case 3196071424: + case 3196063488: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_SOPC(uint64_t I){ + switch( I & 4294901760 ){ + case 3204448256: + case 3204513792: + case 3204644864: + case 3204579328: + case 3204710400: + case 3204775936: + case 3204841472: + case 3204907008: + case 3204972544: + case 3205038080: + case 3205103616: + case 3205169152: + case 3205234688: + case 3205300224: + case 3205365760: + case 3205431296: + case 3205693440: + case 3205562368: + case 3205627904: + case 3205496832: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_SOPP(uint64_t I){ + switch( I & 4294901760 ){ + case 3212836864: + case 3212902400: + case 3213033472: + case 3212967936: + case 3213099008: + case 3213164544: + case 3213230080: + case 3213295616: + case 3213361152: + case 3213426688: + case 3213492224: + case 3213623296: + case 3213754368: + case 3214016512: + case 3214147584: + case 3213885440: + case 3214606336: + case 3214737408: + case 3213557760: + case 3213688832: + case 3213819904: + case 3214082048: + case 3213950976: + case 3214213120: + case 3214278656: + case 3214344192: + case 3214475264: + case 3214409728: + case 3214540800: + case 3214671872: + case 3214802944: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_SOPK(uint64_t I){ + switch( I & 4286578688 ){ + case 2952790016: + case 2961178624: + case 2986344448: + case 2969567232: + case 2977955840: + case 2994733056: + case 3003121664: + case 3011510272: + case 3019898880: + case 3028287488: + case 3036676096: + case 3045064704: + case 3053453312: + case 3061841920: + case 3070230528: + case 3078619136: + case 3103784960: + case 3095396352: + case 3128950784: + case 3087007744: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_SOP2(uint64_t I){ + switch( I & 4286578688 ){ + case 2147483648: + case 2155872256: + case 2181038080: + case 2164260864: + case 2172649472: + case 2189426688: + case 2197815296: + case 2206203904: + case 2214592512: + case 2222981120: + case 2231369728: + case 2239758336: + case 2248146944: + case 2256535552: + case 2264924160: + case 2273312768: + case 2399141888: + case 2533359616: + case 2407530496: + case 2541748224: + case 2415919104: + case 2550136832: + case 2298478592: + case 2306867200: + case 2290089984: + case 2315255808: + case 2281701376: + case 2323644416: + case 2332033024: + case 2340421632: + case 2348810240: + case 2357198848: + case 2424307712: + case 2558525440: + case 2432696320: + case 2566914048: + case 2441084928: + case 2575302656: + case 2516582400: + case 2449473536: + case 2583691264: + case 2457862144: + case 2466250752: + case 2474639360: + case 2390753280: + case 2483027968: + case 2524971008: + case 2491416576: + case 2365587456: + case 2499805184: + case 2373976064: + case 2508193792: + case 2382364672: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_SMEM(uint64_t I){ + switch( I & 4294705152 ){ + case 3221225472: + case 3221487616: + case 3222274048: + case 3221749760: + case 3222011904: + case 3222536192: + case 3222798336: + case 3223060480: + case 3223322624: + case 3223584768: + case 3223846912: + case 3224109056: + case 3224371200: + case 3225419776: + case 3225681920: + case 3225944064: + case 3249537024: + case 3229614080: + case 3238002688: + case 3246391296: + case 3254779904: + case 3257925632: + case 3263168512: + case 3229876224: + case 3238264832: + case 3246653440: + case 3255042048: + case 3263430656: + case 3266314240: + case 3230138368: + case 3238526976: + case 3246915584: + case 3255304192: + case 3263692800: + case 3230400512: + case 3238789120: + case 3247177728: + case 3255566336: + case 3263954944: + case 3230662656: + case 3239051264: + case 3247439872: + case 3255828480: + case 3264217088: + case 3226730496: + case 3230924800: + case 3239313408: + case 3247702016: + case 3256090624: + case 3264479232: + case 3226992640: + case 3231186944: + case 3239575552: + case 3247964160: + case 3256352768: + case 3264741376: + case 3227254784: + case 3231449088: + case 3239837696: + case 3248226304: + case 3256614912: + case 3265003520: + case 3227516928: + case 3231711232: + case 3240099840: + case 3248488448: + case 3256877056: + case 3265265664: + case 3227779072: + case 3231973376: + case 3240361984: + case 3248750592: + case 3257139200: + case 3265527808: + case 3249274880: + case 3228041216: + case 3240624128: + case 3249012736: + case 3257401344: + case 3265789952: + case 3257663488: + case 3240886272: + case 3266052096: + case 3241148416: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP1(uint64_t I){ + switch( I & 4261543424 ){ + case 2113929216: + case 2113929728: + case 2113930752: + case 2113931264: + case 2113930240: + case 2113931776: + case 2113932288: + case 2113932800: + case 2113933312: + case 2113934336: + case 2113937408: + case 2113937920: + case 2113941504: + case 2113942016: + case 2113946112: + case 2113950208: + case 2113945600: + case 2113954304: + case 2113958400: + case 2113962496: + case 2113949696: + case 2113953792: + case 2113938432: + case 2113942528: + case 2113946624: + case 2113950720: + case 2113954816: + case 2113958912: + case 2113961984: + case 2113963008: + case 2113967104: + case 2113966080: + case 2113934848: + case 2113938944: + case 2113943040: + case 2113947136: + case 2113951232: + case 2113955328: + case 2113959424: + case 2113963520: + case 2113967616: + case 2113935360: + case 2113939456: + case 2113943552: + case 2113947648: + case 2113951744: + case 2113955840: + case 2113959936: + case 2113964032: + case 2113968128: + case 2113935872: + case 2113939968: + case 2113944064: + case 2113948160: + case 2113952256: + case 2113956352: + case 2113960448: + case 2113964544: + case 2113968640: + case 2113936384: + case 2113940480: + case 2113944576: + case 2113948672: + case 2113952768: + case 2113960960: + case 2113965056: + case 2113969152: + case 2113936896: + case 2113940992: + case 2113945088: + case 2113949184: + case 2113953280: + case 2113957376: + case 2113961472: + case 2113965568: + case 2113969664: + case 2113966592: + case 2113970688: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOPC(uint64_t I){ + switch( I & 4294836224 ){ + case 2082471936: + case 2082603008: + case 2082865152: + case 2082734080: + case 2082996224: + case 2083127296: + case 2084569088: + case 2084700160: + case 2084831232: + case 2084962304: + case 2085093376: + case 2085617664: + case 2088239104: + case 2092433408: + case 2088763392: + case 2092957696: + case 2096627712: + case 2113404928: + case 2109341696: + case 2105278464: + case 2109865984: + case 2105802752: + case 2101739520: + case 2110390272: + case 2106327040: + case 2102263808: + case 2110914560: + case 2090074112: + case 2106851328: + case 2086010880: + case 2102788096: + case 2094661632: + case 2111438848: + case 2090598400: + case 2107375616: + case 2086535168: + case 2103312384: + case 2095185920: + case 2111963136: + case 2091122688: + case 2107899904: + case 2087059456: + case 2103836672: + case 2095710208: + case 2112487424: + case 2108424192: + case 2087583744: + case 2104360960: + case 2108948480: + case 2096234496: + case 2113011712: + case 2085224448: + case 2085748736: + case 2088370176: + case 2092564480: + case 2088894464: + case 2093088768: + case 2089418752: + case 2093613056: + case 2089943040: + case 2094137344: + case 2092171264: + case 2104885248: + case 2096758784: + case 2113536000: + case 2109472768: + case 2105409536: + case 2101346304: + case 2109997056: + case 2105933824: + case 2101870592: + case 2110521344: + case 2106458112: + case 2102394880: + case 2094268416: + case 2111045632: + case 2090205184: + case 2106982400: + case 2086141952: + case 2102919168: + case 2094792704: + case 2111569920: + case 2090729472: + case 2107506688: + case 2086666240: + case 2103443456: + case 2095316992: + case 2112094208: + case 2091253760: + case 2108030976: + case 2087190528: + case 2103967744: + case 2095841280: + case 2112618496: + case 2108555264: + case 2087714816: + case 2104492032: + case 2113142784: + case 2085355520: + case 2087976960: + case 2088501248: + case 2092695552: + case 2091646976: + case 2089025536: + case 2093219840: + case 2089549824: + case 2093744128: + case 2085879808: + case 2096365568: + case 2105016320: + case 2109079552: + case 2096889856: + case 2113667072: + case 2109603840: + case 2105540608: + case 2101477376: + case 2110128128: + case 2089287680: + case 2106064896: + case 2102001664: + case 2110652416: + case 2089811968: + case 2106589184: + case 2102525952: + case 2094399488: + case 2111176704: + case 2090336256: + case 2107113472: + case 2086273024: + case 2103050240: + case 2094923776: + case 2111700992: + case 2090860544: + case 2107637760: + case 2086797312: + case 2103574528: + case 2095448064: + case 2112225280: + case 2091384832: + case 2108162048: + case 2087321600: + case 2104098816: + case 2095972352: + case 2112749568: + case 2091909120: + case 2108686336: + case 2087845888: + case 2104623104: + case 2085486592: + case 2088108032: + case 2092302336: + case 2088632320: + case 2092826624: + case 2089156608: + case 2093350912: + case 2091778048: + case 2089680896: + case 2093875200: + case 2096496640: + case 2109210624: + case 2113273856: + case 2105147392: + case 2097020928: + case 2113798144: + case 2109734912: + case 2105671680: + case 2101608448: + case 2104229888: + case 2093481984: + case 2110259200: + case 2106195968: + case 2102132736: + case 2094006272: + case 2110783488: + case 2106720256: + case 2102657024: + case 2094530560: + case 2111307776: + case 2090467328: + case 2107244544: + case 2086404096: + case 2103181312: + case 2092040192: + case 2112880640: + case 2095054848: + case 2111832064: + case 2090991616: + case 2107768832: + case 2086928384: + case 2103705600: + case 2108817408: + case 2095579136: + case 2112356352: + case 2091515904: + case 2108293120: + case 2087452672: + case 2104754176: + case 2096103424: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP2(uint64_t I){ + switch( I & 4261412864 ){ + case 0: + case 33554432: + case 134217728: + case 67108864: + case 100663296: + case 167772160: + case 201326592: + case 234881024: + case 268435456: + case 301989888: + case 335544320: + case 369098752: + case 402653184: + case 436207616: + case 469762048: + case 503316480: + case 1174405120: + case 1577058304: + case 1308622848: + case 1442840576: + case 939524096: + case 1073741824: + case 1342177280: + case 603979776: + case 637534208: + case 671088640: + case 570425344: + case 536870912: + case 704643072: + case 738197504: + case 838860800: + case 872415232: + case 905969664: + case 1711276032: + case 1845493760: + case 1979711488: + case 1476395008: + case 973078528: + case 1107296256: + case 1375731712: + case 1509949440: + case 1610612736: + case 1644167168: + case 1744830464: + case 1778384896: + case 1912602624: + case 1879048192: + case 2013265920: + case 1006632960: + case 1140850688: + case 1275068416: + case 1409286144: + case 1543503872: + case 1677721600: + case 1811939328: + case 1946157056: + case 2046820352: + case 1040187392: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VINTRP(uint64_t I){ + switch( I & 4228055040 ){ + case 3556769792: + case 3556835328: + case 3556900864: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP3P(uint64_t I){ + switch( I & 4294901760 ){ + case 3548381184: + case 3548446720: + case 3548577792: + case 3548512256: + case 3548643328: + case 3548708864: + case 3548774400: + case 3548839936: + case 3548905472: + case 3548971008: + case 3549036544: + case 3549167616: + case 3549298688: + case 3549560832: + case 3550478336: + case 3549429760: + case 3554213888: + case 3549102080: + case 3549233152: + case 3549364224: + case 3550543872: + case 3549495296: + case 3550674944: + case 3550937088: + case 3551068160: + case 3551199232: + case 3554148352: + case 3550609408: + case 3550871552: + case 3551002624: + case 3551133696: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP3(uint64_t I){ + switch( I & 4294901760 ){ + case 3530555392: + case 3530620928: + case 3510697984: + case 3530686464: + case 3510632448: + case 3510763520: + case 3510829056: + case 3510894592: + case 3510960128: + case 3511025664: + case 3511091200: + case 3514826752: + case 3506438144: + case 3523215360: + case 3508535296: + case 3491758080: + case 3505913856: + case 3504668672: + case 3503423488: + case 3496017920: + case 3512795136: + case 3514892288: + case 3506503680: + case 3531669504: + case 3500212224: + case 3519086592: + case 3523280896: + case 3508600832: + case 3491823616: + case 3500933120: + case 3505520640: + case 3519152128: + case 3521249280: + case 3514957824: + case 3506569216: + case 3512860672: + case 3523346432: + case 3508666368: + case 3491889152: + case 3493986304: + case 3496083456: + case 3504275456: + case 3493855232: + case 3503030272: + case 3508731904: + case 3491954688: + case 3494051840: + case 3496148992: + case 3512926208: + case 3515023360: + case 3506634752: + case 3531800576: + case 3519217664: + case 3521314816: + case 3501785088: + case 3506372608: + case 3495952384: + case 3500539904: + case 3505127424: + case 3531866112: + case 3519283200: + case 3521380352: + case 3515088896: + case 3512991744: + case 3506700288: + case 3523477504: + case 3492020224: + case 3494117376: + case 3496214528: + case 3503882240: + case 3502637056: + case 3501391872: + case 3521445888: + case 3523543040: + case 3492085760: + case 3494182912: + case 3496280064: + case 3513057280: + case 3515154432: + case 3506765824: + case 3531931648: + case 3519348736: + case 3505979392: + case 3500146688: + case 3504734208: + case 3503489024: + case 3494248448: + case 3496345600: + case 3531997184: + case 3519414272: + case 3521511424: + case 3515219968: + case 3513122816: + case 3506831360: + case 3523608576: + case 3508928512: + case 3502243840: + case 3501457408: + case 3532259328: + case 3500998656: + case 3505586176: + case 3519479808: + case 3521576960: + case 3523674112: + case 3508994048: + case 3492216832: + case 3494313984: + case 3496411136: + case 3513188352: + case 3515285504: + case 3506896896: + case 3495165952: + case 3504340992: + case 3493920768: + case 3503095808: + case 3511156736: + case 3515351040: + case 3506962432: + case 3509059584: + case 3492282368: + case 3494379520: + case 3513253888: + case 3496476672: + case 3532128256: + case 3519545344: + case 3500605440: + case 3505192960: + case 3496542208: + case 3513319424: + case 3515416576: + case 3532193792: + case 3519610880: + case 3507027968: + case 3509125120: + case 3492347904: + case 3494445056: + case 3500736512: + case 3503947776: + case 3502702592: + case 3519676416: + case 3521773568: + case 3511287808: + case 3515482112: + case 3513384960: + case 3507093504: + case 3509190656: + case 3492413440: + case 3494510592: + case 3496607744: + case 3491037184: + case 3506044928: + case 3504799744: + case 3509256192: + case 3492478976: + case 3494576128: + case 3496673280: + case 3513450496: + case 3511353344: + case 3515547648: + case 3532324864: + case 3519741952: + case 3521839104: + case 3503554560: + case 3512729600: + case 3502309376: + case 3501064192: + case 3532390400: + case 3519807488: + case 3521904640: + case 3511418880: + case 3515613184: + case 3513516032: + case 3507224576: + case 3509321728: + case 3492544512: + case 3494641664: + case 3505651712: + case 3504406528: + case 3503161344: + case 3521970176: + case 3507290112: + case 3509387264: + case 3492610048: + case 3494707200: + case 3496804352: + case 3513581568: + case 3511484416: + case 3515678720: + case 3532455936: + case 3500670976: + case 3505258496: + case 3494772736: + case 3496869888: + case 3492675584: + case 3519938560: + case 3522035712: + case 3511549952: + case 3515744256: + case 3513647104: + case 3507355648: + case 3509846016: + case 3519021056: + case 3502768128: + case 3532783616: + case 3522363392: + case 3520004096: + case 3522101248: + case 3507421184: + case 3509518336: + case 3492741120: + case 3494838272: + case 3496935424: + case 3513712640: + case 3511615488: + case 3515809792: + case 3501522944: + case 3506110464: + case 3500277760: + case 3504865280: + case 3519873024: + case 3509452800: + case 3511681024: + case 3507486720: + case 3490709504: + case 3509583872: + case 3492806656: + case 3494903808: + case 3513778176: + case 3497000960: + case 3532652544: + case 3520069632: + case 3503620096: + case 3502374912: + case 3501129728: + case 3497066496: + case 3515940864: + case 3513843712: + case 3511746560: + case 3532718080: + case 3520135168: + case 3494969344: + case 3522232320: + case 3507552256: + case 3490775040: + case 3505717248: + case 3504472064: + case 3503226880: + case 3520200704: + case 3522297856: + case 3511812096: + case 3513909248: + case 3507617792: + case 3490840576: + case 3509714944: + case 3492937728: + case 3495034880: + case 3497132032: + case 3505324032: + case 3509780480: + case 3493003264: + case 3495100416: + case 3497197568: + case 3513974784: + case 3511877632: + case 3532849152: + case 3490906112: + case 3507683328: + case 3520266240: + case 3504078848: + case 3502833664: + case 3532914688: + case 3493068800: + case 3520331776: + case 3514040320: + case 3511943168: + case 3522428928: + case 3497263104: + case 3507748864: + case 3530817536: + case 3490971648: + case 3501588480: + case 3506176000: + case 3501326336: + case 3531603968: + case 3500343296: + case 3504930816: + case 3520397312: + case 3495231488: + case 3522494464: + case 3507814400: + case 3509911552: + case 3493134336: + case 3512008704: + case 3514105856: + case 3497328640: + case 3532980224: + case 3503685632: + case 3533701120: + case 3502440448: + case 3501195264: + case 3509977088: + case 3493199872: + case 3495297024: + case 3530948608: + case 3533045760: + case 3520462848: + case 3512074240: + case 3522560000: + case 3497394176: + case 3507879936: + case 3505782784: + case 3504537600: + case 3503292416: + case 3492872192: + case 3533111296: + case 3520528384: + case 3497459712: + case 3522625536: + case 3510042624: + case 3493265408: + case 3495362560: + case 3512139776: + case 3514236928: + case 3531014144: + case 3502047232: + case 3532062720: + case 3500802048: + case 3505389568: + case 3522691072: + case 3510108160: + case 3493330944: + case 3512205312: + case 3495428096: + case 3497525248: + case 3533176832: + case 3520593920: + case 3501719552: + case 3503816704: + case 3504144384: + case 3502899200: + case 3495493632: + case 3512270848: + case 3514368000: + case 3497590784: + case 3533242368: + case 3520659456: + case 3522756608: + case 3510173696: + case 3493396480: + case 3501654016: + case 3506241536: + case 3500408832: + case 3504996352: + case 3520724992: + case 3514433536: + case 3512336384: + case 3522822144: + case 3510239232: + case 3493462016: + case 3495559168: + case 3497656320: + case 3533307904: + case 3501850624: + case 3503751168: + case 3502505984: + case 3501260800: + case 3510304768: + case 3493527552: + case 3495624704: + case 3512401920: + case 3514499072: + case 3497721856: + case 3520790528: + case 3522887680: + case 3501916160: + case 3504013312: + case 3505848320: + case 3504603136: + case 3503357952: + case 3497787392: + case 3533438976: + case 3520856064: + case 3514564608: + case 3512467456: + case 3522953216: + case 3510370304: + case 3493593088: + case 3495690240: + case 3501981696: + case 3500867584: + case 3505455104: + case 3520921600: + case 3523018752: + case 3510435840: + case 3493658624: + case 3495755776: + case 3512532992: + case 3514630144: + case 3497852928: + case 3530883072: + case 3533504512: + case 3502964736: + case 3493724160: + case 3495821312: + case 3497918464: + case 3533570048: + case 3520987136: + case 3514695680: + case 3512598528: + case 3523084288: + case 3502112768: + case 3504209920: + case 3506307072: + case 3531735040: + case 3500474368: + case 3505061888: + case 3509649408: + case 3533635584: + case 3521052672: + case 3523149824: + case 3508469760: + case 3493789696: + case 3495886848: + case 3512664064: + case 3514761216: + case 3497984000: + case 3502178304: + case 3523411968: + case 3502571520: + case 3492151296: + case 3507159040: + case 3496738816: + case 3532587008: + case 3522166784: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_DS(uint64_t I){ + switch( I & 4261281792 ){ + case 3623878656: + case 3624009728: + case 3624271872: + case 3624140800: + case 3624402944: + case 3624534016: + case 3624665088: + case 3624796160: + case 3624927232: + case 3625058304: + case 3625189376: + case 3625451520: + case 3631742976: + case 3635412992: + case 3628072960: + case 3632267264: + case 3644194816: + case 3648782336: + case 3640655872: + case 3636592640: + case 3649306624: + case 3641180160: + case 3637116928: + case 3649830912: + case 3641704448: + case 3637641216: + case 3633577984: + case 3650355200: + case 3629514752: + case 3638165504: + case 3634102272: + case 3630039040: + case 3625975808: + case 3638689792: + case 3634626560: + case 3651403776: + case 3630563328: + case 3626500096: + case 3635150848: + case 3631087616: + case 3643801600: + case 3625582592: + case 3627679744: + case 3631874048: + case 3631349760: + case 3635544064: + case 3628204032: + case 3632398336: + case 3628728320: + case 3632922624: + case 3629252608: + case 3644325888: + case 3652976640: + case 3648913408: + case 3640786944: + case 3636723712: + case 3649437696: + case 3628597248: + case 3641311232: + case 3637248000: + case 3649961984: + case 3629121536: + case 3641835520: + case 3637772288: + case 3633709056: + case 3650486272: + case 3629645824: + case 3642359808: + case 3638296576: + case 3634233344: + case 3630170112: + case 3626106880: + case 3638820864: + case 3634757632: + case 3651534848: + case 3630694400: + case 3626631168: + case 3643408384: + case 3639345152: + case 3635281920: + case 3631218688: + case 3643932672: + case 3625713664: + case 3631480832: + case 3627810816: + case 3632005120: + case 3628335104: + case 3632529408: + case 3635675136: + case 3628859392: + case 3633053696: + case 3629383680: + case 3644456960: + case 3640393728: + case 3657170944: + case 3653107712: + case 3649044480: + case 3640918016: + case 3636854784: + case 3632791552: + case 3649568768: + case 3641442304: + case 3637379072: + case 3633315840: + case 3650093056: + case 3641966592: + case 3637903360: + case 3633840128: + case 3629776896: + case 3638427648: + case 3634364416: + case 3630301184: + case 3626237952: + case 3643015168: + case 3647733760: + case 3638951936: + case 3634888704: + case 3630825472: + case 3639476224: + case 3625320448: + case 3625844736: + case 3631611904: + case 3627941888: + case 3632136192: + case 3628466176: + case 3632660480: + case 3628990464: + case 3633184768: + case 3635806208: + case 3644063744: + case 3648651264: + case 3657302016: + case 3636461568: + case 3649175552: + case 3641049088: + case 3636985856: + case 3649699840: + case 3641573376: + case 3637510144: + case 3633446912: + case 3650224128: + case 3642097664: + case 3638034432: + case 3633971200: + case 3650748416: + case 3629907968: + case 3638558720: + case 3634495488: + case 3630432256: + case 3626369024: + case 3643146240: + case 3635019776: + case 3630956544: + case 3639607296: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_MUBUF(uint64_t I){ + switch( I & 4261150720 ){ + case 3758096384: + case 3758358528: + case 3759144960: + case 3758620672: + case 3758882816: + case 3759407104: + case 3759669248: + case 3759931392: + case 3760193536: + case 3760455680: + case 3760717824: + case 3760979968: + case 3761242112: + case 3761504256: + case 3761766400: + case 3762028544: + case 3765698560: + case 3765960704: + case 3774349312: + case 3778019328: + case 3778543616: + case 3766222848: + case 3774611456: + case 3786407936: + case 3762290688: + case 3766484992: + case 3774873600: + case 3783262208: + case 3762552832: + case 3766747136: + case 3775135744: + case 3783524352: + case 3762814976: + case 3767009280: + case 3775397888: + case 3783786496: + case 3774087168: + case 3763077120: + case 3767271424: + case 3775660032: + case 3778281472: + case 3784048640: + case 3763339264: + case 3767533568: + case 3775922176: + case 3784310784: + case 3763601408: + case 3767795712: + case 3776184320: + case 3784572928: + case 3763863552: + case 3768057856: + case 3776446464: + case 3784835072: + case 3764125696: + case 3768320000: + case 3776708608: + case 3785097216: + case 3764387840: + case 3776970752: + case 3785359360: + case 3777757184: + case 3764649984: + case 3777232896: + case 3785621504: + case 3786145792: + case 3764912128: + case 3777495040: + case 3785883648: + case 3765174272: + case 3765436416: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_MTBUF(uint64_t I){ + switch( I & 4228349952 ){ + case 3892314112: + case 3892346880: + case 3892412416: + case 3892445184: + case 3892379648: + case 3892477952: + case 3892510720: + case 3892543488: + case 3892576256: + case 3892609024: + case 3892641792: + case 3892674560: + case 3892707328: + case 3892740096: + case 3892772864: + case 3892805632: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_MIMG(uint64_t I){ + switch( I & 4261150720 ){ + case 4026531840: + case 4026793984: + case 4027580416: + case 4027056128: + case 4027318272: + case 4027842560: + case 4028628992: + case 4028891136: + case 4029153280: + case 4029415424: + case 4030201856: + case 4030726144: + case 4031250432: + case 4031774720: + case 4038066176: + case 4038590464: + case 4042784768: + case 4043309056: + case 4043833344: + case 4035706880: + case 4044357632: + case 4036231168: + case 4044881920: + case 4036755456: + case 4045406208: + case 4037279744: + case 4054056960: + case 4045930496: + case 4037804032: + case 4054581248: + case 4046454784: + case 4038328320: + case 4055105536: + case 4046979072: + case 4055629824: + case 4047503360: + case 4039901184: + case 4048551936: + case 4040425472: + case 4032299008: + case 4049076224: + case 4040949760: + case 4032823296: + case 4049600512: + case 4041474048: + case 4033347584: + case 4041998336: + case 4050649088: + case 4033871872: + case 4030988288: + case 4031512576: + case 4038852608: + case 4043046912: + case 4047241216: + case 4051435520: + case 4035182592: + case 4039376896: + case 4043571200: + case 4047765504: + case 4042522624: + case 4051173376: + case 4034920448: + case 4051697664: + case 4035444736: + case 4050911232: + case 4035969024: + case 4044619776: + case 4036493312: + case 4045144064: + case 4037017600: + case 4053794816: + case 4045668352: + case 4037541888: + case 4054319104: + case 4046192640: + case 4054843392: + case 4046716928: + case 4055367680: + case 4039114752: + case 4039639040: + case 4040163328: + case 4032036864: + case 4048814080: + case 4040687616: + case 4032561152: + case 4049338368: + case 4041211904: + case 4033085440: + case 4049862656: + case 4041736192: + case 4033609728: + case 4042260480: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_EXP(uint64_t I){ + switch( I & 4227858432 ){ + case 3288334336: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_FLAT(uint64_t I){ + switch( I & 4261199872 ){ + case 3695181824: + case 3695443968: + case 3696230400: + case 3695706112: + case 3695968256: + case 3696492544: + case 3696754688: + case 3697016832: + case 3697278976: + case 3697541120: + case 3697803264: + case 3698065408: + case 3698327552: + case 3698589696: + case 3698851840: + case 3699113984: + case 3699376128: + case 3707764736: + case 3716153344: + case 3699638272: + case 3708026880: + case 3716415488: + case 3719036928: + case 3699900416: + case 3708289024: + case 3716677632: + case 3700162560: + case 3708551168: + case 3716939776: + case 3700424704: + case 3708813312: + case 3717201920: + case 3700686848: + case 3709075456: + case 3717464064: + case 3709337600: + case 3717726208: + case 3709599744: + case 3717988352: + case 3719299072: + case 3709861888: + case 3718250496: + case 3710124032: + case 3718512640: + case 3710386176: + case 3718774784: + case 3710648320: + case 3710910464: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_FLAT_GLBL(uint64_t I){ + switch( I & 4261199872 ){ + case 3695214592: + case 3695476736: + case 3696263168: + case 3696001024: + case 3695738880: + case 3696525312: + case 3696787456: + case 3697049600: + case 3697311744: + case 3697573888: + case 3697836032: + case 3710156800: + case 3718545408: + case 3710418944: + case 3718807552: + case 3710681088: + case 3719069696: + case 3710943232: + case 3719331840: + case 3698098176: + case 3698360320: + case 3698622464: + case 3698884608: + case 3699146752: + case 3699408896: + case 3699671040: + case 3699933184: + case 3700457472: + case 3700195328: + case 3711205376: + case 3711467520: + case 3718021120: + case 3707797504: + case 3716186112: + case 3708059648: + case 3716448256: + case 3708321792: + case 3716710400: + case 3709894656: + case 3708583936: + case 3716972544: + case 3718283264: + case 3708846080: + case 3717234688: + case 3700719616: + case 3709108224: + case 3717496832: + case 3709370368: + case 3717758976: + case 3709632512: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_FLAT_SCRATCH(uint64_t I){ + switch( I & 4261199872 ){ + case 3695198208: + case 3695460352: + case 3696246784: + case 3695722496: + case 3695984640: + case 3696508928: + case 3696771072: + case 3697033216: + case 3697295360: + case 3697557504: + case 3697819648: + case 3698081792: + case 3698343936: + case 3698606080: + case 3698868224: + case 3699130368: + case 3699392512: + case 3699654656: + case 3699916800: + case 3700178944: + case 3700441088: + case 3700703232: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_SOPK_INST_LITERAL_(uint64_t I){ + switch( I & 4286578688 ){ + case 3120562176: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP2_LITERAL(uint64_t I){ + switch( I & 4261412864 ){ + case 771751936: + case 805306368: + case 1207959552: + case 1241513984: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP3B(uint64_t I){ + switch( I & 4294901760 ){ + case 3508076544: + case 3508142080: + case 3508338688: + case 3508207616: + case 3508273152: + case 3508404224: + case 3521118208: + case 3521183744: + case 3521642496: + case 3521708032: + return true; + default: + return false; + } +} +bool InstructionDecoder_amdgpu_gfx908::IS_ENC_VOP3P_MFMA(uint64_t I){ + switch( I & 4294901760 ){ + case 3552575488: + case 3552641024: + case 3552903168: + case 3552706560: + case 3552837632: + case 3553099776: + case 3553165312: + case 3553230848: + case 3553361920: + case 3553427456: + case 3553624064: + case 3553689600: + case 3553755136: + case 3553886208: + case 3553951744: + case 3555196928: + case 3555262464: + case 3555393536: + case 3555459072: + case 3555524608: + return true; + default: + return false; + } +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_SOP1(){ + insn_size = 4; + layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<8,15>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SSRC0 = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOP1Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_SOPC(){ + insn_size = 4; + layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.SSRC0 = longfield<0,7>(insn_long); + layout.SSRC1 = longfield<8,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOPCOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_SOPP(){ + insn_size = 4; + layout_ENC_SOPP & layout = insn_layout.ENC_SOPP; + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.SIMM16 = longfield<0,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOPPOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_SOPK(){ + insn_size = 4; + layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; + layout.ENCODING = longfield<28,31>(insn_long); + layout.OP = longfield<23,27>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SIMM16 = longfield<0,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOPKOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_SOP2(){ + insn_size = 4; + layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; + layout.ENCODING = longfield<30,31>(insn_long); + layout.OP = longfield<23,29>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SSRC0 = longfield<0,7>(insn_long); + layout.SSRC1 = longfield<8,15>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SOP2Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_SMEM(){ + insn_size = 8; + layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.IMM = longfield<17,17>(insn_long); + layout.NV = longfield<15,15>(insn_long); + layout.OFFSET = longfield<32,52>(insn_long); + layout.OP = longfield<18,25>(insn_long); + layout.SBASE = (longfield<0,5>(insn_long) << 1 ) | 0 ; + layout.SDATA = longfield<6,12>(insn_long); + layout.SOFFSET = longfield<57,63>(insn_long); + layout.SOFFSET_EN = longfield<14,14>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_SMEMOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP1(){ + insn_size = 4; + layout_ENC_VOP1 & layout = insn_layout.ENC_VOP1; + layout.ENCODING = longfield<25,31>(insn_long); + layout.OP = longfield<9,16>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VDST = longfield<17,24>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP1Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOPC(){ + insn_size = 4; + layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; + layout.ENCODING = longfield<25,31>(insn_long); + layout.OP = longfield<17,24>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VSRC1 = longfield<9,16>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOPCOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP2(){ + insn_size = 4; + layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; + layout.ENCODING = longfield<31,31>(insn_long); + layout.OP = longfield<25,30>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VDST = longfield<17,24>(insn_long); + layout.VSRC1 = longfield<9,16>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP2Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VINTRP(){ + insn_size = 4; + layout_ENC_VINTRP & layout = insn_layout.ENC_VINTRP; + layout.ATTR = longfield<10,15>(insn_long); + layout.ATTRCHAN = longfield<8,9>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.OP = longfield<16,17>(insn_long); + layout.VDST = longfield<18,25>(insn_long); + layout.VSRC = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VINTRPOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3P(){ + insn_size = 8; + layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; + layout.CLAMP = longfield<15,15>(insn_long); + layout.ENCODING = longfield<23,31>(insn_long); + layout.NEG = longfield<61,63>(insn_long); + layout.NEG_HI = longfield<8,10>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.OP_SEL = longfield<11,13>(insn_long); + layout.OP_SEL_HI = longfield<59,60>(insn_long); + layout.OP_SEL_HI_2 = longfield<14,14>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3POperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3(){ + insn_size = 8; + layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; + layout.ABS = longfield<8,10>(insn_long); + layout.CLAMP = longfield<15,15>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.NEG = longfield<61,63>(insn_long); + layout.OMOD = longfield<59,60>(insn_long); + layout.OP = longfield<16,25>(insn_long); + layout.OP_SEL = longfield<11,14>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_DS(){ + insn_size = 8; + layout_ENC_DS & layout = insn_layout.ENC_DS; + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA0 = longfield<40,47>(insn_long); + layout.DATA1 = longfield<48,55>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GDS = longfield<16,16>(insn_long); + layout.OFFSET0 = longfield<0,7>(insn_long); + layout.OFFSET1 = longfield<8,15>(insn_long); + layout.OP = longfield<17,24>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_DS_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_DS_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_DS_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_DSOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_MUBUF(){ + insn_size = 8; + layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<14,14>(insn_long); + layout.IDXEN = longfield<13,13>(insn_long); + layout.LDS = longfield<16,16>(insn_long); + layout.OFFEN = longfield<12,12>(insn_long); + layout.OFFSET = longfield<0,11>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.SOFFSET = longfield<56,63>(insn_long); + layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; + layout.TFE = longfield<55,55>(insn_long); + layout.VADDR = longfield<32,39>(insn_long); + layout.VDATA = longfield<40,47>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_MUBUFOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_MTBUF(){ + insn_size = 8; + layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; + layout.DFMT = longfield<19,22>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<14,14>(insn_long); + layout.IDXEN = longfield<13,13>(insn_long); + layout.NFMT = longfield<23,25>(insn_long); + layout.OFFEN = longfield<12,12>(insn_long); + layout.OFFSET = longfield<0,11>(insn_long); + layout.OP = longfield<15,18>(insn_long); + layout.SLC = longfield<54,54>(insn_long); + layout.SOFFSET = longfield<56,63>(insn_long); + layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; + layout.TFE = longfield<55,55>(insn_long); + layout.VADDR = longfield<32,39>(insn_long); + layout.VDATA = longfield<40,47>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_MTBUFOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_MIMG(){ + insn_size = 8; + layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; + layout.A16 = longfield<15,15>(insn_long); + layout.D16 = longfield<63,63>(insn_long); + layout.DA = longfield<14,14>(insn_long); + layout.DMASK = longfield<8,11>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<13,13>(insn_long); + layout.LWE = longfield<17,17>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.OPM = longfield<0,0>(insn_long); + layout.SLC = longfield<25,25>(insn_long); + layout.SRSRC = (longfield<48,52>(insn_long) << 2 ) | 0 ; + layout.SSAMP = (longfield<53,57>(insn_long) << 2 ) | 0 ; + layout.TFE = longfield<16,16>(insn_long); + layout.UNORM = longfield<12,12>(insn_long); + layout.VADDR = longfield<32,39>(insn_long); + layout.VDATA = longfield<40,47>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_MIMGOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_EXP(){ + insn_size = 8; + layout_ENC_EXP & layout = insn_layout.ENC_EXP; +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT(){ + insn_size = 8; + layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA = longfield<40,47>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.LDS = longfield<13,13>(insn_long); + layout.NV = longfield<55,55>(insn_long); + layout.OFFSET = longfield<0,11>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SADDR = longfield<48,54>(insn_long); + layout.SEG = longfield<14,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_FLATOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT_GLBL(){ + insn_size = 8; + layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA = longfield<40,47>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.LDS = longfield<13,13>(insn_long); + layout.NV = longfield<55,55>(insn_long); + layout.OFFSET = longfield<0,12>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SADDR = longfield<48,54>(insn_long); + layout.SEG = longfield<14,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_FLAT_GLBLOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT_SCRATCH(){ + insn_size = 8; + layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; + layout.ADDR = longfield<32,39>(insn_long); + layout.DATA = longfield<40,47>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.GLC = longfield<16,16>(insn_long); + layout.LDS = longfield<13,13>(insn_long); + layout.NV = longfield<55,55>(insn_long); + layout.OFFSET = longfield<0,12>(insn_long); + layout.OP = longfield<18,24>(insn_long); + layout.SADDR = longfield<48,54>(insn_long); + layout.SEG = longfield<14,15>(insn_long); + layout.SLC = longfield<17,17>(insn_long); + layout.VDST = longfield<56,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_FLAT_SCRATCHOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeSOPK_INST_LITERAL_(){ + insn_size = 8; + layout_SOPK_INST_LITERAL_ & layout = insn_layout.SOPK_INST_LITERAL_; + layout.ENCODING = longfield<28,31>(insn_long); + layout.OP = longfield<23,27>(insn_long); + layout.SDST = longfield<16,22>(insn_long); + layout.SIMM16 = longfield<0,15>(insn_long); + layout.SIMM32 = longfield<32,63>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table) / sizeof(amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeSOPK_INST_LITERAL_Operands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP2_LITERAL(){ + insn_size = 8; + layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; + layout.ENCODING = longfield<31,31>(insn_long); + layout.OP = longfield<25,30>(insn_long); + layout.SIMM32 = longfield<32,63>(insn_long); + layout.SRC0 = longfield<0,8>(insn_long); + layout.VDST = longfield<17,24>(insn_long); + layout.VSRC1 = longfield<9,16>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP2_LITERALOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3B(){ + insn_size = 8; + layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; + layout.CLAMP = longfield<15,15>(insn_long); + layout.ENCODING = longfield<26,31>(insn_long); + layout.NEG = longfield<61,63>(insn_long); + layout.OMOD = longfield<59,60>(insn_long); + layout.OP = longfield<16,25>(insn_long); + layout.SDST = longfield<8,14>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3BOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3P_MFMA(){ + insn_size = 8; + layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; + layout.ABID = longfield<11,14>(insn_long); + layout.ACC = longfield<59,60>(insn_long); + layout.BLGP = longfield<61,63>(insn_long); + layout.CBSZ = longfield<8,10>(insn_long); + layout.ENCODING = longfield<23,31>(insn_long); + layout.OP = longfield<16,22>(insn_long); + layout.SRC0 = longfield<32,40>(insn_long); + layout.SRC1 = longfield<41,49>(insn_long); + layout.SRC2 = longfield<50,58>(insn_long); + layout.VDST = longfield<0,7>(insn_long); + assert( layout.OP >= 0 && layout.OP < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table[layout.OP]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + finalizeENC_VOP3P_MFMAOperands(); + this->insn_in_progress->updateSize(insn_size + immLen); +} +void InstructionDecoder_amdgpu_gfx908::mainDecodeOpcode(){ + if(IS_ENC_SOP1(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<8,15>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOP1; + } + else if(IS_ENC_SOPC(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOPC; + } + else if(IS_ENC_SOPP(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOPP; + } + else if(IS_ENC_SOPK(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<23,27>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOPK; + } + else if(IS_ENC_SOP2(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<23,29>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SOP2; + } + else if(IS_ENC_SMEM(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<18,25>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_SMEM; + } + else if(IS_ENC_VOP1(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<9,16>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP1; + } + else if(IS_ENC_VOPC(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<17,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOPC; + } + else if(IS_ENC_VOP2(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<25,30>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP2; + } + else if(IS_ENC_VINTRP(insn_long)){ + insn_size = 4; + uint32_t op_value = longfield<16,17>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VINTRP; + } + else if(IS_ENC_VOP3P(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3P; + } + else if(IS_ENC_VOP3(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<16,25>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3; + } + else if(IS_ENC_DS(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<17,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_DS_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_DS_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_DS_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_DS; + } + else if(IS_ENC_MUBUF(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_MUBUF; + } + else if(IS_ENC_MTBUF(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<15,18>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_MTBUF; + } + else if(IS_ENC_MIMG(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_MIMG; + } + else if(IS_ENC_EXP(insn_long)){ + insn_size = 8; + instr_family = ENC_EXP; + } + else if(IS_ENC_FLAT(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_FLAT; + } + else if(IS_ENC_FLAT_GLBL(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_FLAT_GLBL; + } + else if(IS_ENC_FLAT_SCRATCH(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<18,24>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_FLAT_SCRATCH; + } + else if(IS_SOPK_INST_LITERAL_(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<23,27>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table) / sizeof(amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = SOPK_INST_LITERAL_; + } + else if(IS_ENC_VOP2_LITERAL(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<25,30>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP2_LITERAL; + } + else if(IS_ENC_VOP3B(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<16,25>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3B; + } + else if(IS_ENC_VOP3P_MFMA(insn_long)){ + insn_size = 8; + uint32_t op_value = longfield<16,22>(insn_long); + assert( op_value < sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table) / sizeof(amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table[0]) && "Opcode over or underflow"); + const amdgpu_gfx908_insn_entry &insn_entry = amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table[op]; + this->insn_in_progress = makeInstruction(insn_entry.op,insn_entry.mnemonic,insn_size+immLen,reinterpret_cast(&insn)); + instr_family = ENC_VOP3P_MFMA; + } +} +void InstructionDecoder_amdgpu_gfx908::mainDecode(){ + if(IS_ENC_SOP1(insn_long)){ + decodeENC_SOP1(); + } + else if(IS_ENC_SOPC(insn_long)){ + decodeENC_SOPC(); + } + else if(IS_ENC_SOPP(insn_long)){ + decodeENC_SOPP(); + } + else if(IS_ENC_SOPK(insn_long)){ + decodeENC_SOPK(); + } + else if(IS_ENC_SOP2(insn_long)){ + decodeENC_SOP2(); + } + else if(IS_ENC_SMEM(insn_long)){ + decodeENC_SMEM(); + } + else if(IS_ENC_VOP1(insn_long)){ + decodeENC_VOP1(); + } + else if(IS_ENC_VOPC(insn_long)){ + decodeENC_VOPC(); + } + else if(IS_ENC_VOP2(insn_long)){ + decodeENC_VOP2(); + } + else if(IS_ENC_VINTRP(insn_long)){ + decodeENC_VINTRP(); + } + else if(IS_ENC_VOP3P(insn_long)){ + decodeENC_VOP3P(); + } + else if(IS_ENC_VOP3(insn_long)){ + decodeENC_VOP3(); + } + else if(IS_ENC_DS(insn_long)){ + decodeENC_DS(); + } + else if(IS_ENC_MUBUF(insn_long)){ + decodeENC_MUBUF(); + } + else if(IS_ENC_MTBUF(insn_long)){ + decodeENC_MTBUF(); + } + else if(IS_ENC_MIMG(insn_long)){ + decodeENC_MIMG(); + } + else if(IS_ENC_EXP(insn_long)){ + decodeENC_EXP(); + } + else if(IS_ENC_FLAT(insn_long)){ + decodeENC_FLAT(); + } + else if(IS_ENC_FLAT_GLBL(insn_long)){ + decodeENC_FLAT_GLBL(); + } + else if(IS_ENC_FLAT_SCRATCH(insn_long)){ + decodeENC_FLAT_SCRATCH(); + } + else if(IS_SOPK_INST_LITERAL_(insn_long)){ + decodeSOPK_INST_LITERAL_(); + } + else if(IS_ENC_VOP2_LITERAL(insn_long)){ + decodeENC_VOP2_LITERAL(); + } + else if(IS_ENC_VOP3B(insn_long)){ + decodeENC_VOP3B(); + } + else if(IS_ENC_VOP3P_MFMA(insn_long)){ + decodeENC_VOP3P_MFMA(); + } +} diff --git a/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.h b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.h new file mode 100644 index 0000000000..41849f55a7 --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.h @@ -0,0 +1,401 @@ +static bool IS_ENC_SOP1(uint64_t I); +static bool IS_ENC_SOPC(uint64_t I); +static bool IS_ENC_SOPP(uint64_t I); +static bool IS_ENC_SOPK(uint64_t I); +static bool IS_ENC_SOP2(uint64_t I); +static bool IS_ENC_SMEM(uint64_t I); +static bool IS_ENC_VOP1(uint64_t I); +static bool IS_ENC_VOPC(uint64_t I); +static bool IS_ENC_VOP2(uint64_t I); +static bool IS_ENC_VINTRP(uint64_t I); +static bool IS_ENC_VOP3P(uint64_t I); +static bool IS_ENC_VOP3(uint64_t I); +static bool IS_ENC_DS(uint64_t I); +static bool IS_ENC_MUBUF(uint64_t I); +static bool IS_ENC_MTBUF(uint64_t I); +static bool IS_ENC_MIMG(uint64_t I); +static bool IS_ENC_EXP(uint64_t I); +static bool IS_ENC_FLAT(uint64_t I); +static bool IS_ENC_FLAT_GLBL(uint64_t I); +static bool IS_ENC_FLAT_SCRATCH(uint64_t I); +static bool IS_SOPK_INST_LITERAL_(uint64_t I); +static bool IS_ENC_VOP2_LITERAL(uint64_t I); +static bool IS_ENC_VOP3B(uint64_t I); +static bool IS_ENC_VOP3P_MFMA(uint64_t I); +enum InstructionFamily{ + ENC_SOP1 = -1, + ENC_SOPC = 0, + ENC_SOPP = 1, + ENC_SOPK = 2, + ENC_SOP2 = 3, + ENC_SMEM = 4, + ENC_VOP1 = 5, + ENC_VOPC = 6, + ENC_VOP2 = 7, + ENC_VINTRP = 8, + ENC_VOP3P = 9, + ENC_VOP3 = 10, + ENC_DS = 11, + ENC_MUBUF = 12, + ENC_MTBUF = 13, + ENC_MIMG = 14, + ENC_EXP = 15, + ENC_FLAT = 16, + ENC_FLAT_GLBL = 17, + ENC_FLAT_SCRATCH = 18, + SOPK_INST_LITERAL_ = 19, + ENC_VOP2_LITERAL = 20, + ENC_VOP3B = 21, + ENC_VOP3P_MFMA = 22, +}; +InstructionFamily instr_family; +typedef void (InstructionDecoder_amdgpu_gfx908::*func_ptr)(void); +func_ptr decode_lookup_table [24] = { + (&InstructionDecoder_amdgpu_gfx908::decodeENC_SOP1), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_SOPC), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_SOPP), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_SOPK), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_SOP2), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_SMEM), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP1), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOPC), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP2), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VINTRP), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3P), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_DS), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_MUBUF), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_MTBUF), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_MIMG), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_EXP), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT_GLBL), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT_SCRATCH), + (&InstructionDecoder_amdgpu_gfx908::decodeSOPK_INST_LITERAL_), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP2_LITERAL), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3B), + (&InstructionDecoder_amdgpu_gfx908::decodeENC_VOP3P_MFMA), +}; +typedef struct layout_ENC_SOP1{ + uint16_t ENCODING : 9 ; + uint8_t OP : 8 ; + uint8_t SDST : 7 ; + uint8_t SSRC0 : 8 ; +}layout_ENC_SOP1; +typedef struct layout_ENC_SOPC{ + uint16_t ENCODING : 9 ; + uint8_t OP : 7 ; + uint8_t SSRC0 : 8 ; + uint8_t SSRC1 : 8 ; +}layout_ENC_SOPC; +typedef struct layout_ENC_SOPP{ + uint16_t ENCODING : 9 ; + uint8_t OP : 7 ; + uint16_t SIMM16 : 16 ; +}layout_ENC_SOPP; +typedef struct layout_ENC_SOPK{ + uint8_t ENCODING : 4 ; + uint8_t OP : 5 ; + uint8_t SDST : 7 ; + uint16_t SIMM16 : 16 ; +}layout_ENC_SOPK; +typedef struct layout_ENC_SOP2{ + uint8_t ENCODING : 2 ; + uint8_t OP : 7 ; + uint8_t SDST : 7 ; + uint8_t SSRC0 : 8 ; + uint8_t SSRC1 : 8 ; +}layout_ENC_SOP2; +typedef struct layout_ENC_SMEM{ + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t IMM : 1 ; + uint8_t NV : 1 ; + uint32_t OFFSET : 21 ; + uint8_t OP : 8 ; + uint8_t SBASE : 6 ; + uint8_t SDATA : 7 ; + uint8_t SOFFSET : 7 ; + uint8_t SOFFSET_EN : 1 ; +}layout_ENC_SMEM; +typedef struct layout_ENC_VOP1{ + uint8_t ENCODING : 7 ; + uint8_t OP : 8 ; + uint16_t SRC0 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP1; +typedef struct layout_ENC_VOPC{ + uint8_t ENCODING : 7 ; + uint8_t OP : 8 ; + uint16_t SRC0 : 9 ; + uint8_t VSRC1 : 8 ; +}layout_ENC_VOPC; +typedef struct layout_ENC_VOP2{ + uint8_t ENCODING : 1 ; + uint8_t OP : 6 ; + uint16_t SRC0 : 9 ; + uint8_t VDST : 8 ; + uint8_t VSRC1 : 8 ; +}layout_ENC_VOP2; +typedef struct layout_ENC_VINTRP{ + uint8_t ATTR : 6 ; + uint8_t ATTRCHAN : 2 ; + uint8_t ENCODING : 6 ; + uint8_t OP : 2 ; + uint8_t VDST : 8 ; + uint8_t VSRC : 8 ; +}layout_ENC_VINTRP; +typedef struct layout_ENC_VOP3P{ + uint8_t CLAMP : 1 ; + uint16_t ENCODING : 9 ; + uint8_t NEG : 3 ; + uint8_t NEG_HI : 3 ; + uint8_t OP : 7 ; + uint8_t OP_SEL : 3 ; + uint8_t OP_SEL_HI : 2 ; + uint8_t OP_SEL_HI_2 : 1 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3P; +typedef struct layout_ENC_VOP3{ + uint8_t ABS : 3 ; + uint8_t CLAMP : 1 ; + uint8_t ENCODING : 6 ; + uint8_t NEG : 3 ; + uint8_t OMOD : 2 ; + uint16_t OP : 10 ; + uint8_t OP_SEL : 4 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3; +typedef struct layout_ENC_DS{ + uint8_t ADDR : 8 ; + uint8_t DATA0 : 8 ; + uint8_t DATA1 : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GDS : 1 ; + uint8_t OFFSET0 : 8 ; + uint8_t OFFSET1 : 8 ; + uint8_t OP : 8 ; + uint8_t VDST : 8 ; +}layout_ENC_DS; +typedef struct layout_ENC_MUBUF{ + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t IDXEN : 1 ; + uint8_t LDS : 1 ; + uint8_t OFFEN : 1 ; + uint16_t OFFSET : 12 ; + uint8_t OP : 7 ; + uint8_t SLC : 1 ; + uint8_t SOFFSET : 8 ; + uint8_t SRSRC : 5 ; + uint8_t TFE : 1 ; + uint8_t VADDR : 8 ; + uint8_t VDATA : 8 ; +}layout_ENC_MUBUF; +typedef struct layout_ENC_MTBUF{ + uint8_t DFMT : 4 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t IDXEN : 1 ; + uint8_t NFMT : 3 ; + uint8_t OFFEN : 1 ; + uint16_t OFFSET : 12 ; + uint8_t OP : 4 ; + uint8_t SLC : 1 ; + uint8_t SOFFSET : 8 ; + uint8_t SRSRC : 5 ; + uint8_t TFE : 1 ; + uint8_t VADDR : 8 ; + uint8_t VDATA : 8 ; +}layout_ENC_MTBUF; +typedef struct layout_ENC_MIMG{ + uint8_t A16 : 1 ; + uint8_t D16 : 1 ; + uint8_t DA : 1 ; + uint8_t DMASK : 4 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LWE : 1 ; + uint8_t OP : 7 ; + uint8_t OPM : 1 ; + uint8_t SLC : 1 ; + uint8_t SRSRC : 5 ; + uint8_t SSAMP : 5 ; + uint8_t TFE : 1 ; + uint8_t UNORM : 1 ; + uint8_t VADDR : 8 ; + uint8_t VDATA : 8 ; +}layout_ENC_MIMG; +typedef struct layout_ENC_EXP{ + uint8_t COMPR : 1 ; + uint8_t DONE : 1 ; + uint8_t EN : 4 ; + uint8_t ENCODING : 6 ; + uint8_t TGT : 6 ; + uint8_t VM : 1 ; + uint8_t VSRC0 : 8 ; + uint8_t VSRC1 : 8 ; + uint8_t VSRC2 : 8 ; + uint8_t VSRC3 : 8 ; +}layout_ENC_EXP; +typedef struct layout_ENC_FLAT{ + uint8_t ADDR : 8 ; + uint8_t DATA : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LDS : 1 ; + uint8_t NV : 1 ; + uint16_t OFFSET : 12 ; + uint8_t OP : 7 ; + uint8_t SADDR : 7 ; + uint8_t SEG : 2 ; + uint8_t SLC : 1 ; + uint8_t VDST : 8 ; +}layout_ENC_FLAT; +typedef struct layout_ENC_FLAT_GLBL{ + uint8_t ADDR : 8 ; + uint8_t DATA : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LDS : 1 ; + uint8_t NV : 1 ; + uint16_t OFFSET : 13 ; + uint8_t OP : 7 ; + uint8_t SADDR : 7 ; + uint8_t SEG : 2 ; + uint8_t SLC : 1 ; + uint8_t VDST : 8 ; +}layout_ENC_FLAT_GLBL; +typedef struct layout_ENC_FLAT_SCRATCH{ + uint8_t ADDR : 8 ; + uint8_t DATA : 8 ; + uint8_t ENCODING : 6 ; + uint8_t GLC : 1 ; + uint8_t LDS : 1 ; + uint8_t NV : 1 ; + uint16_t OFFSET : 13 ; + uint8_t OP : 7 ; + uint8_t SADDR : 7 ; + uint8_t SEG : 2 ; + uint8_t SLC : 1 ; + uint8_t VDST : 8 ; +}layout_ENC_FLAT_SCRATCH; +typedef struct layout_SOPK_INST_LITERAL_{ + uint8_t ENCODING : 4 ; + uint8_t OP : 5 ; + uint8_t SDST : 7 ; + uint16_t SIMM16 : 16 ; + uint32_t SIMM32 : 32 ; +}layout_SOPK_INST_LITERAL_; +typedef struct layout_ENC_VOP2_LITERAL{ + uint8_t ENCODING : 1 ; + uint8_t OP : 6 ; + uint32_t SIMM32 : 32 ; + uint16_t SRC0 : 9 ; + uint8_t VDST : 8 ; + uint8_t VSRC1 : 8 ; +}layout_ENC_VOP2_LITERAL; +typedef struct layout_ENC_VOP3B{ + uint8_t CLAMP : 1 ; + uint8_t ENCODING : 6 ; + uint8_t NEG : 3 ; + uint8_t OMOD : 2 ; + uint16_t OP : 10 ; + uint8_t SDST : 7 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3B; +typedef struct layout_ENC_VOP3P_MFMA{ + uint8_t ABID : 4 ; + uint8_t ACC : 2 ; + uint8_t BLGP : 3 ; + uint8_t CBSZ : 3 ; + uint16_t ENCODING : 9 ; + uint8_t OP : 7 ; + uint16_t SRC0 : 9 ; + uint16_t SRC1 : 9 ; + uint16_t SRC2 : 9 ; + uint8_t VDST : 8 ; +}layout_ENC_VOP3P_MFMA; +union insn_layout{ + layout_ENC_SOP1 ENC_SOP1; + layout_ENC_SOPC ENC_SOPC; + layout_ENC_SOPP ENC_SOPP; + layout_ENC_SOPK ENC_SOPK; + layout_ENC_SOP2 ENC_SOP2; + layout_ENC_SMEM ENC_SMEM; + layout_ENC_VOP1 ENC_VOP1; + layout_ENC_VOPC ENC_VOPC; + layout_ENC_VOP2 ENC_VOP2; + layout_ENC_VINTRP ENC_VINTRP; + layout_ENC_VOP3P ENC_VOP3P; + layout_ENC_VOP3 ENC_VOP3; + layout_ENC_DS ENC_DS; + layout_ENC_MUBUF ENC_MUBUF; + layout_ENC_MTBUF ENC_MTBUF; + layout_ENC_MIMG ENC_MIMG; + layout_ENC_EXP ENC_EXP; + layout_ENC_FLAT ENC_FLAT; + layout_ENC_FLAT_GLBL ENC_FLAT_GLBL; + layout_ENC_FLAT_SCRATCH ENC_FLAT_SCRATCH; + layout_SOPK_INST_LITERAL_ SOPK_INST_LITERAL_; + layout_ENC_VOP2_LITERAL ENC_VOP2_LITERAL; + layout_ENC_VOP3B ENC_VOP3B; + layout_ENC_VOP3P_MFMA ENC_VOP3P_MFMA; +}insn_layout; +void decodeENC_SOP1(); +void finalizeENC_SOP1Operands(); +void decodeENC_SOPC(); +void finalizeENC_SOPCOperands(); +void decodeENC_SOPP(); +void finalizeENC_SOPPOperands(); +void decodeENC_SOPK(); +void finalizeENC_SOPKOperands(); +void decodeENC_SOP2(); +void finalizeENC_SOP2Operands(); +void decodeENC_SMEM(); +void finalizeENC_SMEMOperands(); +void decodeENC_VOP1(); +void finalizeENC_VOP1Operands(); +void decodeENC_VOPC(); +void finalizeENC_VOPCOperands(); +void decodeENC_VOP2(); +void finalizeENC_VOP2Operands(); +void decodeENC_VINTRP(); +void finalizeENC_VINTRPOperands(); +void decodeENC_VOP3P(); +void finalizeENC_VOP3POperands(); +void decodeENC_VOP3(); +void finalizeENC_VOP3Operands(); +void decodeENC_DS(); +void finalizeENC_DSOperands(); +void decodeENC_MUBUF(); +void finalizeENC_MUBUFOperands(); +void decodeENC_MTBUF(); +void finalizeENC_MTBUFOperands(); +void decodeENC_MIMG(); +void finalizeENC_MIMGOperands(); +void decodeENC_EXP(); +void finalizeENC_EXPOperands(); +void decodeENC_FLAT(); +void finalizeENC_FLATOperands(); +void decodeENC_FLAT_GLBL(); +void finalizeENC_FLAT_GLBLOperands(); +void decodeENC_FLAT_SCRATCH(); +void finalizeENC_FLAT_SCRATCHOperands(); +void decodeSOPK_INST_LITERAL_(); +void finalizeSOPK_INST_LITERAL_Operands(); +void decodeENC_VOP2_LITERAL(); +void finalizeENC_VOP2_LITERALOperands(); +void decodeENC_VOP3B(); +void finalizeENC_VOP3BOperands(); +void decodeENC_VOP3P_MFMA(); +void finalizeENC_VOP3P_MFMAOperands(); diff --git a/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_insn_entry.h b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_insn_entry.h new file mode 100644 index 0000000000..1f68358749 --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_insn_entry.h @@ -0,0 +1,32 @@ +struct amdgpu_gfx908_insn_entry { + entryID op; + const char *mnemonic; + std::size_t operandCnt; + const operandFactory *operands; + static const amdgpu_gfx908_insn_table main_insn_table ; + static const operandFactory operandTable[] ; + static const amdgpu_gfx908_insn_table ENC_DS_insn_table ; + static const amdgpu_gfx908_insn_table ENC_EXP_insn_table ; + static const amdgpu_gfx908_insn_table ENC_FLAT_insn_table ; + static const amdgpu_gfx908_insn_table ENC_FLAT_GLBL_insn_table ; + static const amdgpu_gfx908_insn_table ENC_FLAT_SCRATCH_insn_table ; + static const amdgpu_gfx908_insn_table ENC_MIMG_insn_table ; + static const amdgpu_gfx908_insn_table ENC_MTBUF_insn_table ; + static const amdgpu_gfx908_insn_table ENC_MUBUF_insn_table ; + static const amdgpu_gfx908_insn_table ENC_SMEM_insn_table ; + static const amdgpu_gfx908_insn_table ENC_SOP1_insn_table ; + static const amdgpu_gfx908_insn_table ENC_SOP2_insn_table ; + static const amdgpu_gfx908_insn_table ENC_SOPC_insn_table ; + static const amdgpu_gfx908_insn_table ENC_SOPK_insn_table ; + static const amdgpu_gfx908_insn_table SOPK_INST_LITERAL__insn_table ; + static const amdgpu_gfx908_insn_table ENC_SOPP_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VINTRP_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP3_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP1_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP2_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP2_LITERAL_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP3B_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP3P_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOP3P_MFMA_insn_table ; + static const amdgpu_gfx908_insn_table ENC_VOPC_insn_table ; +}; diff --git a/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_opcode_tables.C b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_opcode_tables.C new file mode 100644 index 0000000000..efcd206364 --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_opcode_tables.C @@ -0,0 +1,2982 @@ +#define fn(...) (&InstructionDecoder_amdgpu_gfx908::__VA_ARGS__) +const operandFactory amdgpu_gfx908_insn_entry::operandTable[] = { + fn(NOTHING), +}; +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_DS_insn_table = { +{amdgpu_gfx908_op_DS_ADD_U32,"DS_ADD_U32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_DS_SUB_U32,"DS_SUB_U32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_DS_RSUB_U32,"DS_RSUB_U32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_DS_INC_U32,"DS_INC_U32",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_DS_DEC_U32,"DS_DEC_U32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_DS_MIN_I32,"DS_MIN_I32",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_DS_MAX_I32,"DS_MAX_I32",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_DS_MIN_U32,"DS_MIN_U32",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_DS_MAX_U32,"DS_MAX_U32",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_DS_AND_B32,"DS_AND_B32",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_DS_OR_B32,"DS_OR_B32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_DS_XOR_B32,"DS_XOR_B32",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_DS_MSKOR_B32,"DS_MSKOR_B32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_DS_WRITE_B32,"DS_WRITE_B32",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_DS_WRITE2_B32,"DS_WRITE2_B32",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_DS_WRITE2ST64_B32,"DS_WRITE2ST64_B32",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_DS_CMPST_B32,"DS_CMPST_B32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_DS_CMPST_F32,"DS_CMPST_F32",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_DS_MIN_F32,"DS_MIN_F32",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_DS_MAX_F32,"DS_MAX_F32",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_DS_NOP,"DS_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_DS_ADD_F32,"DS_ADD_F32",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_DS_WRITE_ADDTID_B32,"DS_WRITE_ADDTID_B32",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_DS_WRITE_B8,"DS_WRITE_B8",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_DS_WRITE_B16,"DS_WRITE_B16",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_DS_ADD_RTN_U32,"DS_ADD_RTN_U32",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_DS_SUB_RTN_U32,"DS_SUB_RTN_U32",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_DS_RSUB_RTN_U32,"DS_RSUB_RTN_U32",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_DS_INC_RTN_U32,"DS_INC_RTN_U32",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_DS_DEC_RTN_U32,"DS_DEC_RTN_U32",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_DS_MIN_RTN_I32,"DS_MIN_RTN_I32",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_DS_MAX_RTN_I32,"DS_MAX_RTN_I32",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_DS_MIN_RTN_U32,"DS_MIN_RTN_U32",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_DS_MAX_RTN_U32,"DS_MAX_RTN_U32",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_DS_AND_RTN_B32,"DS_AND_RTN_B32",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_DS_OR_RTN_B32,"DS_OR_RTN_B32",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_DS_XOR_RTN_B32,"DS_XOR_RTN_B32",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_DS_MSKOR_RTN_B32,"DS_MSKOR_RTN_B32",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_DS_WRXCHG_RTN_B32,"DS_WRXCHG_RTN_B32",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_DS_WRXCHG2_RTN_B32,"DS_WRXCHG2_RTN_B32",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_DS_WRXCHG2ST64_RTN_B32,"DS_WRXCHG2ST64_RTN_B32",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_DS_CMPST_RTN_B32,"DS_CMPST_RTN_B32",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_DS_CMPST_RTN_F32,"DS_CMPST_RTN_F32",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_DS_MIN_RTN_F32,"DS_MIN_RTN_F32",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_DS_MAX_RTN_F32,"DS_MAX_RTN_F32",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_DS_WRAP_RTN_B32,"DS_WRAP_RTN_B32",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_DS_ADD_RTN_F32,"DS_ADD_RTN_F32",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_DS_READ_B32,"DS_READ_B32",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_DS_READ2_B32,"DS_READ2_B32",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_DS_READ2ST64_B32,"DS_READ2ST64_B32",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_DS_READ_I8,"DS_READ_I8",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_DS_READ_U8,"DS_READ_U8",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_DS_READ_I16,"DS_READ_I16",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_DS_READ_U16,"DS_READ_U16",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_DS_SWIZZLE_B32,"DS_SWIZZLE_B32",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_DS_PERMUTE_B32,"DS_PERMUTE_B32",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_DS_BPERMUTE_B32,"DS_BPERMUTE_B32",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_DS_ADD_U64,"DS_ADD_U64",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_DS_SUB_U64,"DS_SUB_U64",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_DS_RSUB_U64,"DS_RSUB_U64",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_DS_INC_U64,"DS_INC_U64",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_DS_DEC_U64,"DS_DEC_U64",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_DS_MIN_I64,"DS_MIN_I64",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_DS_MAX_I64,"DS_MAX_I64",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_DS_MIN_U64,"DS_MIN_U64",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_DS_MAX_U64,"DS_MAX_U64",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_DS_AND_B64,"DS_AND_B64",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_DS_OR_B64,"DS_OR_B64",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_DS_XOR_B64,"DS_XOR_B64",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_DS_MSKOR_B64,"DS_MSKOR_B64",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_DS_WRITE_B64,"DS_WRITE_B64",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_DS_WRITE2_B64,"DS_WRITE2_B64",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_DS_WRITE2ST64_B64,"DS_WRITE2ST64_B64",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_DS_CMPST_B64,"DS_CMPST_B64",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_DS_CMPST_F64,"DS_CMPST_F64",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_DS_MIN_F64,"DS_MIN_F64",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_DS_MAX_F64,"DS_MAX_F64",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_DS_WRITE_B8_D16_HI,"DS_WRITE_B8_D16_HI",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_DS_WRITE_B16_D16_HI,"DS_WRITE_B16_D16_HI",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_DS_READ_U8_D16,"DS_READ_U8_D16",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_DS_READ_U8_D16_HI,"DS_READ_U8_D16_HI",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_DS_READ_I8_D16,"DS_READ_I8_D16",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_DS_READ_I8_D16_HI,"DS_READ_I8_D16_HI",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_DS_READ_U16_D16,"DS_READ_U16_D16",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_DS_READ_U16_D16_HI,"DS_READ_U16_D16_HI",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_DS_ADD_RTN_U64,"DS_ADD_RTN_U64",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_DS_SUB_RTN_U64,"DS_SUB_RTN_U64",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_DS_RSUB_RTN_U64,"DS_RSUB_RTN_U64",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_DS_INC_RTN_U64,"DS_INC_RTN_U64",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_DS_DEC_RTN_U64,"DS_DEC_RTN_U64",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_DS_MIN_RTN_I64,"DS_MIN_RTN_I64",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_DS_MAX_RTN_I64,"DS_MAX_RTN_I64",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_DS_MIN_RTN_U64,"DS_MIN_RTN_U64",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_DS_MAX_RTN_U64,"DS_MAX_RTN_U64",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_DS_AND_RTN_B64,"DS_AND_RTN_B64",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_DS_OR_RTN_B64,"DS_OR_RTN_B64",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_DS_XOR_RTN_B64,"DS_XOR_RTN_B64",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_DS_MSKOR_RTN_B64,"DS_MSKOR_RTN_B64",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_DS_WRXCHG_RTN_B64,"DS_WRXCHG_RTN_B64",0,&operandTable[0]} ,//109 +{amdgpu_gfx908_op_DS_WRXCHG2_RTN_B64,"DS_WRXCHG2_RTN_B64",0,&operandTable[0]} ,//110 +{amdgpu_gfx908_op_DS_WRXCHG2ST64_RTN_B64,"DS_WRXCHG2ST64_RTN_B64",0,&operandTable[0]} ,//111 +{amdgpu_gfx908_op_DS_CMPST_RTN_B64,"DS_CMPST_RTN_B64",0,&operandTable[0]} ,//112 +{amdgpu_gfx908_op_DS_CMPST_RTN_F64,"DS_CMPST_RTN_F64",0,&operandTable[0]} ,//113 +{amdgpu_gfx908_op_DS_MIN_RTN_F64,"DS_MIN_RTN_F64",0,&operandTable[0]} ,//114 +{amdgpu_gfx908_op_DS_MAX_RTN_F64,"DS_MAX_RTN_F64",0,&operandTable[0]} ,//115 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//116 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//117 +{amdgpu_gfx908_op_DS_READ_B64,"DS_READ_B64",0,&operandTable[0]} ,//118 +{amdgpu_gfx908_op_DS_READ2_B64,"DS_READ2_B64",0,&operandTable[0]} ,//119 +{amdgpu_gfx908_op_DS_READ2ST64_B64,"DS_READ2ST64_B64",0,&operandTable[0]} ,//120 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//121 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//122 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//123 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//124 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//125 +{amdgpu_gfx908_op_DS_CONDXCHG32_RTN_B64,"DS_CONDXCHG32_RTN_B64",0,&operandTable[0]} ,//126 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//127 +{amdgpu_gfx908_op_DS_ADD_SRC2_U32,"DS_ADD_SRC2_U32",0,&operandTable[0]} ,//128 +{amdgpu_gfx908_op_DS_SUB_SRC2_U32,"DS_SUB_SRC2_U32",0,&operandTable[0]} ,//129 +{amdgpu_gfx908_op_DS_RSUB_SRC2_U32,"DS_RSUB_SRC2_U32",0,&operandTable[0]} ,//130 +{amdgpu_gfx908_op_DS_INC_SRC2_U32,"DS_INC_SRC2_U32",0,&operandTable[0]} ,//131 +{amdgpu_gfx908_op_DS_DEC_SRC2_U32,"DS_DEC_SRC2_U32",0,&operandTable[0]} ,//132 +{amdgpu_gfx908_op_DS_MIN_SRC2_I32,"DS_MIN_SRC2_I32",0,&operandTable[0]} ,//133 +{amdgpu_gfx908_op_DS_MAX_SRC2_I32,"DS_MAX_SRC2_I32",0,&operandTable[0]} ,//134 +{amdgpu_gfx908_op_DS_MIN_SRC2_U32,"DS_MIN_SRC2_U32",0,&operandTable[0]} ,//135 +{amdgpu_gfx908_op_DS_MAX_SRC2_U32,"DS_MAX_SRC2_U32",0,&operandTable[0]} ,//136 +{amdgpu_gfx908_op_DS_AND_SRC2_B32,"DS_AND_SRC2_B32",0,&operandTable[0]} ,//137 +{amdgpu_gfx908_op_DS_OR_SRC2_B32,"DS_OR_SRC2_B32",0,&operandTable[0]} ,//138 +{amdgpu_gfx908_op_DS_XOR_SRC2_B32,"DS_XOR_SRC2_B32",0,&operandTable[0]} ,//139 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_gfx908_op_DS_WRITE_SRC2_B32,"DS_WRITE_SRC2_B32",0,&operandTable[0]} ,//141 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_gfx908_op_DS_MIN_SRC2_F32,"DS_MIN_SRC2_F32",0,&operandTable[0]} ,//146 +{amdgpu_gfx908_op_DS_MAX_SRC2_F32,"DS_MAX_SRC2_F32",0,&operandTable[0]} ,//147 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_gfx908_op_DS_ADD_SRC2_F32,"DS_ADD_SRC2_F32",0,&operandTable[0]} ,//149 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_gfx908_op_DS_GWS_SEMA_RELEASE_ALL,"DS_GWS_SEMA_RELEASE_ALL",0,&operandTable[0]} ,//152 +{amdgpu_gfx908_op_DS_GWS_INIT,"DS_GWS_INIT",0,&operandTable[0]} ,//153 +{amdgpu_gfx908_op_DS_GWS_SEMA_V,"DS_GWS_SEMA_V",0,&operandTable[0]} ,//154 +{amdgpu_gfx908_op_DS_GWS_SEMA_BR,"DS_GWS_SEMA_BR",0,&operandTable[0]} ,//155 +{amdgpu_gfx908_op_DS_GWS_SEMA_P,"DS_GWS_SEMA_P",0,&operandTable[0]} ,//156 +{amdgpu_gfx908_op_DS_GWS_BARRIER,"DS_GWS_BARRIER",0,&operandTable[0]} ,//157 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//160 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//161 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//162 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//163 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//164 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//165 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//166 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//167 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//168 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//169 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//170 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//171 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//172 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//173 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//174 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//175 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//176 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//177 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//178 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//179 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//180 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//181 +{amdgpu_gfx908_op_DS_READ_ADDTID_B32,"DS_READ_ADDTID_B32",0,&operandTable[0]} ,//182 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//183 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//184 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//185 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//186 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//187 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//188 +{amdgpu_gfx908_op_DS_CONSUME,"DS_CONSUME",0,&operandTable[0]} ,//189 +{amdgpu_gfx908_op_DS_APPEND,"DS_APPEND",0,&operandTable[0]} ,//190 +{amdgpu_gfx908_op_DS_ORDERED_COUNT,"DS_ORDERED_COUNT",0,&operandTable[0]} ,//191 +{amdgpu_gfx908_op_DS_ADD_SRC2_U64,"DS_ADD_SRC2_U64",0,&operandTable[0]} ,//192 +{amdgpu_gfx908_op_DS_SUB_SRC2_U64,"DS_SUB_SRC2_U64",0,&operandTable[0]} ,//193 +{amdgpu_gfx908_op_DS_RSUB_SRC2_U64,"DS_RSUB_SRC2_U64",0,&operandTable[0]} ,//194 +{amdgpu_gfx908_op_DS_INC_SRC2_U64,"DS_INC_SRC2_U64",0,&operandTable[0]} ,//195 +{amdgpu_gfx908_op_DS_DEC_SRC2_U64,"DS_DEC_SRC2_U64",0,&operandTable[0]} ,//196 +{amdgpu_gfx908_op_DS_MIN_SRC2_I64,"DS_MIN_SRC2_I64",0,&operandTable[0]} ,//197 +{amdgpu_gfx908_op_DS_MAX_SRC2_I64,"DS_MAX_SRC2_I64",0,&operandTable[0]} ,//198 +{amdgpu_gfx908_op_DS_MIN_SRC2_U64,"DS_MIN_SRC2_U64",0,&operandTable[0]} ,//199 +{amdgpu_gfx908_op_DS_MAX_SRC2_U64,"DS_MAX_SRC2_U64",0,&operandTable[0]} ,//200 +{amdgpu_gfx908_op_DS_AND_SRC2_B64,"DS_AND_SRC2_B64",0,&operandTable[0]} ,//201 +{amdgpu_gfx908_op_DS_OR_SRC2_B64,"DS_OR_SRC2_B64",0,&operandTable[0]} ,//202 +{amdgpu_gfx908_op_DS_XOR_SRC2_B64,"DS_XOR_SRC2_B64",0,&operandTable[0]} ,//203 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//204 +{amdgpu_gfx908_op_DS_WRITE_SRC2_B64,"DS_WRITE_SRC2_B64",0,&operandTable[0]} ,//205 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//206 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//207 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//208 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//209 +{amdgpu_gfx908_op_DS_MIN_SRC2_F64,"DS_MIN_SRC2_F64",0,&operandTable[0]} ,//210 +{amdgpu_gfx908_op_DS_MAX_SRC2_F64,"DS_MAX_SRC2_F64",0,&operandTable[0]} ,//211 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//212 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//213 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//214 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//215 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//216 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//217 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//218 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//219 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//220 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//221 +{amdgpu_gfx908_op_DS_WRITE_B96,"DS_WRITE_B96",0,&operandTable[0]} ,//222 +{amdgpu_gfx908_op_DS_WRITE_B128,"DS_WRITE_B128",0,&operandTable[0]} ,//223 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//224 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//225 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//226 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//227 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//228 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//229 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//230 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//231 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//232 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//233 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//234 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//235 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//236 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//237 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//238 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//239 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//240 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//241 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//242 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//243 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//244 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//245 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//246 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//247 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//248 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//249 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//250 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//251 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//252 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//253 +{amdgpu_gfx908_op_DS_READ_B96,"DS_READ_B96",0,&operandTable[0]} ,//254 +{amdgpu_gfx908_op_DS_READ_B128,"DS_READ_B128",0,&operandTable[0]} ,//255 +}; // end ENC_DS_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_EXP_insn_table = { +{amdgpu_gfx908_op_EXP,"EXP",0,&operandTable[0]} ,//0 +}; // end ENC_EXP_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_FLAT_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_FLAT_LOAD_UBYTE,"FLAT_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_FLAT_LOAD_SBYTE,"FLAT_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_FLAT_LOAD_USHORT,"FLAT_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_FLAT_LOAD_SSHORT,"FLAT_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_FLAT_LOAD_DWORD,"FLAT_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_FLAT_LOAD_DWORDX2,"FLAT_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_FLAT_LOAD_DWORDX3,"FLAT_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_FLAT_LOAD_DWORDX4,"FLAT_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_FLAT_STORE_BYTE,"FLAT_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_FLAT_STORE_BYTE_D16_HI,"FLAT_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_FLAT_STORE_SHORT,"FLAT_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_FLAT_STORE_SHORT_D16_HI,"FLAT_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_FLAT_STORE_DWORD,"FLAT_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_FLAT_STORE_DWORDX2,"FLAT_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_FLAT_STORE_DWORDX3,"FLAT_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_FLAT_STORE_DWORDX4,"FLAT_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_FLAT_LOAD_UBYTE_D16,"FLAT_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_FLAT_LOAD_UBYTE_D16_HI,"FLAT_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_FLAT_LOAD_SBYTE_D16,"FLAT_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_FLAT_LOAD_SBYTE_D16_HI,"FLAT_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_FLAT_LOAD_SHORT_D16,"FLAT_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_FLAT_LOAD_SHORT_D16_HI,"FLAT_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_FLAT_ATOMIC_SWAP,"FLAT_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_FLAT_ATOMIC_CMPSWAP,"FLAT_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_FLAT_ATOMIC_ADD,"FLAT_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_FLAT_ATOMIC_SUB,"FLAT_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_FLAT_ATOMIC_SMIN,"FLAT_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_FLAT_ATOMIC_UMIN,"FLAT_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_FLAT_ATOMIC_SMAX,"FLAT_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_FLAT_ATOMIC_UMAX,"FLAT_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_FLAT_ATOMIC_AND,"FLAT_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_FLAT_ATOMIC_OR,"FLAT_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_FLAT_ATOMIC_XOR,"FLAT_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_FLAT_ATOMIC_INC,"FLAT_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_FLAT_ATOMIC_DEC,"FLAT_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_FLAT_ATOMIC_SWAP_X2,"FLAT_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_FLAT_ATOMIC_CMPSWAP_X2,"FLAT_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_FLAT_ATOMIC_ADD_X2,"FLAT_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_FLAT_ATOMIC_SUB_X2,"FLAT_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_FLAT_ATOMIC_SMIN_X2,"FLAT_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_FLAT_ATOMIC_UMIN_X2,"FLAT_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_FLAT_ATOMIC_SMAX_X2,"FLAT_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_FLAT_ATOMIC_UMAX_X2,"FLAT_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_FLAT_ATOMIC_AND_X2,"FLAT_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_FLAT_ATOMIC_OR_X2,"FLAT_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_FLAT_ATOMIC_XOR_X2,"FLAT_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_FLAT_ATOMIC_INC_X2,"FLAT_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_FLAT_ATOMIC_DEC_X2,"FLAT_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +}; // end ENC_FLAT_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_FLAT_GLBL_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_GLOBAL_LOAD_UBYTE,"GLOBAL_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_GLOBAL_LOAD_SBYTE,"GLOBAL_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_GLOBAL_LOAD_USHORT,"GLOBAL_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_GLOBAL_LOAD_SSHORT,"GLOBAL_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_GLOBAL_LOAD_DWORD,"GLOBAL_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_GLOBAL_LOAD_DWORDX2,"GLOBAL_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_GLOBAL_LOAD_DWORDX3,"GLOBAL_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_GLOBAL_LOAD_DWORDX4,"GLOBAL_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_GLOBAL_STORE_BYTE,"GLOBAL_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_GLOBAL_STORE_BYTE_D16_HI,"GLOBAL_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_GLOBAL_STORE_SHORT,"GLOBAL_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_GLOBAL_STORE_SHORT_D16_HI,"GLOBAL_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_GLOBAL_STORE_DWORD,"GLOBAL_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_GLOBAL_STORE_DWORDX2,"GLOBAL_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_GLOBAL_STORE_DWORDX3,"GLOBAL_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_GLOBAL_STORE_DWORDX4,"GLOBAL_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_GLOBAL_LOAD_UBYTE_D16,"GLOBAL_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_GLOBAL_LOAD_UBYTE_D16_HI,"GLOBAL_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_GLOBAL_LOAD_SBYTE_D16,"GLOBAL_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_GLOBAL_LOAD_SBYTE_D16_HI,"GLOBAL_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_GLOBAL_LOAD_SHORT_D16,"GLOBAL_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_GLOBAL_LOAD_SHORT_D16_HI,"GLOBAL_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SWAP,"GLOBAL_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_CMPSWAP,"GLOBAL_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_ADD,"GLOBAL_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SUB,"GLOBAL_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SMIN,"GLOBAL_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_UMIN,"GLOBAL_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SMAX,"GLOBAL_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_UMAX,"GLOBAL_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_AND,"GLOBAL_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_OR,"GLOBAL_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_XOR,"GLOBAL_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_INC,"GLOBAL_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_DEC,"GLOBAL_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_ADD_F32,"GLOBAL_ATOMIC_ADD_F32",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_PK_ADD_F16,"GLOBAL_ATOMIC_PK_ADD_F16",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SWAP_X2,"GLOBAL_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_CMPSWAP_X2,"GLOBAL_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_ADD_X2,"GLOBAL_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SUB_X2,"GLOBAL_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SMIN_X2,"GLOBAL_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_UMIN_X2,"GLOBAL_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_SMAX_X2,"GLOBAL_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_UMAX_X2,"GLOBAL_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_AND_X2,"GLOBAL_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_OR_X2,"GLOBAL_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_XOR_X2,"GLOBAL_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_INC_X2,"GLOBAL_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_GLOBAL_ATOMIC_DEC_X2,"GLOBAL_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +}; // end ENC_FLAT_GLBL_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_FLAT_SCRATCH_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_SCRATCH_LOAD_UBYTE,"SCRATCH_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_SCRATCH_LOAD_SBYTE,"SCRATCH_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_SCRATCH_LOAD_USHORT,"SCRATCH_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_SCRATCH_LOAD_SSHORT,"SCRATCH_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_SCRATCH_LOAD_DWORD,"SCRATCH_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_SCRATCH_LOAD_DWORDX2,"SCRATCH_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_SCRATCH_LOAD_DWORDX3,"SCRATCH_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_SCRATCH_LOAD_DWORDX4,"SCRATCH_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_SCRATCH_STORE_BYTE,"SCRATCH_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_SCRATCH_STORE_BYTE_D16_HI,"SCRATCH_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_SCRATCH_STORE_SHORT,"SCRATCH_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_SCRATCH_STORE_SHORT_D16_HI,"SCRATCH_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_SCRATCH_STORE_DWORD,"SCRATCH_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_SCRATCH_STORE_DWORDX2,"SCRATCH_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_SCRATCH_STORE_DWORDX3,"SCRATCH_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_SCRATCH_STORE_DWORDX4,"SCRATCH_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_SCRATCH_LOAD_UBYTE_D16,"SCRATCH_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_SCRATCH_LOAD_UBYTE_D16_HI,"SCRATCH_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_SCRATCH_LOAD_SBYTE_D16,"SCRATCH_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_SCRATCH_LOAD_SBYTE_D16_HI,"SCRATCH_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_SCRATCH_LOAD_SHORT_D16,"SCRATCH_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_SCRATCH_LOAD_SHORT_D16_HI,"SCRATCH_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +}; // end ENC_FLAT_SCRATCH_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_MIMG_insn_table = { +{amdgpu_gfx908_op_IMAGE_LOAD,"IMAGE_LOAD",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_IMAGE_LOAD_MIP,"IMAGE_LOAD_MIP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_IMAGE_LOAD_PCK,"IMAGE_LOAD_PCK",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_IMAGE_LOAD_PCK_SGN,"IMAGE_LOAD_PCK_SGN",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_IMAGE_LOAD_MIP_PCK,"IMAGE_LOAD_MIP_PCK",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_IMAGE_LOAD_MIP_PCK_SGN,"IMAGE_LOAD_MIP_PCK_SGN",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_IMAGE_STORE,"IMAGE_STORE",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_IMAGE_STORE_MIP,"IMAGE_STORE_MIP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_IMAGE_STORE_PCK,"IMAGE_STORE_PCK",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_IMAGE_STORE_MIP_PCK,"IMAGE_STORE_MIP_PCK",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_IMAGE_GET_RESINFO,"IMAGE_GET_RESINFO",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_IMAGE_ATOMIC_SWAP,"IMAGE_ATOMIC_SWAP",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_IMAGE_ATOMIC_CMPSWAP,"IMAGE_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_IMAGE_ATOMIC_ADD,"IMAGE_ATOMIC_ADD",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_IMAGE_ATOMIC_SUB,"IMAGE_ATOMIC_SUB",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_IMAGE_ATOMIC_SMIN,"IMAGE_ATOMIC_SMIN",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_IMAGE_ATOMIC_UMIN,"IMAGE_ATOMIC_UMIN",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_IMAGE_ATOMIC_SMAX,"IMAGE_ATOMIC_SMAX",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_IMAGE_ATOMIC_UMAX,"IMAGE_ATOMIC_UMAX",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_IMAGE_ATOMIC_AND,"IMAGE_ATOMIC_AND",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_IMAGE_ATOMIC_OR,"IMAGE_ATOMIC_OR",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_IMAGE_ATOMIC_XOR,"IMAGE_ATOMIC_XOR",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_IMAGE_ATOMIC_INC,"IMAGE_ATOMIC_INC",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_IMAGE_ATOMIC_DEC,"IMAGE_ATOMIC_DEC",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_IMAGE_SAMPLE,"IMAGE_SAMPLE",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_IMAGE_SAMPLE_CL,"IMAGE_SAMPLE_CL",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_IMAGE_SAMPLE_D,"IMAGE_SAMPLE_D",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_IMAGE_SAMPLE_D_CL,"IMAGE_SAMPLE_D_CL",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_IMAGE_SAMPLE_L,"IMAGE_SAMPLE_L",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_IMAGE_SAMPLE_B,"IMAGE_SAMPLE_B",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_IMAGE_SAMPLE_B_CL,"IMAGE_SAMPLE_B_CL",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_IMAGE_SAMPLE_LZ,"IMAGE_SAMPLE_LZ",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C,"IMAGE_SAMPLE_C",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_CL,"IMAGE_SAMPLE_C_CL",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_D,"IMAGE_SAMPLE_C_D",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_D_CL,"IMAGE_SAMPLE_C_D_CL",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_L,"IMAGE_SAMPLE_C_L",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_B,"IMAGE_SAMPLE_C_B",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_B_CL,"IMAGE_SAMPLE_C_B_CL",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_LZ,"IMAGE_SAMPLE_C_LZ",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_IMAGE_SAMPLE_O,"IMAGE_SAMPLE_O",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_IMAGE_SAMPLE_CL_O,"IMAGE_SAMPLE_CL_O",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_IMAGE_SAMPLE_D_O,"IMAGE_SAMPLE_D_O",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_IMAGE_SAMPLE_D_CL_O,"IMAGE_SAMPLE_D_CL_O",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_IMAGE_SAMPLE_L_O,"IMAGE_SAMPLE_L_O",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_IMAGE_SAMPLE_B_O,"IMAGE_SAMPLE_B_O",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_IMAGE_SAMPLE_B_CL_O,"IMAGE_SAMPLE_B_CL_O",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_IMAGE_SAMPLE_LZ_O,"IMAGE_SAMPLE_LZ_O",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_O,"IMAGE_SAMPLE_C_O",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_CL_O,"IMAGE_SAMPLE_C_CL_O",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_D_O,"IMAGE_SAMPLE_C_D_O",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_D_CL_O,"IMAGE_SAMPLE_C_D_CL_O",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_L_O,"IMAGE_SAMPLE_C_L_O",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_B_O,"IMAGE_SAMPLE_C_B_O",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_B_CL_O,"IMAGE_SAMPLE_C_B_CL_O",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_LZ_O,"IMAGE_SAMPLE_C_LZ_O",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_IMAGE_GATHER4,"IMAGE_GATHER4",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_IMAGE_GATHER4_CL,"IMAGE_GATHER4_CL",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_IMAGE_GATHER4H,"IMAGE_GATHER4H",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_IMAGE_GATHER4_L,"IMAGE_GATHER4_L",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_IMAGE_GATHER4_B,"IMAGE_GATHER4_B",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_IMAGE_GATHER4_B_CL,"IMAGE_GATHER4_B_CL",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_IMAGE_GATHER4_LZ,"IMAGE_GATHER4_LZ",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_IMAGE_GATHER4_C,"IMAGE_GATHER4_C",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_CL,"IMAGE_GATHER4_C_CL",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_IMAGE_GATHER4H_PCK,"IMAGE_GATHER4H_PCK",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_IMAGE_GATHER8H_PCK,"IMAGE_GATHER8H_PCK",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_L,"IMAGE_GATHER4_C_L",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_B,"IMAGE_GATHER4_C_B",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_B_CL,"IMAGE_GATHER4_C_B_CL",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_LZ,"IMAGE_GATHER4_C_LZ",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_IMAGE_GATHER4_O,"IMAGE_GATHER4_O",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_IMAGE_GATHER4_CL_O,"IMAGE_GATHER4_CL_O",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_IMAGE_GATHER4_L_O,"IMAGE_GATHER4_L_O",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_IMAGE_GATHER4_B_O,"IMAGE_GATHER4_B_O",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_IMAGE_GATHER4_B_CL_O,"IMAGE_GATHER4_B_CL_O",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_IMAGE_GATHER4_LZ_O,"IMAGE_GATHER4_LZ_O",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_O,"IMAGE_GATHER4_C_O",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_CL_O,"IMAGE_GATHER4_C_CL_O",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_L_O,"IMAGE_GATHER4_C_L_O",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_B_O,"IMAGE_GATHER4_C_B_O",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_B_CL_O,"IMAGE_GATHER4_C_B_CL_O",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_IMAGE_GATHER4_C_LZ_O,"IMAGE_GATHER4_C_LZ_O",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_IMAGE_GET_LOD,"IMAGE_GET_LOD",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_IMAGE_SAMPLE_CD,"IMAGE_SAMPLE_CD",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_IMAGE_SAMPLE_CD_CL,"IMAGE_SAMPLE_CD_CL",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD,"IMAGE_SAMPLE_C_CD",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD_CL,"IMAGE_SAMPLE_C_CD_CL",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_IMAGE_SAMPLE_CD_O,"IMAGE_SAMPLE_CD_O",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_IMAGE_SAMPLE_CD_CL_O,"IMAGE_SAMPLE_CD_CL_O",0,&operandTable[0]} ,//109 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD_O,"IMAGE_SAMPLE_C_CD_O",0,&operandTable[0]} ,//110 +{amdgpu_gfx908_op_IMAGE_SAMPLE_C_CD_CL_O,"IMAGE_SAMPLE_C_CD_CL_O",0,&operandTable[0]} ,//111 +}; // end ENC_MIMG_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_MTBUF_insn_table = { +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_X,"TBUFFER_LOAD_FORMAT_X",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_XY,"TBUFFER_LOAD_FORMAT_XY",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_XYZ,"TBUFFER_LOAD_FORMAT_XYZ",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_XYZW,"TBUFFER_LOAD_FORMAT_XYZW",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_X,"TBUFFER_STORE_FORMAT_X",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_XY,"TBUFFER_STORE_FORMAT_XY",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_XYZ,"TBUFFER_STORE_FORMAT_XYZ",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_XYZW,"TBUFFER_STORE_FORMAT_XYZW",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_X,"TBUFFER_LOAD_FORMAT_D16_X",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_XY,"TBUFFER_LOAD_FORMAT_D16_XY",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_XYZ,"TBUFFER_LOAD_FORMAT_D16_XYZ",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_TBUFFER_LOAD_FORMAT_D16_XYZW,"TBUFFER_LOAD_FORMAT_D16_XYZW",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_X,"TBUFFER_STORE_FORMAT_D16_X",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_XY,"TBUFFER_STORE_FORMAT_D16_XY",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_XYZ,"TBUFFER_STORE_FORMAT_D16_XYZ",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_TBUFFER_STORE_FORMAT_D16_XYZW,"TBUFFER_STORE_FORMAT_D16_XYZW",0,&operandTable[0]} ,//15 +}; // end ENC_MTBUF_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_MUBUF_insn_table = { +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_X,"BUFFER_LOAD_FORMAT_X",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_XY,"BUFFER_LOAD_FORMAT_XY",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_XYZ,"BUFFER_LOAD_FORMAT_XYZ",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_XYZW,"BUFFER_LOAD_FORMAT_XYZW",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_X,"BUFFER_STORE_FORMAT_X",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_XY,"BUFFER_STORE_FORMAT_XY",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_XYZ,"BUFFER_STORE_FORMAT_XYZ",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_XYZW,"BUFFER_STORE_FORMAT_XYZW",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_X,"BUFFER_LOAD_FORMAT_D16_X",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_XY,"BUFFER_LOAD_FORMAT_D16_XY",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_XYZ,"BUFFER_LOAD_FORMAT_D16_XYZ",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_XYZW,"BUFFER_LOAD_FORMAT_D16_XYZW",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_X,"BUFFER_STORE_FORMAT_D16_X",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_XY,"BUFFER_STORE_FORMAT_D16_XY",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_XYZ,"BUFFER_STORE_FORMAT_D16_XYZ",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_XYZW,"BUFFER_STORE_FORMAT_D16_XYZW",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_BUFFER_LOAD_UBYTE,"BUFFER_LOAD_UBYTE",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_BUFFER_LOAD_SBYTE,"BUFFER_LOAD_SBYTE",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_BUFFER_LOAD_USHORT,"BUFFER_LOAD_USHORT",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_BUFFER_LOAD_SSHORT,"BUFFER_LOAD_SSHORT",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_BUFFER_LOAD_DWORD,"BUFFER_LOAD_DWORD",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_BUFFER_LOAD_DWORDX2,"BUFFER_LOAD_DWORDX2",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_BUFFER_LOAD_DWORDX3,"BUFFER_LOAD_DWORDX3",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_BUFFER_LOAD_DWORDX4,"BUFFER_LOAD_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_BUFFER_STORE_BYTE,"BUFFER_STORE_BYTE",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_BUFFER_STORE_BYTE_D16_HI,"BUFFER_STORE_BYTE_D16_HI",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_BUFFER_STORE_SHORT,"BUFFER_STORE_SHORT",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_BUFFER_STORE_SHORT_D16_HI,"BUFFER_STORE_SHORT_D16_HI",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_BUFFER_STORE_DWORD,"BUFFER_STORE_DWORD",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_BUFFER_STORE_DWORDX2,"BUFFER_STORE_DWORDX2",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_BUFFER_STORE_DWORDX3,"BUFFER_STORE_DWORDX3",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_BUFFER_STORE_DWORDX4,"BUFFER_STORE_DWORDX4",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_BUFFER_LOAD_UBYTE_D16,"BUFFER_LOAD_UBYTE_D16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_BUFFER_LOAD_UBYTE_D16_HI,"BUFFER_LOAD_UBYTE_D16_HI",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_BUFFER_LOAD_SBYTE_D16,"BUFFER_LOAD_SBYTE_D16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_BUFFER_LOAD_SBYTE_D16_HI,"BUFFER_LOAD_SBYTE_D16_HI",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_BUFFER_LOAD_SHORT_D16,"BUFFER_LOAD_SHORT_D16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_BUFFER_LOAD_SHORT_D16_HI,"BUFFER_LOAD_SHORT_D16_HI",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_BUFFER_LOAD_FORMAT_D16_HI_X,"BUFFER_LOAD_FORMAT_D16_HI_X",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_BUFFER_STORE_FORMAT_D16_HI_X,"BUFFER_STORE_FORMAT_D16_HI_X",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_BUFFER_STORE_LDS_DWORD,"BUFFER_STORE_LDS_DWORD",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_BUFFER_WBINVL1,"BUFFER_WBINVL1",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_BUFFER_WBINVL1_VOL,"BUFFER_WBINVL1_VOL",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SWAP,"BUFFER_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_BUFFER_ATOMIC_CMPSWAP,"BUFFER_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_BUFFER_ATOMIC_ADD,"BUFFER_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SUB,"BUFFER_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SMIN,"BUFFER_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_BUFFER_ATOMIC_UMIN,"BUFFER_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SMAX,"BUFFER_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_BUFFER_ATOMIC_UMAX,"BUFFER_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_BUFFER_ATOMIC_AND,"BUFFER_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_BUFFER_ATOMIC_OR,"BUFFER_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_BUFFER_ATOMIC_XOR,"BUFFER_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_BUFFER_ATOMIC_INC,"BUFFER_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_BUFFER_ATOMIC_DEC,"BUFFER_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_BUFFER_ATOMIC_ADD_F32,"BUFFER_ATOMIC_ADD_F32",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_BUFFER_ATOMIC_PK_ADD_F16,"BUFFER_ATOMIC_PK_ADD_F16",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SWAP_X2,"BUFFER_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_BUFFER_ATOMIC_CMPSWAP_X2,"BUFFER_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_BUFFER_ATOMIC_ADD_X2,"BUFFER_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SUB_X2,"BUFFER_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SMIN_X2,"BUFFER_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_BUFFER_ATOMIC_UMIN_X2,"BUFFER_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_BUFFER_ATOMIC_SMAX_X2,"BUFFER_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_BUFFER_ATOMIC_UMAX_X2,"BUFFER_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_BUFFER_ATOMIC_AND_X2,"BUFFER_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_BUFFER_ATOMIC_OR_X2,"BUFFER_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_BUFFER_ATOMIC_XOR_X2,"BUFFER_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_BUFFER_ATOMIC_INC_X2,"BUFFER_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_BUFFER_ATOMIC_DEC_X2,"BUFFER_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +}; // end ENC_MUBUF_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_SMEM_insn_table = { +{amdgpu_gfx908_op_S_LOAD_DWORD,"S_LOAD_DWORD",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_LOAD_DWORDX2,"S_LOAD_DWORDX2",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_LOAD_DWORDX4,"S_LOAD_DWORDX4",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_LOAD_DWORDX8,"S_LOAD_DWORDX8",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_LOAD_DWORDX16,"S_LOAD_DWORDX16",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_SCRATCH_LOAD_DWORD,"S_SCRATCH_LOAD_DWORD",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_SCRATCH_LOAD_DWORDX2,"S_SCRATCH_LOAD_DWORDX2",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_SCRATCH_LOAD_DWORDX4,"S_SCRATCH_LOAD_DWORDX4",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_BUFFER_LOAD_DWORD,"S_BUFFER_LOAD_DWORD",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX2,"S_BUFFER_LOAD_DWORDX2",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX4,"S_BUFFER_LOAD_DWORDX4",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX8,"S_BUFFER_LOAD_DWORDX8",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_BUFFER_LOAD_DWORDX16,"S_BUFFER_LOAD_DWORDX16",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_STORE_DWORD,"S_STORE_DWORD",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_STORE_DWORDX2,"S_STORE_DWORDX2",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_STORE_DWORDX4,"S_STORE_DWORDX4",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_SCRATCH_STORE_DWORD,"S_SCRATCH_STORE_DWORD",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_SCRATCH_STORE_DWORDX2,"S_SCRATCH_STORE_DWORDX2",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_SCRATCH_STORE_DWORDX4,"S_SCRATCH_STORE_DWORDX4",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_BUFFER_STORE_DWORD,"S_BUFFER_STORE_DWORD",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_BUFFER_STORE_DWORDX2,"S_BUFFER_STORE_DWORDX2",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_BUFFER_STORE_DWORDX4,"S_BUFFER_STORE_DWORDX4",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_S_DCACHE_INV,"S_DCACHE_INV",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_S_DCACHE_WB,"S_DCACHE_WB",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_S_DCACHE_INV_VOL,"S_DCACHE_INV_VOL",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_S_DCACHE_WB_VOL,"S_DCACHE_WB_VOL",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_MEMTIME,"S_MEMTIME",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_MEMREALTIME,"S_MEMREALTIME",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_ATC_PROBE,"S_ATC_PROBE",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_ATC_PROBE_BUFFER,"S_ATC_PROBE_BUFFER",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_DCACHE_DISCARD,"S_DCACHE_DISCARD",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_DCACHE_DISCARD_X2,"S_DCACHE_DISCARD_X2",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SWAP,"S_BUFFER_ATOMIC_SWAP",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_CMPSWAP,"S_BUFFER_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_ADD,"S_BUFFER_ATOMIC_ADD",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SUB,"S_BUFFER_ATOMIC_SUB",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMIN,"S_BUFFER_ATOMIC_SMIN",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMIN,"S_BUFFER_ATOMIC_UMIN",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMAX,"S_BUFFER_ATOMIC_SMAX",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMAX,"S_BUFFER_ATOMIC_UMAX",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_AND,"S_BUFFER_ATOMIC_AND",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_OR,"S_BUFFER_ATOMIC_OR",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_XOR,"S_BUFFER_ATOMIC_XOR",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_INC,"S_BUFFER_ATOMIC_INC",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_DEC,"S_BUFFER_ATOMIC_DEC",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SWAP_X2,"S_BUFFER_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_CMPSWAP_X2,"S_BUFFER_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_ADD_X2,"S_BUFFER_ATOMIC_ADD_X2",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SUB_X2,"S_BUFFER_ATOMIC_SUB_X2",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMIN_X2,"S_BUFFER_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMIN_X2,"S_BUFFER_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_SMAX_X2,"S_BUFFER_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_UMAX_X2,"S_BUFFER_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_AND_X2,"S_BUFFER_ATOMIC_AND_X2",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_OR_X2,"S_BUFFER_ATOMIC_OR_X2",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_XOR_X2,"S_BUFFER_ATOMIC_XOR_X2",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_INC_X2,"S_BUFFER_ATOMIC_INC_X2",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_S_BUFFER_ATOMIC_DEC_X2,"S_BUFFER_ATOMIC_DEC_X2",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//109 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//110 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//111 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//112 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//113 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//114 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//115 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//116 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//117 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//118 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//119 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//120 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//121 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//122 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//123 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//124 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//125 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//126 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//127 +{amdgpu_gfx908_op_S_ATOMIC_SWAP,"S_ATOMIC_SWAP",0,&operandTable[0]} ,//128 +{amdgpu_gfx908_op_S_ATOMIC_CMPSWAP,"S_ATOMIC_CMPSWAP",0,&operandTable[0]} ,//129 +{amdgpu_gfx908_op_S_ATOMIC_ADD,"S_ATOMIC_ADD",0,&operandTable[0]} ,//130 +{amdgpu_gfx908_op_S_ATOMIC_SUB,"S_ATOMIC_SUB",0,&operandTable[0]} ,//131 +{amdgpu_gfx908_op_S_ATOMIC_SMIN,"S_ATOMIC_SMIN",0,&operandTable[0]} ,//132 +{amdgpu_gfx908_op_S_ATOMIC_UMIN,"S_ATOMIC_UMIN",0,&operandTable[0]} ,//133 +{amdgpu_gfx908_op_S_ATOMIC_SMAX,"S_ATOMIC_SMAX",0,&operandTable[0]} ,//134 +{amdgpu_gfx908_op_S_ATOMIC_UMAX,"S_ATOMIC_UMAX",0,&operandTable[0]} ,//135 +{amdgpu_gfx908_op_S_ATOMIC_AND,"S_ATOMIC_AND",0,&operandTable[0]} ,//136 +{amdgpu_gfx908_op_S_ATOMIC_OR,"S_ATOMIC_OR",0,&operandTable[0]} ,//137 +{amdgpu_gfx908_op_S_ATOMIC_XOR,"S_ATOMIC_XOR",0,&operandTable[0]} ,//138 +{amdgpu_gfx908_op_S_ATOMIC_INC,"S_ATOMIC_INC",0,&operandTable[0]} ,//139 +{amdgpu_gfx908_op_S_ATOMIC_DEC,"S_ATOMIC_DEC",0,&operandTable[0]} ,//140 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_gfx908_op_S_ATOMIC_SWAP_X2,"S_ATOMIC_SWAP_X2",0,&operandTable[0]} ,//160 +{amdgpu_gfx908_op_S_ATOMIC_CMPSWAP_X2,"S_ATOMIC_CMPSWAP_X2",0,&operandTable[0]} ,//161 +{amdgpu_gfx908_op_S_ATOMIC_ADD_X2,"S_ATOMIC_ADD_X2",0,&operandTable[0]} ,//162 +{amdgpu_gfx908_op_S_ATOMIC_SUB_X2,"S_ATOMIC_SUB_X2",0,&operandTable[0]} ,//163 +{amdgpu_gfx908_op_S_ATOMIC_SMIN_X2,"S_ATOMIC_SMIN_X2",0,&operandTable[0]} ,//164 +{amdgpu_gfx908_op_S_ATOMIC_UMIN_X2,"S_ATOMIC_UMIN_X2",0,&operandTable[0]} ,//165 +{amdgpu_gfx908_op_S_ATOMIC_SMAX_X2,"S_ATOMIC_SMAX_X2",0,&operandTable[0]} ,//166 +{amdgpu_gfx908_op_S_ATOMIC_UMAX_X2,"S_ATOMIC_UMAX_X2",0,&operandTable[0]} ,//167 +{amdgpu_gfx908_op_S_ATOMIC_AND_X2,"S_ATOMIC_AND_X2",0,&operandTable[0]} ,//168 +{amdgpu_gfx908_op_S_ATOMIC_OR_X2,"S_ATOMIC_OR_X2",0,&operandTable[0]} ,//169 +{amdgpu_gfx908_op_S_ATOMIC_XOR_X2,"S_ATOMIC_XOR_X2",0,&operandTable[0]} ,//170 +{amdgpu_gfx908_op_S_ATOMIC_INC_X2,"S_ATOMIC_INC_X2",0,&operandTable[0]} ,//171 +{amdgpu_gfx908_op_S_ATOMIC_DEC_X2,"S_ATOMIC_DEC_X2",0,&operandTable[0]} ,//172 +}; // end ENC_SMEM_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_SOP1_insn_table = { +{amdgpu_gfx908_op_S_MOV_B32,"S_MOV_B32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_MOV_B64,"S_MOV_B64",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_CMOV_B32,"S_CMOV_B32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_CMOV_B64,"S_CMOV_B64",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOT_B32,"S_NOT_B32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOT_B64,"S_NOT_B64",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_WQM_B32,"S_WQM_B32",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_WQM_B64,"S_WQM_B64",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_BREV_B32,"S_BREV_B32",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_BREV_B64,"S_BREV_B64",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_BCNT0_I32_B32,"S_BCNT0_I32_B32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_BCNT0_I32_B64,"S_BCNT0_I32_B64",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_BCNT1_I32_B32,"S_BCNT1_I32_B32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_BCNT1_I32_B64,"S_BCNT1_I32_B64",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_FF0_I32_B32,"S_FF0_I32_B32",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_FF0_I32_B64,"S_FF0_I32_B64",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_FF1_I32_B32,"S_FF1_I32_B32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_FF1_I32_B64,"S_FF1_I32_B64",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_FLBIT_I32_B32,"S_FLBIT_I32_B32",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_FLBIT_I32_B64,"S_FLBIT_I32_B64",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_FLBIT_I32,"S_FLBIT_I32",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_FLBIT_I32_I64,"S_FLBIT_I32_I64",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_SEXT_I32_I8,"S_SEXT_I32_I8",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_SEXT_I32_I16,"S_SEXT_I32_I16",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_BITSET0_B32,"S_BITSET0_B32",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_BITSET0_B64,"S_BITSET0_B64",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_BITSET1_B32,"S_BITSET1_B32",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_BITSET1_B64,"S_BITSET1_B64",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_GETPC_B64,"S_GETPC_B64",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_SETPC_B64,"S_SETPC_B64",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_SWAPPC_B64,"S_SWAPPC_B64",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_RFE_B64,"S_RFE_B64",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_S_AND_SAVEEXEC_B64,"S_AND_SAVEEXEC_B64",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_S_OR_SAVEEXEC_B64,"S_OR_SAVEEXEC_B64",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_S_XOR_SAVEEXEC_B64,"S_XOR_SAVEEXEC_B64",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_S_ANDN2_SAVEEXEC_B64,"S_ANDN2_SAVEEXEC_B64",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_ORN2_SAVEEXEC_B64,"S_ORN2_SAVEEXEC_B64",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_NAND_SAVEEXEC_B64,"S_NAND_SAVEEXEC_B64",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_NOR_SAVEEXEC_B64,"S_NOR_SAVEEXEC_B64",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_XNOR_SAVEEXEC_B64,"S_XNOR_SAVEEXEC_B64",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_QUADMASK_B32,"S_QUADMASK_B32",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_QUADMASK_B64,"S_QUADMASK_B64",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_MOVRELS_B32,"S_MOVRELS_B32",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_MOVRELS_B64,"S_MOVRELS_B64",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_MOVRELD_B32,"S_MOVRELD_B32",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_MOVRELD_B64,"S_MOVRELD_B64",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_CBRANCH_JOIN,"S_CBRANCH_JOIN",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_ABS_I32,"S_ABS_I32",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_SET_GPR_IDX_IDX,"S_SET_GPR_IDX_IDX",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_ANDN1_SAVEEXEC_B64,"S_ANDN1_SAVEEXEC_B64",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_ORN1_SAVEEXEC_B64,"S_ORN1_SAVEEXEC_B64",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_ANDN1_WREXEC_B64,"S_ANDN1_WREXEC_B64",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_ANDN2_WREXEC_B64,"S_ANDN2_WREXEC_B64",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_BITREPLICATE_B64_B32,"S_BITREPLICATE_B64_B32",0,&operandTable[0]} ,//55 +}; // end ENC_SOP1_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_SOP2_insn_table = { +{amdgpu_gfx908_op_S_ADD_U32,"S_ADD_U32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_SUB_U32,"S_SUB_U32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_ADD_I32,"S_ADD_I32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_SUB_I32,"S_SUB_I32",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_ADDC_U32,"S_ADDC_U32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_SUBB_U32,"S_SUBB_U32",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_MIN_I32,"S_MIN_I32",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_MIN_U32,"S_MIN_U32",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_MAX_I32,"S_MAX_I32",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_MAX_U32,"S_MAX_U32",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_CSELECT_B32,"S_CSELECT_B32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_CSELECT_B64,"S_CSELECT_B64",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_AND_B32,"S_AND_B32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_AND_B64,"S_AND_B64",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_OR_B32,"S_OR_B32",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_OR_B64,"S_OR_B64",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_XOR_B32,"S_XOR_B32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_XOR_B64,"S_XOR_B64",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_ANDN2_B32,"S_ANDN2_B32",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_ANDN2_B64,"S_ANDN2_B64",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_ORN2_B32,"S_ORN2_B32",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_ORN2_B64,"S_ORN2_B64",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NAND_B32,"S_NAND_B32",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NAND_B64,"S_NAND_B64",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOR_B32,"S_NOR_B32",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOR_B64,"S_NOR_B64",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_XNOR_B32,"S_XNOR_B32",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_XNOR_B64,"S_XNOR_B64",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_LSHL_B32,"S_LSHL_B32",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_LSHL_B64,"S_LSHL_B64",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_LSHR_B32,"S_LSHR_B32",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_LSHR_B64,"S_LSHR_B64",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_S_ASHR_I32,"S_ASHR_I32",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_S_ASHR_I64,"S_ASHR_I64",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_S_BFM_B32,"S_BFM_B32",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_S_BFM_B64,"S_BFM_B64",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_MUL_I32,"S_MUL_I32",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_BFE_U32,"S_BFE_U32",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_BFE_I32,"S_BFE_I32",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_BFE_U64,"S_BFE_U64",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_BFE_I64,"S_BFE_I64",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_CBRANCH_G_FORK,"S_CBRANCH_G_FORK",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_ABSDIFF_I32,"S_ABSDIFF_I32",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_RFE_RESTORE_B64,"S_RFE_RESTORE_B64",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_MUL_HI_U32,"S_MUL_HI_U32",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_MUL_HI_I32,"S_MUL_HI_I32",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_LSHL1_ADD_U32,"S_LSHL1_ADD_U32",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_LSHL2_ADD_U32,"S_LSHL2_ADD_U32",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_LSHL3_ADD_U32,"S_LSHL3_ADD_U32",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_LSHL4_ADD_U32,"S_LSHL4_ADD_U32",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_PACK_LL_B32_B16,"S_PACK_LL_B32_B16",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_PACK_LH_B32_B16,"S_PACK_LH_B32_B16",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_PACK_HH_B32_B16,"S_PACK_HH_B32_B16",0,&operandTable[0]} ,//52 +}; // end ENC_SOP2_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_SOPC_insn_table = { +{amdgpu_gfx908_op_S_CMP_EQ_I32,"S_CMP_EQ_I32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_CMP_LG_I32,"S_CMP_LG_I32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_CMP_GT_I32,"S_CMP_GT_I32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_CMP_GE_I32,"S_CMP_GE_I32",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_CMP_LT_I32,"S_CMP_LT_I32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_CMP_LE_I32,"S_CMP_LE_I32",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_CMP_EQ_U32,"S_CMP_EQ_U32",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_CMP_LG_U32,"S_CMP_LG_U32",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_CMP_GT_U32,"S_CMP_GT_U32",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_CMP_GE_U32,"S_CMP_GE_U32",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_CMP_LT_U32,"S_CMP_LT_U32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_CMP_LE_U32,"S_CMP_LE_U32",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_BITCMP0_B32,"S_BITCMP0_B32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_BITCMP1_B32,"S_BITCMP1_B32",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_BITCMP0_B64,"S_BITCMP0_B64",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_BITCMP1_B64,"S_BITCMP1_B64",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_SETVSKIP,"S_SETVSKIP",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_SET_GPR_IDX_ON,"S_SET_GPR_IDX_ON",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_CMP_EQ_U64,"S_CMP_EQ_U64",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_CMP_LG_U64,"S_CMP_LG_U64",0,&operandTable[0]} ,//19 +}; // end ENC_SOPC_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_SOPK_insn_table = { +{amdgpu_gfx908_op_S_MOVK_I32,"S_MOVK_I32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_CMOVK_I32,"S_CMOVK_I32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_CMPK_EQ_I32,"S_CMPK_EQ_I32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_CMPK_LG_I32,"S_CMPK_LG_I32",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_CMPK_GT_I32,"S_CMPK_GT_I32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_CMPK_GE_I32,"S_CMPK_GE_I32",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_CMPK_LT_I32,"S_CMPK_LT_I32",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_CMPK_LE_I32,"S_CMPK_LE_I32",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_CMPK_EQ_U32,"S_CMPK_EQ_U32",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_CMPK_LG_U32,"S_CMPK_LG_U32",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_CMPK_GT_U32,"S_CMPK_GT_U32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_CMPK_GE_U32,"S_CMPK_GE_U32",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_CMPK_LT_U32,"S_CMPK_LT_U32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_CMPK_LE_U32,"S_CMPK_LE_U32",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_ADDK_I32,"S_ADDK_I32",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_MULK_I32,"S_MULK_I32",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_CBRANCH_I_FORK,"S_CBRANCH_I_FORK",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_GETREG_B32,"S_GETREG_B32",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_SETREG_B32,"S_SETREG_B32",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_CALL_B64,"S_CALL_B64",0,&operandTable[0]} ,//21 +}; // end ENC_SOPK_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::SOPK_INST_LITERAL__insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_SETREG_IMM32_B32,"S_SETREG_IMM32_B32",0,&operandTable[0]} ,//20 +}; // end SOPK_INST_LITERAL__insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_SOPP_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_ENDPGM,"S_ENDPGM",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_BRANCH,"S_BRANCH",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_WAKEUP,"S_WAKEUP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_CBRANCH_SCC0,"S_CBRANCH_SCC0",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_CBRANCH_SCC1,"S_CBRANCH_SCC1",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_CBRANCH_VCCZ,"S_CBRANCH_VCCZ",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_CBRANCH_VCCNZ,"S_CBRANCH_VCCNZ",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_CBRANCH_EXECZ,"S_CBRANCH_EXECZ",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_CBRANCH_EXECNZ,"S_CBRANCH_EXECNZ",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_BARRIER,"S_BARRIER",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_SETKILL,"S_SETKILL",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_WAITCNT,"S_WAITCNT",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_SETHALT,"S_SETHALT",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_SLEEP,"S_SLEEP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_SETPRIO,"S_SETPRIO",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_SENDMSG,"S_SENDMSG",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_SENDMSGHALT,"S_SENDMSGHALT",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_TRAP,"S_TRAP",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_ICACHE_INV,"S_ICACHE_INV",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_INCPERFLEVEL,"S_INCPERFLEVEL",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_DECPERFLEVEL,"S_DECPERFLEVEL",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_TTRACEDATA,"S_TTRACEDATA",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_CBRANCH_CDBGSYS,"S_CBRANCH_CDBGSYS",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_CBRANCH_CDBGUSER,"S_CBRANCH_CDBGUSER",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_CBRANCH_CDBGSYS_OR_USER,"S_CBRANCH_CDBGSYS_OR_USER",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_CBRANCH_CDBGSYS_AND_USER,"S_CBRANCH_CDBGSYS_AND_USER",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_ENDPGM_SAVED,"S_ENDPGM_SAVED",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_SET_GPR_IDX_OFF,"S_SET_GPR_IDX_OFF",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_SET_GPR_IDX_MODE,"S_SET_GPR_IDX_MODE",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_ENDPGM_ORDERED_PS_DONE,"S_ENDPGM_ORDERED_PS_DONE",0,&operandTable[0]} ,//30 +}; // end ENC_SOPP_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VINTRP_insn_table = { +{amdgpu_gfx908_op_V_INTERP_P1_F32,"V_INTERP_P1_F32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_V_INTERP_P2_F32,"V_INTERP_P2_F32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_V_INTERP_MOV_F32,"V_INTERP_MOV_F32",0,&operandTable[0]} ,//2 +}; // end ENC_VINTRP_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP3_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_V_CMP_CLASS_F32,"V_CMP_CLASS_F32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_V_CMPX_CLASS_F32,"V_CMPX_CLASS_F32",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_V_CMP_CLASS_F64,"V_CMP_CLASS_F64",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_V_CMPX_CLASS_F64,"V_CMPX_CLASS_F64",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_V_CMP_CLASS_F16,"V_CMP_CLASS_F16",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_V_CMPX_CLASS_F16,"V_CMPX_CLASS_F16",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_V_CMP_F_F16,"V_CMP_F_F16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_V_CMP_LT_F16,"V_CMP_LT_F16",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_V_CMP_EQ_F16,"V_CMP_EQ_F16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_V_CMP_LE_F16,"V_CMP_LE_F16",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_V_CMP_GT_F16,"V_CMP_GT_F16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_V_CMP_LG_F16,"V_CMP_LG_F16",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_V_CMP_GE_F16,"V_CMP_GE_F16",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_V_CMP_O_F16,"V_CMP_O_F16",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_V_CMP_U_F16,"V_CMP_U_F16",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_V_CMP_NGE_F16,"V_CMP_NGE_F16",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_V_CMP_NLG_F16,"V_CMP_NLG_F16",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_V_CMP_NGT_F16,"V_CMP_NGT_F16",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_V_CMP_NLE_F16,"V_CMP_NLE_F16",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_V_CMP_NEQ_F16,"V_CMP_NEQ_F16",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_V_CMP_NLT_F16,"V_CMP_NLT_F16",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_V_CMP_TRU_F16,"V_CMP_TRU_F16",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_V_CMPX_F_F16,"V_CMPX_F_F16",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_V_CMPX_LT_F16,"V_CMPX_LT_F16",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_V_CMPX_EQ_F16,"V_CMPX_EQ_F16",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_V_CMPX_LE_F16,"V_CMPX_LE_F16",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_V_CMPX_GT_F16,"V_CMPX_GT_F16",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_V_CMPX_LG_F16,"V_CMPX_LG_F16",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_V_CMPX_GE_F16,"V_CMPX_GE_F16",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_V_CMPX_O_F16,"V_CMPX_O_F16",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_V_CMPX_U_F16,"V_CMPX_U_F16",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_V_CMPX_NGE_F16,"V_CMPX_NGE_F16",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_V_CMPX_NLG_F16,"V_CMPX_NLG_F16",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_V_CMPX_NGT_F16,"V_CMPX_NGT_F16",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_V_CMPX_NLE_F16,"V_CMPX_NLE_F16",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_V_CMPX_NEQ_F16,"V_CMPX_NEQ_F16",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_V_CMPX_NLT_F16,"V_CMPX_NLT_F16",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_V_CMPX_TRU_F16,"V_CMPX_TRU_F16",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_V_CMP_F_F32,"V_CMP_F_F32",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_V_CMP_LT_F32,"V_CMP_LT_F32",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_V_CMP_EQ_F32,"V_CMP_EQ_F32",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_V_CMP_LE_F32,"V_CMP_LE_F32",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_V_CMP_GT_F32,"V_CMP_GT_F32",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_V_CMP_LG_F32,"V_CMP_LG_F32",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_V_CMP_GE_F32,"V_CMP_GE_F32",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_V_CMP_O_F32,"V_CMP_O_F32",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_V_CMP_U_F32,"V_CMP_U_F32",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_V_CMP_NGE_F32,"V_CMP_NGE_F32",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_V_CMP_NLG_F32,"V_CMP_NLG_F32",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_V_CMP_NGT_F32,"V_CMP_NGT_F32",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_V_CMP_NLE_F32,"V_CMP_NLE_F32",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_V_CMP_NEQ_F32,"V_CMP_NEQ_F32",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_V_CMP_NLT_F32,"V_CMP_NLT_F32",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_V_CMP_TRU_F32,"V_CMP_TRU_F32",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_V_CMPX_F_F32,"V_CMPX_F_F32",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_V_CMPX_LT_F32,"V_CMPX_LT_F32",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_V_CMPX_EQ_F32,"V_CMPX_EQ_F32",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_V_CMPX_LE_F32,"V_CMPX_LE_F32",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_V_CMPX_GT_F32,"V_CMPX_GT_F32",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_V_CMPX_LG_F32,"V_CMPX_LG_F32",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_V_CMPX_GE_F32,"V_CMPX_GE_F32",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_V_CMPX_O_F32,"V_CMPX_O_F32",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_V_CMPX_U_F32,"V_CMPX_U_F32",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_V_CMPX_NGE_F32,"V_CMPX_NGE_F32",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_V_CMPX_NLG_F32,"V_CMPX_NLG_F32",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_V_CMPX_NGT_F32,"V_CMPX_NGT_F32",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_V_CMPX_NLE_F32,"V_CMPX_NLE_F32",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_V_CMPX_NEQ_F32,"V_CMPX_NEQ_F32",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_V_CMPX_NLT_F32,"V_CMPX_NLT_F32",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_V_CMPX_TRU_F32,"V_CMPX_TRU_F32",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_V_CMP_F_F64,"V_CMP_F_F64",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_V_CMP_LT_F64,"V_CMP_LT_F64",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_V_CMP_EQ_F64,"V_CMP_EQ_F64",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_V_CMP_LE_F64,"V_CMP_LE_F64",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_V_CMP_GT_F64,"V_CMP_GT_F64",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_V_CMP_LG_F64,"V_CMP_LG_F64",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_V_CMP_GE_F64,"V_CMP_GE_F64",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_V_CMP_O_F64,"V_CMP_O_F64",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_V_CMP_U_F64,"V_CMP_U_F64",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_V_CMP_NGE_F64,"V_CMP_NGE_F64",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_V_CMP_NLG_F64,"V_CMP_NLG_F64",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_V_CMP_NGT_F64,"V_CMP_NGT_F64",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_V_CMP_NLE_F64,"V_CMP_NLE_F64",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_V_CMP_NEQ_F64,"V_CMP_NEQ_F64",0,&operandTable[0]} ,//109 +{amdgpu_gfx908_op_V_CMP_NLT_F64,"V_CMP_NLT_F64",0,&operandTable[0]} ,//110 +{amdgpu_gfx908_op_V_CMP_TRU_F64,"V_CMP_TRU_F64",0,&operandTable[0]} ,//111 +{amdgpu_gfx908_op_V_CMPX_F_F64,"V_CMPX_F_F64",0,&operandTable[0]} ,//112 +{amdgpu_gfx908_op_V_CMPX_LT_F64,"V_CMPX_LT_F64",0,&operandTable[0]} ,//113 +{amdgpu_gfx908_op_V_CMPX_EQ_F64,"V_CMPX_EQ_F64",0,&operandTable[0]} ,//114 +{amdgpu_gfx908_op_V_CMPX_LE_F64,"V_CMPX_LE_F64",0,&operandTable[0]} ,//115 +{amdgpu_gfx908_op_V_CMPX_GT_F64,"V_CMPX_GT_F64",0,&operandTable[0]} ,//116 +{amdgpu_gfx908_op_V_CMPX_LG_F64,"V_CMPX_LG_F64",0,&operandTable[0]} ,//117 +{amdgpu_gfx908_op_V_CMPX_GE_F64,"V_CMPX_GE_F64",0,&operandTable[0]} ,//118 +{amdgpu_gfx908_op_V_CMPX_O_F64,"V_CMPX_O_F64",0,&operandTable[0]} ,//119 +{amdgpu_gfx908_op_V_CMPX_U_F64,"V_CMPX_U_F64",0,&operandTable[0]} ,//120 +{amdgpu_gfx908_op_V_CMPX_NGE_F64,"V_CMPX_NGE_F64",0,&operandTable[0]} ,//121 +{amdgpu_gfx908_op_V_CMPX_NLG_F64,"V_CMPX_NLG_F64",0,&operandTable[0]} ,//122 +{amdgpu_gfx908_op_V_CMPX_NGT_F64,"V_CMPX_NGT_F64",0,&operandTable[0]} ,//123 +{amdgpu_gfx908_op_V_CMPX_NLE_F64,"V_CMPX_NLE_F64",0,&operandTable[0]} ,//124 +{amdgpu_gfx908_op_V_CMPX_NEQ_F64,"V_CMPX_NEQ_F64",0,&operandTable[0]} ,//125 +{amdgpu_gfx908_op_V_CMPX_NLT_F64,"V_CMPX_NLT_F64",0,&operandTable[0]} ,//126 +{amdgpu_gfx908_op_V_CMPX_TRU_F64,"V_CMPX_TRU_F64",0,&operandTable[0]} ,//127 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_gfx908_op_V_CMP_F_I16,"V_CMP_F_I16",0,&operandTable[0]} ,//160 +{amdgpu_gfx908_op_V_CMP_LT_I16,"V_CMP_LT_I16",0,&operandTable[0]} ,//161 +{amdgpu_gfx908_op_V_CMP_EQ_I16,"V_CMP_EQ_I16",0,&operandTable[0]} ,//162 +{amdgpu_gfx908_op_V_CMP_LE_I16,"V_CMP_LE_I16",0,&operandTable[0]} ,//163 +{amdgpu_gfx908_op_V_CMP_GT_I16,"V_CMP_GT_I16",0,&operandTable[0]} ,//164 +{amdgpu_gfx908_op_V_CMP_NE_I16,"V_CMP_NE_I16",0,&operandTable[0]} ,//165 +{amdgpu_gfx908_op_V_CMP_GE_I16,"V_CMP_GE_I16",0,&operandTable[0]} ,//166 +{amdgpu_gfx908_op_V_CMP_T_I16,"V_CMP_T_I16",0,&operandTable[0]} ,//167 +{amdgpu_gfx908_op_V_CMP_F_U16,"V_CMP_F_U16",0,&operandTable[0]} ,//168 +{amdgpu_gfx908_op_V_CMP_LT_U16,"V_CMP_LT_U16",0,&operandTable[0]} ,//169 +{amdgpu_gfx908_op_V_CMP_EQ_U16,"V_CMP_EQ_U16",0,&operandTable[0]} ,//170 +{amdgpu_gfx908_op_V_CMP_LE_U16,"V_CMP_LE_U16",0,&operandTable[0]} ,//171 +{amdgpu_gfx908_op_V_CMP_GT_U16,"V_CMP_GT_U16",0,&operandTable[0]} ,//172 +{amdgpu_gfx908_op_V_CMP_NE_U16,"V_CMP_NE_U16",0,&operandTable[0]} ,//173 +{amdgpu_gfx908_op_V_CMP_GE_U16,"V_CMP_GE_U16",0,&operandTable[0]} ,//174 +{amdgpu_gfx908_op_V_CMP_T_U16,"V_CMP_T_U16",0,&operandTable[0]} ,//175 +{amdgpu_gfx908_op_V_CMPX_F_I16,"V_CMPX_F_I16",0,&operandTable[0]} ,//176 +{amdgpu_gfx908_op_V_CMPX_LT_I16,"V_CMPX_LT_I16",0,&operandTable[0]} ,//177 +{amdgpu_gfx908_op_V_CMPX_EQ_I16,"V_CMPX_EQ_I16",0,&operandTable[0]} ,//178 +{amdgpu_gfx908_op_V_CMPX_LE_I16,"V_CMPX_LE_I16",0,&operandTable[0]} ,//179 +{amdgpu_gfx908_op_V_CMPX_GT_I16,"V_CMPX_GT_I16",0,&operandTable[0]} ,//180 +{amdgpu_gfx908_op_V_CMPX_NE_I16,"V_CMPX_NE_I16",0,&operandTable[0]} ,//181 +{amdgpu_gfx908_op_V_CMPX_GE_I16,"V_CMPX_GE_I16",0,&operandTable[0]} ,//182 +{amdgpu_gfx908_op_V_CMPX_T_I16,"V_CMPX_T_I16",0,&operandTable[0]} ,//183 +{amdgpu_gfx908_op_V_CMPX_F_U16,"V_CMPX_F_U16",0,&operandTable[0]} ,//184 +{amdgpu_gfx908_op_V_CMPX_LT_U16,"V_CMPX_LT_U16",0,&operandTable[0]} ,//185 +{amdgpu_gfx908_op_V_CMPX_EQ_U16,"V_CMPX_EQ_U16",0,&operandTable[0]} ,//186 +{amdgpu_gfx908_op_V_CMPX_LE_U16,"V_CMPX_LE_U16",0,&operandTable[0]} ,//187 +{amdgpu_gfx908_op_V_CMPX_GT_U16,"V_CMPX_GT_U16",0,&operandTable[0]} ,//188 +{amdgpu_gfx908_op_V_CMPX_NE_U16,"V_CMPX_NE_U16",0,&operandTable[0]} ,//189 +{amdgpu_gfx908_op_V_CMPX_GE_U16,"V_CMPX_GE_U16",0,&operandTable[0]} ,//190 +{amdgpu_gfx908_op_V_CMPX_T_U16,"V_CMPX_T_U16",0,&operandTable[0]} ,//191 +{amdgpu_gfx908_op_V_CMP_F_I32,"V_CMP_F_I32",0,&operandTable[0]} ,//192 +{amdgpu_gfx908_op_V_CMP_LT_I32,"V_CMP_LT_I32",0,&operandTable[0]} ,//193 +{amdgpu_gfx908_op_V_CMP_EQ_I32,"V_CMP_EQ_I32",0,&operandTable[0]} ,//194 +{amdgpu_gfx908_op_V_CMP_LE_I32,"V_CMP_LE_I32",0,&operandTable[0]} ,//195 +{amdgpu_gfx908_op_V_CMP_GT_I32,"V_CMP_GT_I32",0,&operandTable[0]} ,//196 +{amdgpu_gfx908_op_V_CMP_NE_I32,"V_CMP_NE_I32",0,&operandTable[0]} ,//197 +{amdgpu_gfx908_op_V_CMP_GE_I32,"V_CMP_GE_I32",0,&operandTable[0]} ,//198 +{amdgpu_gfx908_op_V_CMP_T_I32,"V_CMP_T_I32",0,&operandTable[0]} ,//199 +{amdgpu_gfx908_op_V_CMP_F_U32,"V_CMP_F_U32",0,&operandTable[0]} ,//200 +{amdgpu_gfx908_op_V_CMP_LT_U32,"V_CMP_LT_U32",0,&operandTable[0]} ,//201 +{amdgpu_gfx908_op_V_CMP_EQ_U32,"V_CMP_EQ_U32",0,&operandTable[0]} ,//202 +{amdgpu_gfx908_op_V_CMP_LE_U32,"V_CMP_LE_U32",0,&operandTable[0]} ,//203 +{amdgpu_gfx908_op_V_CMP_GT_U32,"V_CMP_GT_U32",0,&operandTable[0]} ,//204 +{amdgpu_gfx908_op_V_CMP_NE_U32,"V_CMP_NE_U32",0,&operandTable[0]} ,//205 +{amdgpu_gfx908_op_V_CMP_GE_U32,"V_CMP_GE_U32",0,&operandTable[0]} ,//206 +{amdgpu_gfx908_op_V_CMP_T_U32,"V_CMP_T_U32",0,&operandTable[0]} ,//207 +{amdgpu_gfx908_op_V_CMPX_F_I32,"V_CMPX_F_I32",0,&operandTable[0]} ,//208 +{amdgpu_gfx908_op_V_CMPX_LT_I32,"V_CMPX_LT_I32",0,&operandTable[0]} ,//209 +{amdgpu_gfx908_op_V_CMPX_EQ_I32,"V_CMPX_EQ_I32",0,&operandTable[0]} ,//210 +{amdgpu_gfx908_op_V_CMPX_LE_I32,"V_CMPX_LE_I32",0,&operandTable[0]} ,//211 +{amdgpu_gfx908_op_V_CMPX_GT_I32,"V_CMPX_GT_I32",0,&operandTable[0]} ,//212 +{amdgpu_gfx908_op_V_CMPX_NE_I32,"V_CMPX_NE_I32",0,&operandTable[0]} ,//213 +{amdgpu_gfx908_op_V_CMPX_GE_I32,"V_CMPX_GE_I32",0,&operandTable[0]} ,//214 +{amdgpu_gfx908_op_V_CMPX_T_I32,"V_CMPX_T_I32",0,&operandTable[0]} ,//215 +{amdgpu_gfx908_op_V_CMPX_F_U32,"V_CMPX_F_U32",0,&operandTable[0]} ,//216 +{amdgpu_gfx908_op_V_CMPX_LT_U32,"V_CMPX_LT_U32",0,&operandTable[0]} ,//217 +{amdgpu_gfx908_op_V_CMPX_EQ_U32,"V_CMPX_EQ_U32",0,&operandTable[0]} ,//218 +{amdgpu_gfx908_op_V_CMPX_LE_U32,"V_CMPX_LE_U32",0,&operandTable[0]} ,//219 +{amdgpu_gfx908_op_V_CMPX_GT_U32,"V_CMPX_GT_U32",0,&operandTable[0]} ,//220 +{amdgpu_gfx908_op_V_CMPX_NE_U32,"V_CMPX_NE_U32",0,&operandTable[0]} ,//221 +{amdgpu_gfx908_op_V_CMPX_GE_U32,"V_CMPX_GE_U32",0,&operandTable[0]} ,//222 +{amdgpu_gfx908_op_V_CMPX_T_U32,"V_CMPX_T_U32",0,&operandTable[0]} ,//223 +{amdgpu_gfx908_op_V_CMP_F_I64,"V_CMP_F_I64",0,&operandTable[0]} ,//224 +{amdgpu_gfx908_op_V_CMP_LT_I64,"V_CMP_LT_I64",0,&operandTable[0]} ,//225 +{amdgpu_gfx908_op_V_CMP_EQ_I64,"V_CMP_EQ_I64",0,&operandTable[0]} ,//226 +{amdgpu_gfx908_op_V_CMP_LE_I64,"V_CMP_LE_I64",0,&operandTable[0]} ,//227 +{amdgpu_gfx908_op_V_CMP_GT_I64,"V_CMP_GT_I64",0,&operandTable[0]} ,//228 +{amdgpu_gfx908_op_V_CMP_NE_I64,"V_CMP_NE_I64",0,&operandTable[0]} ,//229 +{amdgpu_gfx908_op_V_CMP_GE_I64,"V_CMP_GE_I64",0,&operandTable[0]} ,//230 +{amdgpu_gfx908_op_V_CMP_T_I64,"V_CMP_T_I64",0,&operandTable[0]} ,//231 +{amdgpu_gfx908_op_V_CMP_F_U64,"V_CMP_F_U64",0,&operandTable[0]} ,//232 +{amdgpu_gfx908_op_V_CMP_LT_U64,"V_CMP_LT_U64",0,&operandTable[0]} ,//233 +{amdgpu_gfx908_op_V_CMP_EQ_U64,"V_CMP_EQ_U64",0,&operandTable[0]} ,//234 +{amdgpu_gfx908_op_V_CMP_LE_U64,"V_CMP_LE_U64",0,&operandTable[0]} ,//235 +{amdgpu_gfx908_op_V_CMP_GT_U64,"V_CMP_GT_U64",0,&operandTable[0]} ,//236 +{amdgpu_gfx908_op_V_CMP_NE_U64,"V_CMP_NE_U64",0,&operandTable[0]} ,//237 +{amdgpu_gfx908_op_V_CMP_GE_U64,"V_CMP_GE_U64",0,&operandTable[0]} ,//238 +{amdgpu_gfx908_op_V_CMP_T_U64,"V_CMP_T_U64",0,&operandTable[0]} ,//239 +{amdgpu_gfx908_op_V_CMPX_F_I64,"V_CMPX_F_I64",0,&operandTable[0]} ,//240 +{amdgpu_gfx908_op_V_CMPX_LT_I64,"V_CMPX_LT_I64",0,&operandTable[0]} ,//241 +{amdgpu_gfx908_op_V_CMPX_EQ_I64,"V_CMPX_EQ_I64",0,&operandTable[0]} ,//242 +{amdgpu_gfx908_op_V_CMPX_LE_I64,"V_CMPX_LE_I64",0,&operandTable[0]} ,//243 +{amdgpu_gfx908_op_V_CMPX_GT_I64,"V_CMPX_GT_I64",0,&operandTable[0]} ,//244 +{amdgpu_gfx908_op_V_CMPX_NE_I64,"V_CMPX_NE_I64",0,&operandTable[0]} ,//245 +{amdgpu_gfx908_op_V_CMPX_GE_I64,"V_CMPX_GE_I64",0,&operandTable[0]} ,//246 +{amdgpu_gfx908_op_V_CMPX_T_I64,"V_CMPX_T_I64",0,&operandTable[0]} ,//247 +{amdgpu_gfx908_op_V_CMPX_F_U64,"V_CMPX_F_U64",0,&operandTable[0]} ,//248 +{amdgpu_gfx908_op_V_CMPX_LT_U64,"V_CMPX_LT_U64",0,&operandTable[0]} ,//249 +{amdgpu_gfx908_op_V_CMPX_EQ_U64,"V_CMPX_EQ_U64",0,&operandTable[0]} ,//250 +{amdgpu_gfx908_op_V_CMPX_LE_U64,"V_CMPX_LE_U64",0,&operandTable[0]} ,//251 +{amdgpu_gfx908_op_V_CMPX_GT_U64,"V_CMPX_GT_U64",0,&operandTable[0]} ,//252 +{amdgpu_gfx908_op_V_CMPX_NE_U64,"V_CMPX_NE_U64",0,&operandTable[0]} ,//253 +{amdgpu_gfx908_op_V_CMPX_GE_U64,"V_CMPX_GE_U64",0,&operandTable[0]} ,//254 +{amdgpu_gfx908_op_V_CMPX_T_U64,"V_CMPX_T_U64",0,&operandTable[0]} ,//255 +{amdgpu_gfx908_op_V_CNDMASK_B32,"V_CNDMASK_B32",0,&operandTable[0]} ,//256 +{amdgpu_gfx908_op_V_ADD_F32,"V_ADD_F32",0,&operandTable[0]} ,//257 +{amdgpu_gfx908_op_V_SUB_F32,"V_SUB_F32",0,&operandTable[0]} ,//258 +{amdgpu_gfx908_op_V_SUBREV_F32,"V_SUBREV_F32",0,&operandTable[0]} ,//259 +{amdgpu_gfx908_op_V_MUL_LEGACY_F32,"V_MUL_LEGACY_F32",0,&operandTable[0]} ,//260 +{amdgpu_gfx908_op_V_MUL_F32,"V_MUL_F32",0,&operandTable[0]} ,//261 +{amdgpu_gfx908_op_V_MUL_I32_I24,"V_MUL_I32_I24",0,&operandTable[0]} ,//262 +{amdgpu_gfx908_op_V_MUL_HI_I32_I24,"V_MUL_HI_I32_I24",0,&operandTable[0]} ,//263 +{amdgpu_gfx908_op_V_MUL_U32_U24,"V_MUL_U32_U24",0,&operandTable[0]} ,//264 +{amdgpu_gfx908_op_V_MUL_HI_U32_U24,"V_MUL_HI_U32_U24",0,&operandTable[0]} ,//265 +{amdgpu_gfx908_op_V_MIN_F32,"V_MIN_F32",0,&operandTable[0]} ,//266 +{amdgpu_gfx908_op_V_MAX_F32,"V_MAX_F32",0,&operandTable[0]} ,//267 +{amdgpu_gfx908_op_V_MIN_I32,"V_MIN_I32",0,&operandTable[0]} ,//268 +{amdgpu_gfx908_op_V_MAX_I32,"V_MAX_I32",0,&operandTable[0]} ,//269 +{amdgpu_gfx908_op_V_MIN_U32,"V_MIN_U32",0,&operandTable[0]} ,//270 +{amdgpu_gfx908_op_V_MAX_U32,"V_MAX_U32",0,&operandTable[0]} ,//271 +{amdgpu_gfx908_op_V_LSHRREV_B32,"V_LSHRREV_B32",0,&operandTable[0]} ,//272 +{amdgpu_gfx908_op_V_ASHRREV_I32,"V_ASHRREV_I32",0,&operandTable[0]} ,//273 +{amdgpu_gfx908_op_V_LSHLREV_B32,"V_LSHLREV_B32",0,&operandTable[0]} ,//274 +{amdgpu_gfx908_op_V_AND_B32,"V_AND_B32",0,&operandTable[0]} ,//275 +{amdgpu_gfx908_op_V_OR_B32,"V_OR_B32",0,&operandTable[0]} ,//276 +{amdgpu_gfx908_op_V_XOR_B32,"V_XOR_B32",0,&operandTable[0]} ,//277 +{amdgpu_gfx908_op_V_MAC_F32,"V_MAC_F32",0,&operandTable[0]} ,//278 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//279 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//280 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//281 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//282 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//283 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//284 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//285 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//286 +{amdgpu_gfx908_op_V_ADD_F16,"V_ADD_F16",0,&operandTable[0]} ,//287 +{amdgpu_gfx908_op_V_SUB_F16,"V_SUB_F16",0,&operandTable[0]} ,//288 +{amdgpu_gfx908_op_V_SUBREV_F16,"V_SUBREV_F16",0,&operandTable[0]} ,//289 +{amdgpu_gfx908_op_V_MUL_F16,"V_MUL_F16",0,&operandTable[0]} ,//290 +{amdgpu_gfx908_op_V_MAC_F16,"V_MAC_F16",0,&operandTable[0]} ,//291 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//292 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//293 +{amdgpu_gfx908_op_V_ADD_U16,"V_ADD_U16",0,&operandTable[0]} ,//294 +{amdgpu_gfx908_op_V_SUB_U16,"V_SUB_U16",0,&operandTable[0]} ,//295 +{amdgpu_gfx908_op_V_SUBREV_U16,"V_SUBREV_U16",0,&operandTable[0]} ,//296 +{amdgpu_gfx908_op_V_MUL_LO_U16,"V_MUL_LO_U16",0,&operandTable[0]} ,//297 +{amdgpu_gfx908_op_V_LSHLREV_B16,"V_LSHLREV_B16",0,&operandTable[0]} ,//298 +{amdgpu_gfx908_op_V_LSHRREV_B16,"V_LSHRREV_B16",0,&operandTable[0]} ,//299 +{amdgpu_gfx908_op_V_ASHRREV_I16,"V_ASHRREV_I16",0,&operandTable[0]} ,//300 +{amdgpu_gfx908_op_V_MAX_F16,"V_MAX_F16",0,&operandTable[0]} ,//301 +{amdgpu_gfx908_op_V_MIN_F16,"V_MIN_F16",0,&operandTable[0]} ,//302 +{amdgpu_gfx908_op_V_MAX_U16,"V_MAX_U16",0,&operandTable[0]} ,//303 +{amdgpu_gfx908_op_V_MAX_I16,"V_MAX_I16",0,&operandTable[0]} ,//304 +{amdgpu_gfx908_op_V_MIN_U16,"V_MIN_U16",0,&operandTable[0]} ,//305 +{amdgpu_gfx908_op_V_MIN_I16,"V_MIN_I16",0,&operandTable[0]} ,//306 +{amdgpu_gfx908_op_V_LDEXP_F16,"V_LDEXP_F16",0,&operandTable[0]} ,//307 +{amdgpu_gfx908_op_V_ADD_U32,"V_ADD_U32",0,&operandTable[0]} ,//308 +{amdgpu_gfx908_op_V_SUB_U32,"V_SUB_U32",0,&operandTable[0]} ,//309 +{amdgpu_gfx908_op_V_SUBREV_U32,"V_SUBREV_U32",0,&operandTable[0]} ,//310 +{amdgpu_gfx908_op_V_DOT2C_F32_F16,"V_DOT2C_F32_F16",0,&operandTable[0]} ,//311 +{amdgpu_gfx908_op_V_DOT2C_I32_I16,"V_DOT2C_I32_I16",0,&operandTable[0]} ,//312 +{amdgpu_gfx908_op_V_DOT4C_I32_I8,"V_DOT4C_I32_I8",0,&operandTable[0]} ,//313 +{amdgpu_gfx908_op_V_DOT8C_I32_I4,"V_DOT8C_I32_I4",0,&operandTable[0]} ,//314 +{amdgpu_gfx908_op_V_FMAC_F32,"V_FMAC_F32",0,&operandTable[0]} ,//315 +{amdgpu_gfx908_op_V_PK_FMAC_F16,"V_PK_FMAC_F16",0,&operandTable[0]} ,//316 +{amdgpu_gfx908_op_V_XNOR_B32,"V_XNOR_B32",0,&operandTable[0]} ,//317 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//318 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//319 +{amdgpu_gfx908_op_V_NOP,"V_NOP",0,&operandTable[0]} ,//320 +{amdgpu_gfx908_op_V_MOV_B32,"V_MOV_B32",0,&operandTable[0]} ,//321 +{amdgpu_gfx908_op_V_READFIRSTLANE_B32,"V_READFIRSTLANE_B32",0,&operandTable[0]} ,//322 +{amdgpu_gfx908_op_V_CVT_I32_F64,"V_CVT_I32_F64",0,&operandTable[0]} ,//323 +{amdgpu_gfx908_op_V_CVT_F64_I32,"V_CVT_F64_I32",0,&operandTable[0]} ,//324 +{amdgpu_gfx908_op_V_CVT_F32_I32,"V_CVT_F32_I32",0,&operandTable[0]} ,//325 +{amdgpu_gfx908_op_V_CVT_F32_U32,"V_CVT_F32_U32",0,&operandTable[0]} ,//326 +{amdgpu_gfx908_op_V_CVT_U32_F32,"V_CVT_U32_F32",0,&operandTable[0]} ,//327 +{amdgpu_gfx908_op_V_CVT_I32_F32,"V_CVT_I32_F32",0,&operandTable[0]} ,//328 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//329 +{amdgpu_gfx908_op_V_CVT_F16_F32,"V_CVT_F16_F32",0,&operandTable[0]} ,//330 +{amdgpu_gfx908_op_V_CVT_F32_F16,"V_CVT_F32_F16",0,&operandTable[0]} ,//331 +{amdgpu_gfx908_op_V_CVT_RPI_I32_F32,"V_CVT_RPI_I32_F32",0,&operandTable[0]} ,//332 +{amdgpu_gfx908_op_V_CVT_FLR_I32_F32,"V_CVT_FLR_I32_F32",0,&operandTable[0]} ,//333 +{amdgpu_gfx908_op_V_CVT_OFF_F32_I4,"V_CVT_OFF_F32_I4",0,&operandTable[0]} ,//334 +{amdgpu_gfx908_op_V_CVT_F32_F64,"V_CVT_F32_F64",0,&operandTable[0]} ,//335 +{amdgpu_gfx908_op_V_CVT_F64_F32,"V_CVT_F64_F32",0,&operandTable[0]} ,//336 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE0,"V_CVT_F32_UBYTE0",0,&operandTable[0]} ,//337 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE1,"V_CVT_F32_UBYTE1",0,&operandTable[0]} ,//338 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE2,"V_CVT_F32_UBYTE2",0,&operandTable[0]} ,//339 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE3,"V_CVT_F32_UBYTE3",0,&operandTable[0]} ,//340 +{amdgpu_gfx908_op_V_CVT_U32_F64,"V_CVT_U32_F64",0,&operandTable[0]} ,//341 +{amdgpu_gfx908_op_V_CVT_F64_U32,"V_CVT_F64_U32",0,&operandTable[0]} ,//342 +{amdgpu_gfx908_op_V_TRUNC_F64,"V_TRUNC_F64",0,&operandTable[0]} ,//343 +{amdgpu_gfx908_op_V_CEIL_F64,"V_CEIL_F64",0,&operandTable[0]} ,//344 +{amdgpu_gfx908_op_V_RNDNE_F64,"V_RNDNE_F64",0,&operandTable[0]} ,//345 +{amdgpu_gfx908_op_V_FLOOR_F64,"V_FLOOR_F64",0,&operandTable[0]} ,//346 +{amdgpu_gfx908_op_V_FRACT_F32,"V_FRACT_F32",0,&operandTable[0]} ,//347 +{amdgpu_gfx908_op_V_TRUNC_F32,"V_TRUNC_F32",0,&operandTable[0]} ,//348 +{amdgpu_gfx908_op_V_CEIL_F32,"V_CEIL_F32",0,&operandTable[0]} ,//349 +{amdgpu_gfx908_op_V_RNDNE_F32,"V_RNDNE_F32",0,&operandTable[0]} ,//350 +{amdgpu_gfx908_op_V_FLOOR_F32,"V_FLOOR_F32",0,&operandTable[0]} ,//351 +{amdgpu_gfx908_op_V_EXP_F32,"V_EXP_F32",0,&operandTable[0]} ,//352 +{amdgpu_gfx908_op_V_LOG_F32,"V_LOG_F32",0,&operandTable[0]} ,//353 +{amdgpu_gfx908_op_V_RCP_F32,"V_RCP_F32",0,&operandTable[0]} ,//354 +{amdgpu_gfx908_op_V_RCP_IFLAG_F32,"V_RCP_IFLAG_F32",0,&operandTable[0]} ,//355 +{amdgpu_gfx908_op_V_RSQ_F32,"V_RSQ_F32",0,&operandTable[0]} ,//356 +{amdgpu_gfx908_op_V_RCP_F64,"V_RCP_F64",0,&operandTable[0]} ,//357 +{amdgpu_gfx908_op_V_RSQ_F64,"V_RSQ_F64",0,&operandTable[0]} ,//358 +{amdgpu_gfx908_op_V_SQRT_F32,"V_SQRT_F32",0,&operandTable[0]} ,//359 +{amdgpu_gfx908_op_V_SQRT_F64,"V_SQRT_F64",0,&operandTable[0]} ,//360 +{amdgpu_gfx908_op_V_SIN_F32,"V_SIN_F32",0,&operandTable[0]} ,//361 +{amdgpu_gfx908_op_V_COS_F32,"V_COS_F32",0,&operandTable[0]} ,//362 +{amdgpu_gfx908_op_V_NOT_B32,"V_NOT_B32",0,&operandTable[0]} ,//363 +{amdgpu_gfx908_op_V_BFREV_B32,"V_BFREV_B32",0,&operandTable[0]} ,//364 +{amdgpu_gfx908_op_V_FFBH_U32,"V_FFBH_U32",0,&operandTable[0]} ,//365 +{amdgpu_gfx908_op_V_FFBL_B32,"V_FFBL_B32",0,&operandTable[0]} ,//366 +{amdgpu_gfx908_op_V_FFBH_I32,"V_FFBH_I32",0,&operandTable[0]} ,//367 +{amdgpu_gfx908_op_V_FREXP_EXP_I32_F64,"V_FREXP_EXP_I32_F64",0,&operandTable[0]} ,//368 +{amdgpu_gfx908_op_V_FREXP_MANT_F64,"V_FREXP_MANT_F64",0,&operandTable[0]} ,//369 +{amdgpu_gfx908_op_V_FRACT_F64,"V_FRACT_F64",0,&operandTable[0]} ,//370 +{amdgpu_gfx908_op_V_FREXP_EXP_I32_F32,"V_FREXP_EXP_I32_F32",0,&operandTable[0]} ,//371 +{amdgpu_gfx908_op_V_FREXP_MANT_F32,"V_FREXP_MANT_F32",0,&operandTable[0]} ,//372 +{amdgpu_gfx908_op_V_CLREXCP,"V_CLREXCP",0,&operandTable[0]} ,//373 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//374 +{amdgpu_gfx908_op_V_SCREEN_PARTITION_4SE_B32,"V_SCREEN_PARTITION_4SE_B32",0,&operandTable[0]} ,//375 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//376 +{amdgpu_gfx908_op_V_CVT_F16_U16,"V_CVT_F16_U16",0,&operandTable[0]} ,//377 +{amdgpu_gfx908_op_V_CVT_F16_I16,"V_CVT_F16_I16",0,&operandTable[0]} ,//378 +{amdgpu_gfx908_op_V_CVT_U16_F16,"V_CVT_U16_F16",0,&operandTable[0]} ,//379 +{amdgpu_gfx908_op_V_CVT_I16_F16,"V_CVT_I16_F16",0,&operandTable[0]} ,//380 +{amdgpu_gfx908_op_V_RCP_F16,"V_RCP_F16",0,&operandTable[0]} ,//381 +{amdgpu_gfx908_op_V_SQRT_F16,"V_SQRT_F16",0,&operandTable[0]} ,//382 +{amdgpu_gfx908_op_V_RSQ_F16,"V_RSQ_F16",0,&operandTable[0]} ,//383 +{amdgpu_gfx908_op_V_LOG_F16,"V_LOG_F16",0,&operandTable[0]} ,//384 +{amdgpu_gfx908_op_V_EXP_F16,"V_EXP_F16",0,&operandTable[0]} ,//385 +{amdgpu_gfx908_op_V_FREXP_MANT_F16,"V_FREXP_MANT_F16",0,&operandTable[0]} ,//386 +{amdgpu_gfx908_op_V_FREXP_EXP_I16_F16,"V_FREXP_EXP_I16_F16",0,&operandTable[0]} ,//387 +{amdgpu_gfx908_op_V_FLOOR_F16,"V_FLOOR_F16",0,&operandTable[0]} ,//388 +{amdgpu_gfx908_op_V_CEIL_F16,"V_CEIL_F16",0,&operandTable[0]} ,//389 +{amdgpu_gfx908_op_V_TRUNC_F16,"V_TRUNC_F16",0,&operandTable[0]} ,//390 +{amdgpu_gfx908_op_V_RNDNE_F16,"V_RNDNE_F16",0,&operandTable[0]} ,//391 +{amdgpu_gfx908_op_V_FRACT_F16,"V_FRACT_F16",0,&operandTable[0]} ,//392 +{amdgpu_gfx908_op_V_SIN_F16,"V_SIN_F16",0,&operandTable[0]} ,//393 +{amdgpu_gfx908_op_V_COS_F16,"V_COS_F16",0,&operandTable[0]} ,//394 +{amdgpu_gfx908_op_V_EXP_LEGACY_F32,"V_EXP_LEGACY_F32",0,&operandTable[0]} ,//395 +{amdgpu_gfx908_op_V_LOG_LEGACY_F32,"V_LOG_LEGACY_F32",0,&operandTable[0]} ,//396 +{amdgpu_gfx908_op_V_CVT_NORM_I16_F16,"V_CVT_NORM_I16_F16",0,&operandTable[0]} ,//397 +{amdgpu_gfx908_op_V_CVT_NORM_U16_F16,"V_CVT_NORM_U16_F16",0,&operandTable[0]} ,//398 +{amdgpu_gfx908_op_V_SAT_PK_U8_I16,"V_SAT_PK_U8_I16",0,&operandTable[0]} ,//399 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//400 +{amdgpu_gfx908_op_V_SWAP_B32,"V_SWAP_B32",0,&operandTable[0]} ,//401 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//402 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//403 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//404 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//405 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//406 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//407 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//408 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//409 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//410 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//411 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//412 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//413 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//414 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//415 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//416 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//417 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//418 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//419 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//420 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//421 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//422 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//423 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//424 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//425 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//426 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//427 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//428 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//429 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//430 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//431 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//432 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//433 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//434 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//435 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//436 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//437 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//438 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//439 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//440 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//441 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//442 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//443 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//444 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//445 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//446 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//447 +{amdgpu_gfx908_op_V_MAD_LEGACY_F32,"V_MAD_LEGACY_F32",0,&operandTable[0]} ,//448 +{amdgpu_gfx908_op_V_MAD_F32,"V_MAD_F32",0,&operandTable[0]} ,//449 +{amdgpu_gfx908_op_V_MAD_I32_I24,"V_MAD_I32_I24",0,&operandTable[0]} ,//450 +{amdgpu_gfx908_op_V_MAD_U32_U24,"V_MAD_U32_U24",0,&operandTable[0]} ,//451 +{amdgpu_gfx908_op_V_CUBEID_F32,"V_CUBEID_F32",0,&operandTable[0]} ,//452 +{amdgpu_gfx908_op_V_CUBESC_F32,"V_CUBESC_F32",0,&operandTable[0]} ,//453 +{amdgpu_gfx908_op_V_CUBETC_F32,"V_CUBETC_F32",0,&operandTable[0]} ,//454 +{amdgpu_gfx908_op_V_CUBEMA_F32,"V_CUBEMA_F32",0,&operandTable[0]} ,//455 +{amdgpu_gfx908_op_V_BFE_U32,"V_BFE_U32",0,&operandTable[0]} ,//456 +{amdgpu_gfx908_op_V_BFE_I32,"V_BFE_I32",0,&operandTable[0]} ,//457 +{amdgpu_gfx908_op_V_BFI_B32,"V_BFI_B32",0,&operandTable[0]} ,//458 +{amdgpu_gfx908_op_V_FMA_F32,"V_FMA_F32",0,&operandTable[0]} ,//459 +{amdgpu_gfx908_op_V_FMA_F64,"V_FMA_F64",0,&operandTable[0]} ,//460 +{amdgpu_gfx908_op_V_LERP_U8,"V_LERP_U8",0,&operandTable[0]} ,//461 +{amdgpu_gfx908_op_V_ALIGNBIT_B32,"V_ALIGNBIT_B32",0,&operandTable[0]} ,//462 +{amdgpu_gfx908_op_V_ALIGNBYTE_B32,"V_ALIGNBYTE_B32",0,&operandTable[0]} ,//463 +{amdgpu_gfx908_op_V_MIN3_F32,"V_MIN3_F32",0,&operandTable[0]} ,//464 +{amdgpu_gfx908_op_V_MIN3_I32,"V_MIN3_I32",0,&operandTable[0]} ,//465 +{amdgpu_gfx908_op_V_MIN3_U32,"V_MIN3_U32",0,&operandTable[0]} ,//466 +{amdgpu_gfx908_op_V_MAX3_F32,"V_MAX3_F32",0,&operandTable[0]} ,//467 +{amdgpu_gfx908_op_V_MAX3_I32,"V_MAX3_I32",0,&operandTable[0]} ,//468 +{amdgpu_gfx908_op_V_MAX3_U32,"V_MAX3_U32",0,&operandTable[0]} ,//469 +{amdgpu_gfx908_op_V_MED3_F32,"V_MED3_F32",0,&operandTable[0]} ,//470 +{amdgpu_gfx908_op_V_MED3_I32,"V_MED3_I32",0,&operandTable[0]} ,//471 +{amdgpu_gfx908_op_V_MED3_U32,"V_MED3_U32",0,&operandTable[0]} ,//472 +{amdgpu_gfx908_op_V_SAD_U8,"V_SAD_U8",0,&operandTable[0]} ,//473 +{amdgpu_gfx908_op_V_SAD_HI_U8,"V_SAD_HI_U8",0,&operandTable[0]} ,//474 +{amdgpu_gfx908_op_V_SAD_U16,"V_SAD_U16",0,&operandTable[0]} ,//475 +{amdgpu_gfx908_op_V_SAD_U32,"V_SAD_U32",0,&operandTable[0]} ,//476 +{amdgpu_gfx908_op_V_CVT_PK_U8_F32,"V_CVT_PK_U8_F32",0,&operandTable[0]} ,//477 +{amdgpu_gfx908_op_V_DIV_FIXUP_F32,"V_DIV_FIXUP_F32",0,&operandTable[0]} ,//478 +{amdgpu_gfx908_op_V_DIV_FIXUP_F64,"V_DIV_FIXUP_F64",0,&operandTable[0]} ,//479 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//480 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//481 +{amdgpu_gfx908_op_V_DIV_FMAS_F32,"V_DIV_FMAS_F32",0,&operandTable[0]} ,//482 +{amdgpu_gfx908_op_V_DIV_FMAS_F64,"V_DIV_FMAS_F64",0,&operandTable[0]} ,//483 +{amdgpu_gfx908_op_V_MSAD_U8,"V_MSAD_U8",0,&operandTable[0]} ,//484 +{amdgpu_gfx908_op_V_QSAD_PK_U16_U8,"V_QSAD_PK_U16_U8",0,&operandTable[0]} ,//485 +{amdgpu_gfx908_op_V_MQSAD_PK_U16_U8,"V_MQSAD_PK_U16_U8",0,&operandTable[0]} ,//486 +{amdgpu_gfx908_op_V_MQSAD_U32_U8,"V_MQSAD_U32_U8",0,&operandTable[0]} ,//487 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//488 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//489 +{amdgpu_gfx908_op_V_MAD_LEGACY_F16,"V_MAD_LEGACY_F16",0,&operandTable[0]} ,//490 +{amdgpu_gfx908_op_V_MAD_LEGACY_U16,"V_MAD_LEGACY_U16",0,&operandTable[0]} ,//491 +{amdgpu_gfx908_op_V_MAD_LEGACY_I16,"V_MAD_LEGACY_I16",0,&operandTable[0]} ,//492 +{amdgpu_gfx908_op_V_PERM_B32,"V_PERM_B32",0,&operandTable[0]} ,//493 +{amdgpu_gfx908_op_V_FMA_LEGACY_F16,"V_FMA_LEGACY_F16",0,&operandTable[0]} ,//494 +{amdgpu_gfx908_op_V_DIV_FIXUP_LEGACY_F16,"V_DIV_FIXUP_LEGACY_F16",0,&operandTable[0]} ,//495 +{amdgpu_gfx908_op_V_CVT_PKACCUM_U8_F32,"V_CVT_PKACCUM_U8_F32",0,&operandTable[0]} ,//496 +{amdgpu_gfx908_op_V_MAD_U32_U16,"V_MAD_U32_U16",0,&operandTable[0]} ,//497 +{amdgpu_gfx908_op_V_MAD_I32_I16,"V_MAD_I32_I16",0,&operandTable[0]} ,//498 +{amdgpu_gfx908_op_V_XAD_U32,"V_XAD_U32",0,&operandTable[0]} ,//499 +{amdgpu_gfx908_op_V_MIN3_F16,"V_MIN3_F16",0,&operandTable[0]} ,//500 +{amdgpu_gfx908_op_V_MIN3_I16,"V_MIN3_I16",0,&operandTable[0]} ,//501 +{amdgpu_gfx908_op_V_MIN3_U16,"V_MIN3_U16",0,&operandTable[0]} ,//502 +{amdgpu_gfx908_op_V_MAX3_F16,"V_MAX3_F16",0,&operandTable[0]} ,//503 +{amdgpu_gfx908_op_V_MAX3_I16,"V_MAX3_I16",0,&operandTable[0]} ,//504 +{amdgpu_gfx908_op_V_MAX3_U16,"V_MAX3_U16",0,&operandTable[0]} ,//505 +{amdgpu_gfx908_op_V_MED3_F16,"V_MED3_F16",0,&operandTable[0]} ,//506 +{amdgpu_gfx908_op_V_MED3_I16,"V_MED3_I16",0,&operandTable[0]} ,//507 +{amdgpu_gfx908_op_V_MED3_U16,"V_MED3_U16",0,&operandTable[0]} ,//508 +{amdgpu_gfx908_op_V_LSHL_ADD_U32,"V_LSHL_ADD_U32",0,&operandTable[0]} ,//509 +{amdgpu_gfx908_op_V_ADD_LSHL_U32,"V_ADD_LSHL_U32",0,&operandTable[0]} ,//510 +{amdgpu_gfx908_op_V_ADD3_U32,"V_ADD3_U32",0,&operandTable[0]} ,//511 +{amdgpu_gfx908_op_V_LSHL_OR_B32,"V_LSHL_OR_B32",0,&operandTable[0]} ,//512 +{amdgpu_gfx908_op_V_AND_OR_B32,"V_AND_OR_B32",0,&operandTable[0]} ,//513 +{amdgpu_gfx908_op_V_OR3_B32,"V_OR3_B32",0,&operandTable[0]} ,//514 +{amdgpu_gfx908_op_V_MAD_F16,"V_MAD_F16",0,&operandTable[0]} ,//515 +{amdgpu_gfx908_op_V_MAD_U16,"V_MAD_U16",0,&operandTable[0]} ,//516 +{amdgpu_gfx908_op_V_MAD_I16,"V_MAD_I16",0,&operandTable[0]} ,//517 +{amdgpu_gfx908_op_V_FMA_F16,"V_FMA_F16",0,&operandTable[0]} ,//518 +{amdgpu_gfx908_op_V_DIV_FIXUP_F16,"V_DIV_FIXUP_F16",0,&operandTable[0]} ,//519 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//520 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//521 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//522 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//523 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//524 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//525 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//526 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//527 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//528 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//529 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//530 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//531 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//532 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//533 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//534 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//535 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//536 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//537 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//538 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//539 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//540 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//541 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//542 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//543 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//544 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//545 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//546 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//547 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//548 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//549 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//550 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//551 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//552 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//553 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//554 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//555 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//556 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//557 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//558 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//559 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//560 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//561 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//562 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//563 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//564 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//565 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//566 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//567 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//568 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//569 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//570 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//571 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//572 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//573 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//574 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//575 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//576 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//577 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//578 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//579 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//580 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//581 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//582 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//583 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//584 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//585 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//586 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//587 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//588 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//589 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//590 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//591 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//592 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//593 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//594 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//595 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//596 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//597 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//598 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//599 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//600 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//601 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//602 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//603 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//604 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//605 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//606 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//607 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//608 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//609 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//610 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//611 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//612 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//613 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//614 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//615 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//616 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//617 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//618 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//619 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//620 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//621 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//622 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//623 +{amdgpu_gfx908_op_V_INTERP_P1_F32,"V_INTERP_P1_F32",0,&operandTable[0]} ,//624 +{amdgpu_gfx908_op_V_INTERP_P2_F32,"V_INTERP_P2_F32",0,&operandTable[0]} ,//625 +{amdgpu_gfx908_op_V_INTERP_MOV_F32,"V_INTERP_MOV_F32",0,&operandTable[0]} ,//626 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//627 +{amdgpu_gfx908_op_V_INTERP_P1LL_F16,"V_INTERP_P1LL_F16",0,&operandTable[0]} ,//628 +{amdgpu_gfx908_op_V_INTERP_P1LV_F16,"V_INTERP_P1LV_F16",0,&operandTable[0]} ,//629 +{amdgpu_gfx908_op_V_INTERP_P2_LEGACY_F16,"V_INTERP_P2_LEGACY_F16",0,&operandTable[0]} ,//630 +{amdgpu_gfx908_op_V_INTERP_P2_F16,"V_INTERP_P2_F16",0,&operandTable[0]} ,//631 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//632 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//633 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//634 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//635 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//636 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//637 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//638 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//639 +{amdgpu_gfx908_op_V_ADD_F64,"V_ADD_F64",0,&operandTable[0]} ,//640 +{amdgpu_gfx908_op_V_MUL_F64,"V_MUL_F64",0,&operandTable[0]} ,//641 +{amdgpu_gfx908_op_V_MIN_F64,"V_MIN_F64",0,&operandTable[0]} ,//642 +{amdgpu_gfx908_op_V_MAX_F64,"V_MAX_F64",0,&operandTable[0]} ,//643 +{amdgpu_gfx908_op_V_LDEXP_F64,"V_LDEXP_F64",0,&operandTable[0]} ,//644 +{amdgpu_gfx908_op_V_MUL_LO_U32,"V_MUL_LO_U32",0,&operandTable[0]} ,//645 +{amdgpu_gfx908_op_V_MUL_HI_U32,"V_MUL_HI_U32",0,&operandTable[0]} ,//646 +{amdgpu_gfx908_op_V_MUL_HI_I32,"V_MUL_HI_I32",0,&operandTable[0]} ,//647 +{amdgpu_gfx908_op_V_LDEXP_F32,"V_LDEXP_F32",0,&operandTable[0]} ,//648 +{amdgpu_gfx908_op_V_READLANE_B32,"V_READLANE_B32",0,&operandTable[0]} ,//649 +{amdgpu_gfx908_op_V_WRITELANE_B32,"V_WRITELANE_B32",0,&operandTable[0]} ,//650 +{amdgpu_gfx908_op_V_BCNT_U32_B32,"V_BCNT_U32_B32",0,&operandTable[0]} ,//651 +{amdgpu_gfx908_op_V_MBCNT_LO_U32_B32,"V_MBCNT_LO_U32_B32",0,&operandTable[0]} ,//652 +{amdgpu_gfx908_op_V_MBCNT_HI_U32_B32,"V_MBCNT_HI_U32_B32",0,&operandTable[0]} ,//653 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//654 +{amdgpu_gfx908_op_V_LSHLREV_B64,"V_LSHLREV_B64",0,&operandTable[0]} ,//655 +{amdgpu_gfx908_op_V_LSHRREV_B64,"V_LSHRREV_B64",0,&operandTable[0]} ,//656 +{amdgpu_gfx908_op_V_ASHRREV_I64,"V_ASHRREV_I64",0,&operandTable[0]} ,//657 +{amdgpu_gfx908_op_V_TRIG_PREOP_F64,"V_TRIG_PREOP_F64",0,&operandTable[0]} ,//658 +{amdgpu_gfx908_op_V_BFM_B32,"V_BFM_B32",0,&operandTable[0]} ,//659 +{amdgpu_gfx908_op_V_CVT_PKNORM_I16_F32,"V_CVT_PKNORM_I16_F32",0,&operandTable[0]} ,//660 +{amdgpu_gfx908_op_V_CVT_PKNORM_U16_F32,"V_CVT_PKNORM_U16_F32",0,&operandTable[0]} ,//661 +{amdgpu_gfx908_op_V_CVT_PKRTZ_F16_F32,"V_CVT_PKRTZ_F16_F32",0,&operandTable[0]} ,//662 +{amdgpu_gfx908_op_V_CVT_PK_U16_U32,"V_CVT_PK_U16_U32",0,&operandTable[0]} ,//663 +{amdgpu_gfx908_op_V_CVT_PK_I16_I32,"V_CVT_PK_I16_I32",0,&operandTable[0]} ,//664 +{amdgpu_gfx908_op_V_CVT_PKNORM_I16_F16,"V_CVT_PKNORM_I16_F16",0,&operandTable[0]} ,//665 +{amdgpu_gfx908_op_V_CVT_PKNORM_U16_F16,"V_CVT_PKNORM_U16_F16",0,&operandTable[0]} ,//666 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//667 +{amdgpu_gfx908_op_V_ADD_I32,"V_ADD_I32",0,&operandTable[0]} ,//668 +{amdgpu_gfx908_op_V_SUB_I32,"V_SUB_I32",0,&operandTable[0]} ,//669 +{amdgpu_gfx908_op_V_ADD_I16,"V_ADD_I16",0,&operandTable[0]} ,//670 +{amdgpu_gfx908_op_V_SUB_I16,"V_SUB_I16",0,&operandTable[0]} ,//671 +{amdgpu_gfx908_op_V_PACK_B32_F16,"V_PACK_B32_F16",0,&operandTable[0]} ,//672 +}; // end ENC_VOP3_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP1_insn_table = { +{amdgpu_gfx908_op_V_NOP,"V_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_V_MOV_B32,"V_MOV_B32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_V_READFIRSTLANE_B32,"V_READFIRSTLANE_B32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_V_CVT_I32_F64,"V_CVT_I32_F64",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_V_CVT_F64_I32,"V_CVT_F64_I32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_V_CVT_F32_I32,"V_CVT_F32_I32",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_V_CVT_F32_U32,"V_CVT_F32_U32",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_V_CVT_U32_F32,"V_CVT_U32_F32",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_V_CVT_I32_F32,"V_CVT_I32_F32",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_V_CVT_F16_F32,"V_CVT_F16_F32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_V_CVT_F32_F16,"V_CVT_F32_F16",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_V_CVT_RPI_I32_F32,"V_CVT_RPI_I32_F32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_V_CVT_FLR_I32_F32,"V_CVT_FLR_I32_F32",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_V_CVT_OFF_F32_I4,"V_CVT_OFF_F32_I4",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_V_CVT_F32_F64,"V_CVT_F32_F64",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_V_CVT_F64_F32,"V_CVT_F64_F32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE0,"V_CVT_F32_UBYTE0",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE1,"V_CVT_F32_UBYTE1",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE2,"V_CVT_F32_UBYTE2",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_V_CVT_F32_UBYTE3,"V_CVT_F32_UBYTE3",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_V_CVT_U32_F64,"V_CVT_U32_F64",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_V_CVT_F64_U32,"V_CVT_F64_U32",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_V_TRUNC_F64,"V_TRUNC_F64",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_V_CEIL_F64,"V_CEIL_F64",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_V_RNDNE_F64,"V_RNDNE_F64",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_V_FLOOR_F64,"V_FLOOR_F64",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_V_FRACT_F32,"V_FRACT_F32",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_V_TRUNC_F32,"V_TRUNC_F32",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_V_CEIL_F32,"V_CEIL_F32",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_V_RNDNE_F32,"V_RNDNE_F32",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_V_FLOOR_F32,"V_FLOOR_F32",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_V_EXP_F32,"V_EXP_F32",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_V_LOG_F32,"V_LOG_F32",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_V_RCP_F32,"V_RCP_F32",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_V_RCP_IFLAG_F32,"V_RCP_IFLAG_F32",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_V_RSQ_F32,"V_RSQ_F32",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_V_RCP_F64,"V_RCP_F64",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_V_RSQ_F64,"V_RSQ_F64",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_V_SQRT_F32,"V_SQRT_F32",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_V_SQRT_F64,"V_SQRT_F64",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_V_SIN_F32,"V_SIN_F32",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_V_COS_F32,"V_COS_F32",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_V_NOT_B32,"V_NOT_B32",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_V_BFREV_B32,"V_BFREV_B32",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_V_FFBH_U32,"V_FFBH_U32",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_V_FFBL_B32,"V_FFBL_B32",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_V_FFBH_I32,"V_FFBH_I32",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_V_FREXP_EXP_I32_F64,"V_FREXP_EXP_I32_F64",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_V_FREXP_MANT_F64,"V_FREXP_MANT_F64",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_V_FRACT_F64,"V_FRACT_F64",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_V_FREXP_EXP_I32_F32,"V_FREXP_EXP_I32_F32",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_V_FREXP_MANT_F32,"V_FREXP_MANT_F32",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_V_CLREXCP,"V_CLREXCP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_V_SCREEN_PARTITION_4SE_B32,"V_SCREEN_PARTITION_4SE_B32",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_V_CVT_F16_U16,"V_CVT_F16_U16",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_V_CVT_F16_I16,"V_CVT_F16_I16",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_V_CVT_U16_F16,"V_CVT_U16_F16",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_V_CVT_I16_F16,"V_CVT_I16_F16",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_V_RCP_F16,"V_RCP_F16",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_V_SQRT_F16,"V_SQRT_F16",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_V_RSQ_F16,"V_RSQ_F16",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_V_LOG_F16,"V_LOG_F16",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_V_EXP_F16,"V_EXP_F16",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_V_FREXP_MANT_F16,"V_FREXP_MANT_F16",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_V_FREXP_EXP_I16_F16,"V_FREXP_EXP_I16_F16",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_V_FLOOR_F16,"V_FLOOR_F16",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_V_CEIL_F16,"V_CEIL_F16",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_V_TRUNC_F16,"V_TRUNC_F16",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_V_RNDNE_F16,"V_RNDNE_F16",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_V_FRACT_F16,"V_FRACT_F16",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_V_SIN_F16,"V_SIN_F16",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_V_COS_F16,"V_COS_F16",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_V_EXP_LEGACY_F32,"V_EXP_LEGACY_F32",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_V_LOG_LEGACY_F32,"V_LOG_LEGACY_F32",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_V_CVT_NORM_I16_F16,"V_CVT_NORM_I16_F16",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_V_CVT_NORM_U16_F16,"V_CVT_NORM_U16_F16",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_V_SAT_PK_U8_I16,"V_SAT_PK_U8_I16",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_V_SWAP_B32,"V_SWAP_B32",0,&operandTable[0]} ,//81 +}; // end ENC_VOP1_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP2_insn_table = { +{amdgpu_gfx908_op_V_CNDMASK_B32,"V_CNDMASK_B32",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_V_ADD_F32,"V_ADD_F32",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_V_SUB_F32,"V_SUB_F32",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_V_SUBREV_F32,"V_SUBREV_F32",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_V_MUL_LEGACY_F32,"V_MUL_LEGACY_F32",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_V_MUL_F32,"V_MUL_F32",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_V_MUL_I32_I24,"V_MUL_I32_I24",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_V_MUL_HI_I32_I24,"V_MUL_HI_I32_I24",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_V_MUL_U32_U24,"V_MUL_U32_U24",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_V_MUL_HI_U32_U24,"V_MUL_HI_U32_U24",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_V_MIN_F32,"V_MIN_F32",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_V_MAX_F32,"V_MAX_F32",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_V_MIN_I32,"V_MIN_I32",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_V_MAX_I32,"V_MAX_I32",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_V_MIN_U32,"V_MIN_U32",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_V_MAX_U32,"V_MAX_U32",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_V_LSHRREV_B32,"V_LSHRREV_B32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_V_ASHRREV_I32,"V_ASHRREV_I32",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_V_LSHLREV_B32,"V_LSHLREV_B32",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_V_AND_B32,"V_AND_B32",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_V_OR_B32,"V_OR_B32",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_V_XOR_B32,"V_XOR_B32",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_V_MAC_F32,"V_MAC_F32",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_V_ADD_CO_U32,"V_ADD_CO_U32",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_V_SUB_CO_U32,"V_SUB_CO_U32",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_V_SUBREV_CO_U32,"V_SUBREV_CO_U32",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_V_ADDC_CO_U32,"V_ADDC_CO_U32",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_V_SUBB_CO_U32,"V_SUBB_CO_U32",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_V_SUBBREV_CO_U32,"V_SUBBREV_CO_U32",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_V_ADD_F16,"V_ADD_F16",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_V_SUB_F16,"V_SUB_F16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_V_SUBREV_F16,"V_SUBREV_F16",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_V_MUL_F16,"V_MUL_F16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_V_MAC_F16,"V_MAC_F16",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_V_ADD_U16,"V_ADD_U16",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_V_SUB_U16,"V_SUB_U16",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_V_SUBREV_U16,"V_SUBREV_U16",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_V_MUL_LO_U16,"V_MUL_LO_U16",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_V_LSHLREV_B16,"V_LSHLREV_B16",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_V_LSHRREV_B16,"V_LSHRREV_B16",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_V_ASHRREV_I16,"V_ASHRREV_I16",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_V_MAX_F16,"V_MAX_F16",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_V_MIN_F16,"V_MIN_F16",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_V_MAX_U16,"V_MAX_U16",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_V_MAX_I16,"V_MAX_I16",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_V_MIN_U16,"V_MIN_U16",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_V_MIN_I16,"V_MIN_I16",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_V_LDEXP_F16,"V_LDEXP_F16",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_V_ADD_U32,"V_ADD_U32",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_V_SUB_U32,"V_SUB_U32",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_V_SUBREV_U32,"V_SUBREV_U32",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_V_DOT2C_F32_F16,"V_DOT2C_F32_F16",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_V_DOT2C_I32_I16,"V_DOT2C_I32_I16",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_V_DOT4C_I32_I8,"V_DOT4C_I32_I8",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_V_DOT8C_I32_I4,"V_DOT8C_I32_I4",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_V_FMAC_F32,"V_FMAC_F32",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_V_PK_FMAC_F16,"V_PK_FMAC_F16",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_V_XNOR_B32,"V_XNOR_B32",0,&operandTable[0]} ,//61 +}; // end ENC_VOP2_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP2_LITERAL_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_V_MADMK_F32,"V_MADMK_F32",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_V_MADAK_F32,"V_MADAK_F32",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_V_MADMK_F16,"V_MADMK_F16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_V_MADAK_F16,"V_MADAK_F16",0,&operandTable[0]} ,//37 +}; // end ENC_VOP2_LITERAL_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP3B_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//109 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//110 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//111 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//112 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//113 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//114 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//115 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//116 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//117 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//118 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//119 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//120 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//121 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//122 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//123 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//124 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//125 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//126 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//127 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//160 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//161 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//162 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//163 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//164 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//165 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//166 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//167 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//168 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//169 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//170 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//171 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//172 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//173 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//174 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//175 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//176 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//177 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//178 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//179 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//180 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//181 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//182 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//183 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//184 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//185 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//186 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//187 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//188 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//189 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//190 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//191 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//192 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//193 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//194 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//195 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//196 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//197 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//198 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//199 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//200 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//201 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//202 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//203 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//204 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//205 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//206 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//207 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//208 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//209 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//210 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//211 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//212 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//213 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//214 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//215 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//216 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//217 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//218 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//219 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//220 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//221 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//222 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//223 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//224 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//225 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//226 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//227 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//228 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//229 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//230 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//231 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//232 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//233 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//234 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//235 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//236 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//237 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//238 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//239 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//240 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//241 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//242 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//243 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//244 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//245 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//246 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//247 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//248 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//249 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//250 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//251 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//252 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//253 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//254 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//255 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//256 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//257 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//258 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//259 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//260 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//261 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//262 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//263 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//264 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//265 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//266 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//267 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//268 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//269 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//270 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//271 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//272 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//273 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//274 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//275 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//276 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//277 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//278 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//279 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//280 +{amdgpu_gfx908_op_V_ADD_CO_U32,"V_ADD_CO_U32",0,&operandTable[0]} ,//281 +{amdgpu_gfx908_op_V_SUB_CO_U32,"V_SUB_CO_U32",0,&operandTable[0]} ,//282 +{amdgpu_gfx908_op_V_SUBREV_CO_U32,"V_SUBREV_CO_U32",0,&operandTable[0]} ,//283 +{amdgpu_gfx908_op_V_ADDC_CO_U32,"V_ADDC_CO_U32",0,&operandTable[0]} ,//284 +{amdgpu_gfx908_op_V_SUBB_CO_U32,"V_SUBB_CO_U32",0,&operandTable[0]} ,//285 +{amdgpu_gfx908_op_V_SUBBREV_CO_U32,"V_SUBBREV_CO_U32",0,&operandTable[0]} ,//286 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//287 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//288 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//289 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//290 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//291 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//292 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//293 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//294 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//295 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//296 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//297 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//298 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//299 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//300 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//301 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//302 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//303 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//304 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//305 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//306 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//307 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//308 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//309 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//310 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//311 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//312 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//313 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//314 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//315 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//316 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//317 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//318 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//319 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//320 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//321 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//322 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//323 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//324 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//325 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//326 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//327 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//328 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//329 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//330 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//331 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//332 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//333 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//334 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//335 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//336 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//337 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//338 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//339 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//340 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//341 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//342 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//343 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//344 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//345 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//346 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//347 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//348 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//349 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//350 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//351 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//352 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//353 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//354 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//355 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//356 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//357 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//358 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//359 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//360 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//361 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//362 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//363 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//364 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//365 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//366 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//367 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//368 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//369 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//370 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//371 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//372 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//373 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//374 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//375 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//376 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//377 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//378 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//379 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//380 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//381 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//382 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//383 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//384 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//385 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//386 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//387 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//388 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//389 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//390 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//391 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//392 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//393 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//394 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//395 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//396 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//397 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//398 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//399 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//400 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//401 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//402 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//403 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//404 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//405 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//406 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//407 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//408 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//409 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//410 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//411 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//412 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//413 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//414 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//415 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//416 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//417 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//418 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//419 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//420 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//421 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//422 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//423 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//424 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//425 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//426 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//427 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//428 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//429 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//430 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//431 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//432 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//433 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//434 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//435 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//436 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//437 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//438 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//439 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//440 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//441 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//442 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//443 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//444 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//445 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//446 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//447 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//448 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//449 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//450 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//451 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//452 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//453 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//454 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//455 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//456 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//457 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//458 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//459 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//460 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//461 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//462 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//463 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//464 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//465 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//466 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//467 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//468 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//469 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//470 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//471 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//472 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//473 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//474 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//475 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//476 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//477 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//478 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//479 +{amdgpu_gfx908_op_V_DIV_SCALE_F32,"V_DIV_SCALE_F32",0,&operandTable[0]} ,//480 +{amdgpu_gfx908_op_V_DIV_SCALE_F64,"V_DIV_SCALE_F64",0,&operandTable[0]} ,//481 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//482 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//483 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//484 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//485 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//486 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//487 +{amdgpu_gfx908_op_V_MAD_U64_U32,"V_MAD_U64_U32",0,&operandTable[0]} ,//488 +{amdgpu_gfx908_op_V_MAD_I64_I32,"V_MAD_I64_I32",0,&operandTable[0]} ,//489 +}; // end ENC_VOP3B_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP3P_insn_table = { +{amdgpu_gfx908_op_V_PK_MAD_I16,"V_PK_MAD_I16",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_V_PK_MUL_LO_U16,"V_PK_MUL_LO_U16",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_V_PK_ADD_I16,"V_PK_ADD_I16",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_V_PK_SUB_I16,"V_PK_SUB_I16",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_V_PK_LSHLREV_B16,"V_PK_LSHLREV_B16",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_V_PK_LSHRREV_B16,"V_PK_LSHRREV_B16",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_V_PK_ASHRREV_I16,"V_PK_ASHRREV_I16",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_V_PK_MAX_I16,"V_PK_MAX_I16",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_V_PK_MIN_I16,"V_PK_MIN_I16",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_V_PK_MAD_U16,"V_PK_MAD_U16",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_V_PK_ADD_U16,"V_PK_ADD_U16",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_V_PK_SUB_U16,"V_PK_SUB_U16",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_V_PK_MAX_U16,"V_PK_MAX_U16",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_V_PK_MIN_U16,"V_PK_MIN_U16",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_V_PK_FMA_F16,"V_PK_FMA_F16",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_V_PK_ADD_F16,"V_PK_ADD_F16",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_V_PK_MUL_F16,"V_PK_MUL_F16",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_V_PK_MIN_F16,"V_PK_MIN_F16",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_V_PK_MAX_F16,"V_PK_MAX_F16",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_V_MAD_MIX_F32,"V_MAD_MIX_F32",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_V_MAD_MIXLO_F16,"V_MAD_MIXLO_F16",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_V_MAD_MIXHI_F16,"V_MAD_MIXHI_F16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_V_DOT2_F32_F16,"V_DOT2_F32_F16",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_V_DOT2_I32_I16,"V_DOT2_I32_I16",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_V_DOT2_U32_U16,"V_DOT2_U32_U16",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_V_DOT4_I32_I8,"V_DOT4_I32_I8",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_V_DOT4_U32_U8,"V_DOT4_U32_U8",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_V_DOT8_I32_I4,"V_DOT8_I32_I4",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_V_DOT8_U32_U4,"V_DOT8_U32_U4",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_V_ACCVGPR_READ,"V_ACCVGPR_READ",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_V_ACCVGPR_WRITE,"V_ACCVGPR_WRITE",0,&operandTable[0]} ,//89 +}; // end ENC_VOP3P_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOP3P_MFMA_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_V_MFMA_F32_32X32X1F32,"V_MFMA_F32_32X32X1F32",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_V_MFMA_F32_16X16X1F32,"V_MFMA_F32_16X16X1F32",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_V_MFMA_F32_4X4X1F32,"V_MFMA_F32_4X4X1F32",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_V_MFMA_F32_32X32X2F32,"V_MFMA_F32_32X32X2F32",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_V_MFMA_F32_16X16X4F32,"V_MFMA_F32_16X16X4F32",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_V_MFMA_F32_32X32X4F16,"V_MFMA_F32_32X32X4F16",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_V_MFMA_F32_16X16X4F16,"V_MFMA_F32_16X16X4F16",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_V_MFMA_F32_4X4X4F16,"V_MFMA_F32_4X4X4F16",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_V_MFMA_F32_32X32X8F16,"V_MFMA_F32_32X32X8F16",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_V_MFMA_F32_16X16X16F16,"V_MFMA_F32_16X16X16F16",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_V_MFMA_I32_32X32X4I8,"V_MFMA_I32_32X32X4I8",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_V_MFMA_I32_16X16X4I8,"V_MFMA_I32_16X16X4I8",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_V_MFMA_I32_4X4X4I8,"V_MFMA_I32_4X4X4I8",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_V_MFMA_I32_32X32X8I8,"V_MFMA_I32_32X32X8I8",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_V_MFMA_I32_16X16X16I8,"V_MFMA_I32_16X16X16I8",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_V_MFMA_F32_32X32X2BF16,"V_MFMA_F32_32X32X2BF16",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_V_MFMA_F32_16X16X2BF16,"V_MFMA_F32_16X16X2BF16",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_V_MFMA_F32_4X4X2BF16,"V_MFMA_F32_4X4X2BF16",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_V_MFMA_F32_32X32X4BF16,"V_MFMA_F32_32X32X4BF16",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_V_MFMA_F32_16X16X8BF16,"V_MFMA_F32_16X16X8BF16",0,&operandTable[0]} ,//109 +}; // end ENC_VOP3P_MFMA_insn_table +const amdgpu_gfx908_insn_table amdgpu_gfx908_insn_entry::ENC_VOPC_insn_table = { +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//0 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//1 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//2 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//3 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//4 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//5 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//6 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//7 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//8 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//9 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//10 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//11 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//12 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//13 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//14 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//15 +{amdgpu_gfx908_op_V_CMP_CLASS_F32,"V_CMP_CLASS_F32",0,&operandTable[0]} ,//16 +{amdgpu_gfx908_op_V_CMPX_CLASS_F32,"V_CMPX_CLASS_F32",0,&operandTable[0]} ,//17 +{amdgpu_gfx908_op_V_CMP_CLASS_F64,"V_CMP_CLASS_F64",0,&operandTable[0]} ,//18 +{amdgpu_gfx908_op_V_CMPX_CLASS_F64,"V_CMPX_CLASS_F64",0,&operandTable[0]} ,//19 +{amdgpu_gfx908_op_V_CMP_CLASS_F16,"V_CMP_CLASS_F16",0,&operandTable[0]} ,//20 +{amdgpu_gfx908_op_V_CMPX_CLASS_F16,"V_CMPX_CLASS_F16",0,&operandTable[0]} ,//21 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//22 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//23 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//24 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//25 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//26 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//27 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//28 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//29 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//30 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//31 +{amdgpu_gfx908_op_V_CMP_F_F16,"V_CMP_F_F16",0,&operandTable[0]} ,//32 +{amdgpu_gfx908_op_V_CMP_LT_F16,"V_CMP_LT_F16",0,&operandTable[0]} ,//33 +{amdgpu_gfx908_op_V_CMP_EQ_F16,"V_CMP_EQ_F16",0,&operandTable[0]} ,//34 +{amdgpu_gfx908_op_V_CMP_LE_F16,"V_CMP_LE_F16",0,&operandTable[0]} ,//35 +{amdgpu_gfx908_op_V_CMP_GT_F16,"V_CMP_GT_F16",0,&operandTable[0]} ,//36 +{amdgpu_gfx908_op_V_CMP_LG_F16,"V_CMP_LG_F16",0,&operandTable[0]} ,//37 +{amdgpu_gfx908_op_V_CMP_GE_F16,"V_CMP_GE_F16",0,&operandTable[0]} ,//38 +{amdgpu_gfx908_op_V_CMP_O_F16,"V_CMP_O_F16",0,&operandTable[0]} ,//39 +{amdgpu_gfx908_op_V_CMP_U_F16,"V_CMP_U_F16",0,&operandTable[0]} ,//40 +{amdgpu_gfx908_op_V_CMP_NGE_F16,"V_CMP_NGE_F16",0,&operandTable[0]} ,//41 +{amdgpu_gfx908_op_V_CMP_NLG_F16,"V_CMP_NLG_F16",0,&operandTable[0]} ,//42 +{amdgpu_gfx908_op_V_CMP_NGT_F16,"V_CMP_NGT_F16",0,&operandTable[0]} ,//43 +{amdgpu_gfx908_op_V_CMP_NLE_F16,"V_CMP_NLE_F16",0,&operandTable[0]} ,//44 +{amdgpu_gfx908_op_V_CMP_NEQ_F16,"V_CMP_NEQ_F16",0,&operandTable[0]} ,//45 +{amdgpu_gfx908_op_V_CMP_NLT_F16,"V_CMP_NLT_F16",0,&operandTable[0]} ,//46 +{amdgpu_gfx908_op_V_CMP_TRU_F16,"V_CMP_TRU_F16",0,&operandTable[0]} ,//47 +{amdgpu_gfx908_op_V_CMPX_F_F16,"V_CMPX_F_F16",0,&operandTable[0]} ,//48 +{amdgpu_gfx908_op_V_CMPX_LT_F16,"V_CMPX_LT_F16",0,&operandTable[0]} ,//49 +{amdgpu_gfx908_op_V_CMPX_EQ_F16,"V_CMPX_EQ_F16",0,&operandTable[0]} ,//50 +{amdgpu_gfx908_op_V_CMPX_LE_F16,"V_CMPX_LE_F16",0,&operandTable[0]} ,//51 +{amdgpu_gfx908_op_V_CMPX_GT_F16,"V_CMPX_GT_F16",0,&operandTable[0]} ,//52 +{amdgpu_gfx908_op_V_CMPX_LG_F16,"V_CMPX_LG_F16",0,&operandTable[0]} ,//53 +{amdgpu_gfx908_op_V_CMPX_GE_F16,"V_CMPX_GE_F16",0,&operandTable[0]} ,//54 +{amdgpu_gfx908_op_V_CMPX_O_F16,"V_CMPX_O_F16",0,&operandTable[0]} ,//55 +{amdgpu_gfx908_op_V_CMPX_U_F16,"V_CMPX_U_F16",0,&operandTable[0]} ,//56 +{amdgpu_gfx908_op_V_CMPX_NGE_F16,"V_CMPX_NGE_F16",0,&operandTable[0]} ,//57 +{amdgpu_gfx908_op_V_CMPX_NLG_F16,"V_CMPX_NLG_F16",0,&operandTable[0]} ,//58 +{amdgpu_gfx908_op_V_CMPX_NGT_F16,"V_CMPX_NGT_F16",0,&operandTable[0]} ,//59 +{amdgpu_gfx908_op_V_CMPX_NLE_F16,"V_CMPX_NLE_F16",0,&operandTable[0]} ,//60 +{amdgpu_gfx908_op_V_CMPX_NEQ_F16,"V_CMPX_NEQ_F16",0,&operandTable[0]} ,//61 +{amdgpu_gfx908_op_V_CMPX_NLT_F16,"V_CMPX_NLT_F16",0,&operandTable[0]} ,//62 +{amdgpu_gfx908_op_V_CMPX_TRU_F16,"V_CMPX_TRU_F16",0,&operandTable[0]} ,//63 +{amdgpu_gfx908_op_V_CMP_F_F32,"V_CMP_F_F32",0,&operandTable[0]} ,//64 +{amdgpu_gfx908_op_V_CMP_LT_F32,"V_CMP_LT_F32",0,&operandTable[0]} ,//65 +{amdgpu_gfx908_op_V_CMP_EQ_F32,"V_CMP_EQ_F32",0,&operandTable[0]} ,//66 +{amdgpu_gfx908_op_V_CMP_LE_F32,"V_CMP_LE_F32",0,&operandTable[0]} ,//67 +{amdgpu_gfx908_op_V_CMP_GT_F32,"V_CMP_GT_F32",0,&operandTable[0]} ,//68 +{amdgpu_gfx908_op_V_CMP_LG_F32,"V_CMP_LG_F32",0,&operandTable[0]} ,//69 +{amdgpu_gfx908_op_V_CMP_GE_F32,"V_CMP_GE_F32",0,&operandTable[0]} ,//70 +{amdgpu_gfx908_op_V_CMP_O_F32,"V_CMP_O_F32",0,&operandTable[0]} ,//71 +{amdgpu_gfx908_op_V_CMP_U_F32,"V_CMP_U_F32",0,&operandTable[0]} ,//72 +{amdgpu_gfx908_op_V_CMP_NGE_F32,"V_CMP_NGE_F32",0,&operandTable[0]} ,//73 +{amdgpu_gfx908_op_V_CMP_NLG_F32,"V_CMP_NLG_F32",0,&operandTable[0]} ,//74 +{amdgpu_gfx908_op_V_CMP_NGT_F32,"V_CMP_NGT_F32",0,&operandTable[0]} ,//75 +{amdgpu_gfx908_op_V_CMP_NLE_F32,"V_CMP_NLE_F32",0,&operandTable[0]} ,//76 +{amdgpu_gfx908_op_V_CMP_NEQ_F32,"V_CMP_NEQ_F32",0,&operandTable[0]} ,//77 +{amdgpu_gfx908_op_V_CMP_NLT_F32,"V_CMP_NLT_F32",0,&operandTable[0]} ,//78 +{amdgpu_gfx908_op_V_CMP_TRU_F32,"V_CMP_TRU_F32",0,&operandTable[0]} ,//79 +{amdgpu_gfx908_op_V_CMPX_F_F32,"V_CMPX_F_F32",0,&operandTable[0]} ,//80 +{amdgpu_gfx908_op_V_CMPX_LT_F32,"V_CMPX_LT_F32",0,&operandTable[0]} ,//81 +{amdgpu_gfx908_op_V_CMPX_EQ_F32,"V_CMPX_EQ_F32",0,&operandTable[0]} ,//82 +{amdgpu_gfx908_op_V_CMPX_LE_F32,"V_CMPX_LE_F32",0,&operandTable[0]} ,//83 +{amdgpu_gfx908_op_V_CMPX_GT_F32,"V_CMPX_GT_F32",0,&operandTable[0]} ,//84 +{amdgpu_gfx908_op_V_CMPX_LG_F32,"V_CMPX_LG_F32",0,&operandTable[0]} ,//85 +{amdgpu_gfx908_op_V_CMPX_GE_F32,"V_CMPX_GE_F32",0,&operandTable[0]} ,//86 +{amdgpu_gfx908_op_V_CMPX_O_F32,"V_CMPX_O_F32",0,&operandTable[0]} ,//87 +{amdgpu_gfx908_op_V_CMPX_U_F32,"V_CMPX_U_F32",0,&operandTable[0]} ,//88 +{amdgpu_gfx908_op_V_CMPX_NGE_F32,"V_CMPX_NGE_F32",0,&operandTable[0]} ,//89 +{amdgpu_gfx908_op_V_CMPX_NLG_F32,"V_CMPX_NLG_F32",0,&operandTable[0]} ,//90 +{amdgpu_gfx908_op_V_CMPX_NGT_F32,"V_CMPX_NGT_F32",0,&operandTable[0]} ,//91 +{amdgpu_gfx908_op_V_CMPX_NLE_F32,"V_CMPX_NLE_F32",0,&operandTable[0]} ,//92 +{amdgpu_gfx908_op_V_CMPX_NEQ_F32,"V_CMPX_NEQ_F32",0,&operandTable[0]} ,//93 +{amdgpu_gfx908_op_V_CMPX_NLT_F32,"V_CMPX_NLT_F32",0,&operandTable[0]} ,//94 +{amdgpu_gfx908_op_V_CMPX_TRU_F32,"V_CMPX_TRU_F32",0,&operandTable[0]} ,//95 +{amdgpu_gfx908_op_V_CMP_F_F64,"V_CMP_F_F64",0,&operandTable[0]} ,//96 +{amdgpu_gfx908_op_V_CMP_LT_F64,"V_CMP_LT_F64",0,&operandTable[0]} ,//97 +{amdgpu_gfx908_op_V_CMP_EQ_F64,"V_CMP_EQ_F64",0,&operandTable[0]} ,//98 +{amdgpu_gfx908_op_V_CMP_LE_F64,"V_CMP_LE_F64",0,&operandTable[0]} ,//99 +{amdgpu_gfx908_op_V_CMP_GT_F64,"V_CMP_GT_F64",0,&operandTable[0]} ,//100 +{amdgpu_gfx908_op_V_CMP_LG_F64,"V_CMP_LG_F64",0,&operandTable[0]} ,//101 +{amdgpu_gfx908_op_V_CMP_GE_F64,"V_CMP_GE_F64",0,&operandTable[0]} ,//102 +{amdgpu_gfx908_op_V_CMP_O_F64,"V_CMP_O_F64",0,&operandTable[0]} ,//103 +{amdgpu_gfx908_op_V_CMP_U_F64,"V_CMP_U_F64",0,&operandTable[0]} ,//104 +{amdgpu_gfx908_op_V_CMP_NGE_F64,"V_CMP_NGE_F64",0,&operandTable[0]} ,//105 +{amdgpu_gfx908_op_V_CMP_NLG_F64,"V_CMP_NLG_F64",0,&operandTable[0]} ,//106 +{amdgpu_gfx908_op_V_CMP_NGT_F64,"V_CMP_NGT_F64",0,&operandTable[0]} ,//107 +{amdgpu_gfx908_op_V_CMP_NLE_F64,"V_CMP_NLE_F64",0,&operandTable[0]} ,//108 +{amdgpu_gfx908_op_V_CMP_NEQ_F64,"V_CMP_NEQ_F64",0,&operandTable[0]} ,//109 +{amdgpu_gfx908_op_V_CMP_NLT_F64,"V_CMP_NLT_F64",0,&operandTable[0]} ,//110 +{amdgpu_gfx908_op_V_CMP_TRU_F64,"V_CMP_TRU_F64",0,&operandTable[0]} ,//111 +{amdgpu_gfx908_op_V_CMPX_F_F64,"V_CMPX_F_F64",0,&operandTable[0]} ,//112 +{amdgpu_gfx908_op_V_CMPX_LT_F64,"V_CMPX_LT_F64",0,&operandTable[0]} ,//113 +{amdgpu_gfx908_op_V_CMPX_EQ_F64,"V_CMPX_EQ_F64",0,&operandTable[0]} ,//114 +{amdgpu_gfx908_op_V_CMPX_LE_F64,"V_CMPX_LE_F64",0,&operandTable[0]} ,//115 +{amdgpu_gfx908_op_V_CMPX_GT_F64,"V_CMPX_GT_F64",0,&operandTable[0]} ,//116 +{amdgpu_gfx908_op_V_CMPX_LG_F64,"V_CMPX_LG_F64",0,&operandTable[0]} ,//117 +{amdgpu_gfx908_op_V_CMPX_GE_F64,"V_CMPX_GE_F64",0,&operandTable[0]} ,//118 +{amdgpu_gfx908_op_V_CMPX_O_F64,"V_CMPX_O_F64",0,&operandTable[0]} ,//119 +{amdgpu_gfx908_op_V_CMPX_U_F64,"V_CMPX_U_F64",0,&operandTable[0]} ,//120 +{amdgpu_gfx908_op_V_CMPX_NGE_F64,"V_CMPX_NGE_F64",0,&operandTable[0]} ,//121 +{amdgpu_gfx908_op_V_CMPX_NLG_F64,"V_CMPX_NLG_F64",0,&operandTable[0]} ,//122 +{amdgpu_gfx908_op_V_CMPX_NGT_F64,"V_CMPX_NGT_F64",0,&operandTable[0]} ,//123 +{amdgpu_gfx908_op_V_CMPX_NLE_F64,"V_CMPX_NLE_F64",0,&operandTable[0]} ,//124 +{amdgpu_gfx908_op_V_CMPX_NEQ_F64,"V_CMPX_NEQ_F64",0,&operandTable[0]} ,//125 +{amdgpu_gfx908_op_V_CMPX_NLT_F64,"V_CMPX_NLT_F64",0,&operandTable[0]} ,//126 +{amdgpu_gfx908_op_V_CMPX_TRU_F64,"V_CMPX_TRU_F64",0,&operandTable[0]} ,//127 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//128 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//129 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//130 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//131 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//132 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//133 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//134 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//135 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//136 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//137 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//138 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//139 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//140 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//141 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//142 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//143 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//144 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//145 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//146 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//147 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//148 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//149 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//150 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//151 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//152 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//153 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//154 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//155 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//156 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//157 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//158 +{amdgpu_gfx908_op_S_NOP,"S_NOP",0,&operandTable[0]} ,//159 +{amdgpu_gfx908_op_V_CMP_F_I16,"V_CMP_F_I16",0,&operandTable[0]} ,//160 +{amdgpu_gfx908_op_V_CMP_LT_I16,"V_CMP_LT_I16",0,&operandTable[0]} ,//161 +{amdgpu_gfx908_op_V_CMP_EQ_I16,"V_CMP_EQ_I16",0,&operandTable[0]} ,//162 +{amdgpu_gfx908_op_V_CMP_LE_I16,"V_CMP_LE_I16",0,&operandTable[0]} ,//163 +{amdgpu_gfx908_op_V_CMP_GT_I16,"V_CMP_GT_I16",0,&operandTable[0]} ,//164 +{amdgpu_gfx908_op_V_CMP_NE_I16,"V_CMP_NE_I16",0,&operandTable[0]} ,//165 +{amdgpu_gfx908_op_V_CMP_GE_I16,"V_CMP_GE_I16",0,&operandTable[0]} ,//166 +{amdgpu_gfx908_op_V_CMP_T_I16,"V_CMP_T_I16",0,&operandTable[0]} ,//167 +{amdgpu_gfx908_op_V_CMP_F_U16,"V_CMP_F_U16",0,&operandTable[0]} ,//168 +{amdgpu_gfx908_op_V_CMP_LT_U16,"V_CMP_LT_U16",0,&operandTable[0]} ,//169 +{amdgpu_gfx908_op_V_CMP_EQ_U16,"V_CMP_EQ_U16",0,&operandTable[0]} ,//170 +{amdgpu_gfx908_op_V_CMP_LE_U16,"V_CMP_LE_U16",0,&operandTable[0]} ,//171 +{amdgpu_gfx908_op_V_CMP_GT_U16,"V_CMP_GT_U16",0,&operandTable[0]} ,//172 +{amdgpu_gfx908_op_V_CMP_NE_U16,"V_CMP_NE_U16",0,&operandTable[0]} ,//173 +{amdgpu_gfx908_op_V_CMP_GE_U16,"V_CMP_GE_U16",0,&operandTable[0]} ,//174 +{amdgpu_gfx908_op_V_CMP_T_U16,"V_CMP_T_U16",0,&operandTable[0]} ,//175 +{amdgpu_gfx908_op_V_CMPX_F_I16,"V_CMPX_F_I16",0,&operandTable[0]} ,//176 +{amdgpu_gfx908_op_V_CMPX_LT_I16,"V_CMPX_LT_I16",0,&operandTable[0]} ,//177 +{amdgpu_gfx908_op_V_CMPX_EQ_I16,"V_CMPX_EQ_I16",0,&operandTable[0]} ,//178 +{amdgpu_gfx908_op_V_CMPX_LE_I16,"V_CMPX_LE_I16",0,&operandTable[0]} ,//179 +{amdgpu_gfx908_op_V_CMPX_GT_I16,"V_CMPX_GT_I16",0,&operandTable[0]} ,//180 +{amdgpu_gfx908_op_V_CMPX_NE_I16,"V_CMPX_NE_I16",0,&operandTable[0]} ,//181 +{amdgpu_gfx908_op_V_CMPX_GE_I16,"V_CMPX_GE_I16",0,&operandTable[0]} ,//182 +{amdgpu_gfx908_op_V_CMPX_T_I16,"V_CMPX_T_I16",0,&operandTable[0]} ,//183 +{amdgpu_gfx908_op_V_CMPX_F_U16,"V_CMPX_F_U16",0,&operandTable[0]} ,//184 +{amdgpu_gfx908_op_V_CMPX_LT_U16,"V_CMPX_LT_U16",0,&operandTable[0]} ,//185 +{amdgpu_gfx908_op_V_CMPX_EQ_U16,"V_CMPX_EQ_U16",0,&operandTable[0]} ,//186 +{amdgpu_gfx908_op_V_CMPX_LE_U16,"V_CMPX_LE_U16",0,&operandTable[0]} ,//187 +{amdgpu_gfx908_op_V_CMPX_GT_U16,"V_CMPX_GT_U16",0,&operandTable[0]} ,//188 +{amdgpu_gfx908_op_V_CMPX_NE_U16,"V_CMPX_NE_U16",0,&operandTable[0]} ,//189 +{amdgpu_gfx908_op_V_CMPX_GE_U16,"V_CMPX_GE_U16",0,&operandTable[0]} ,//190 +{amdgpu_gfx908_op_V_CMPX_T_U16,"V_CMPX_T_U16",0,&operandTable[0]} ,//191 +{amdgpu_gfx908_op_V_CMP_F_I32,"V_CMP_F_I32",0,&operandTable[0]} ,//192 +{amdgpu_gfx908_op_V_CMP_LT_I32,"V_CMP_LT_I32",0,&operandTable[0]} ,//193 +{amdgpu_gfx908_op_V_CMP_EQ_I32,"V_CMP_EQ_I32",0,&operandTable[0]} ,//194 +{amdgpu_gfx908_op_V_CMP_LE_I32,"V_CMP_LE_I32",0,&operandTable[0]} ,//195 +{amdgpu_gfx908_op_V_CMP_GT_I32,"V_CMP_GT_I32",0,&operandTable[0]} ,//196 +{amdgpu_gfx908_op_V_CMP_NE_I32,"V_CMP_NE_I32",0,&operandTable[0]} ,//197 +{amdgpu_gfx908_op_V_CMP_GE_I32,"V_CMP_GE_I32",0,&operandTable[0]} ,//198 +{amdgpu_gfx908_op_V_CMP_T_I32,"V_CMP_T_I32",0,&operandTable[0]} ,//199 +{amdgpu_gfx908_op_V_CMP_F_U32,"V_CMP_F_U32",0,&operandTable[0]} ,//200 +{amdgpu_gfx908_op_V_CMP_LT_U32,"V_CMP_LT_U32",0,&operandTable[0]} ,//201 +{amdgpu_gfx908_op_V_CMP_EQ_U32,"V_CMP_EQ_U32",0,&operandTable[0]} ,//202 +{amdgpu_gfx908_op_V_CMP_LE_U32,"V_CMP_LE_U32",0,&operandTable[0]} ,//203 +{amdgpu_gfx908_op_V_CMP_GT_U32,"V_CMP_GT_U32",0,&operandTable[0]} ,//204 +{amdgpu_gfx908_op_V_CMP_NE_U32,"V_CMP_NE_U32",0,&operandTable[0]} ,//205 +{amdgpu_gfx908_op_V_CMP_GE_U32,"V_CMP_GE_U32",0,&operandTable[0]} ,//206 +{amdgpu_gfx908_op_V_CMP_T_U32,"V_CMP_T_U32",0,&operandTable[0]} ,//207 +{amdgpu_gfx908_op_V_CMPX_F_I32,"V_CMPX_F_I32",0,&operandTable[0]} ,//208 +{amdgpu_gfx908_op_V_CMPX_LT_I32,"V_CMPX_LT_I32",0,&operandTable[0]} ,//209 +{amdgpu_gfx908_op_V_CMPX_EQ_I32,"V_CMPX_EQ_I32",0,&operandTable[0]} ,//210 +{amdgpu_gfx908_op_V_CMPX_LE_I32,"V_CMPX_LE_I32",0,&operandTable[0]} ,//211 +{amdgpu_gfx908_op_V_CMPX_GT_I32,"V_CMPX_GT_I32",0,&operandTable[0]} ,//212 +{amdgpu_gfx908_op_V_CMPX_NE_I32,"V_CMPX_NE_I32",0,&operandTable[0]} ,//213 +{amdgpu_gfx908_op_V_CMPX_GE_I32,"V_CMPX_GE_I32",0,&operandTable[0]} ,//214 +{amdgpu_gfx908_op_V_CMPX_T_I32,"V_CMPX_T_I32",0,&operandTable[0]} ,//215 +{amdgpu_gfx908_op_V_CMPX_F_U32,"V_CMPX_F_U32",0,&operandTable[0]} ,//216 +{amdgpu_gfx908_op_V_CMPX_LT_U32,"V_CMPX_LT_U32",0,&operandTable[0]} ,//217 +{amdgpu_gfx908_op_V_CMPX_EQ_U32,"V_CMPX_EQ_U32",0,&operandTable[0]} ,//218 +{amdgpu_gfx908_op_V_CMPX_LE_U32,"V_CMPX_LE_U32",0,&operandTable[0]} ,//219 +{amdgpu_gfx908_op_V_CMPX_GT_U32,"V_CMPX_GT_U32",0,&operandTable[0]} ,//220 +{amdgpu_gfx908_op_V_CMPX_NE_U32,"V_CMPX_NE_U32",0,&operandTable[0]} ,//221 +{amdgpu_gfx908_op_V_CMPX_GE_U32,"V_CMPX_GE_U32",0,&operandTable[0]} ,//222 +{amdgpu_gfx908_op_V_CMPX_T_U32,"V_CMPX_T_U32",0,&operandTable[0]} ,//223 +{amdgpu_gfx908_op_V_CMP_F_I64,"V_CMP_F_I64",0,&operandTable[0]} ,//224 +{amdgpu_gfx908_op_V_CMP_LT_I64,"V_CMP_LT_I64",0,&operandTable[0]} ,//225 +{amdgpu_gfx908_op_V_CMP_EQ_I64,"V_CMP_EQ_I64",0,&operandTable[0]} ,//226 +{amdgpu_gfx908_op_V_CMP_LE_I64,"V_CMP_LE_I64",0,&operandTable[0]} ,//227 +{amdgpu_gfx908_op_V_CMP_GT_I64,"V_CMP_GT_I64",0,&operandTable[0]} ,//228 +{amdgpu_gfx908_op_V_CMP_NE_I64,"V_CMP_NE_I64",0,&operandTable[0]} ,//229 +{amdgpu_gfx908_op_V_CMP_GE_I64,"V_CMP_GE_I64",0,&operandTable[0]} ,//230 +{amdgpu_gfx908_op_V_CMP_T_I64,"V_CMP_T_I64",0,&operandTable[0]} ,//231 +{amdgpu_gfx908_op_V_CMP_F_U64,"V_CMP_F_U64",0,&operandTable[0]} ,//232 +{amdgpu_gfx908_op_V_CMP_LT_U64,"V_CMP_LT_U64",0,&operandTable[0]} ,//233 +{amdgpu_gfx908_op_V_CMP_EQ_U64,"V_CMP_EQ_U64",0,&operandTable[0]} ,//234 +{amdgpu_gfx908_op_V_CMP_LE_U64,"V_CMP_LE_U64",0,&operandTable[0]} ,//235 +{amdgpu_gfx908_op_V_CMP_GT_U64,"V_CMP_GT_U64",0,&operandTable[0]} ,//236 +{amdgpu_gfx908_op_V_CMP_NE_U64,"V_CMP_NE_U64",0,&operandTable[0]} ,//237 +{amdgpu_gfx908_op_V_CMP_GE_U64,"V_CMP_GE_U64",0,&operandTable[0]} ,//238 +{amdgpu_gfx908_op_V_CMP_T_U64,"V_CMP_T_U64",0,&operandTable[0]} ,//239 +{amdgpu_gfx908_op_V_CMPX_F_I64,"V_CMPX_F_I64",0,&operandTable[0]} ,//240 +{amdgpu_gfx908_op_V_CMPX_LT_I64,"V_CMPX_LT_I64",0,&operandTable[0]} ,//241 +{amdgpu_gfx908_op_V_CMPX_EQ_I64,"V_CMPX_EQ_I64",0,&operandTable[0]} ,//242 +{amdgpu_gfx908_op_V_CMPX_LE_I64,"V_CMPX_LE_I64",0,&operandTable[0]} ,//243 +{amdgpu_gfx908_op_V_CMPX_GT_I64,"V_CMPX_GT_I64",0,&operandTable[0]} ,//244 +{amdgpu_gfx908_op_V_CMPX_NE_I64,"V_CMPX_NE_I64",0,&operandTable[0]} ,//245 +{amdgpu_gfx908_op_V_CMPX_GE_I64,"V_CMPX_GE_I64",0,&operandTable[0]} ,//246 +{amdgpu_gfx908_op_V_CMPX_T_I64,"V_CMPX_T_I64",0,&operandTable[0]} ,//247 +{amdgpu_gfx908_op_V_CMPX_F_U64,"V_CMPX_F_U64",0,&operandTable[0]} ,//248 +{amdgpu_gfx908_op_V_CMPX_LT_U64,"V_CMPX_LT_U64",0,&operandTable[0]} ,//249 +{amdgpu_gfx908_op_V_CMPX_EQ_U64,"V_CMPX_EQ_U64",0,&operandTable[0]} ,//250 +{amdgpu_gfx908_op_V_CMPX_LE_U64,"V_CMPX_LE_U64",0,&operandTable[0]} ,//251 +{amdgpu_gfx908_op_V_CMPX_GT_U64,"V_CMPX_GT_U64",0,&operandTable[0]} ,//252 +{amdgpu_gfx908_op_V_CMPX_NE_U64,"V_CMPX_NE_U64",0,&operandTable[0]} ,//253 +{amdgpu_gfx908_op_V_CMPX_GE_U64,"V_CMPX_GE_U64",0,&operandTable[0]} ,//254 +{amdgpu_gfx908_op_V_CMPX_T_U64,"V_CMPX_T_U64",0,&operandTable[0]} ,//255 +}; // end ENC_VOPC_insn_table diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C new file mode 100644 index 0000000000..0f85a19260 --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C @@ -0,0 +1,5884 @@ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ATTR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::attr0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::attr1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::attr2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::attr3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::attr4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::attr5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::attr6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::attr7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::attr8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::attr9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::attr10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::attr11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::attr12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::attr13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::attr14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::attr15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::attr16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::attr17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::attr18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::attr19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::attr20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::attr21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::attr22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::attr23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::attr24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::attr25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::attr26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::attr27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::attr28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::attr29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::attr30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::attr31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::attr32,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_all,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PARAM(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::p10,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::p20,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::p0,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::pc_all); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_EXEC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_M0(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SMEM_OFFSET(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLDS(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_SIMPLE(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG_NOVCC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_0_63_INLINES(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_INLINES(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_LANESEL(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_NOLIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LDS(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 128 : return Immediate::makeImmediate(Result(u32, 0)); +case 129 : return Immediate::makeImmediate(Result(u32, 1)); +case 130 : return Immediate::makeImmediate(Result(u32, 2)); +case 131 : return Immediate::makeImmediate(Result(u32, 3)); +case 132 : return Immediate::makeImmediate(Result(u32, 4)); +case 133 : return Immediate::makeImmediate(Result(u32, 5)); +case 134 : return Immediate::makeImmediate(Result(u32, 6)); +case 135 : return Immediate::makeImmediate(Result(u32, 7)); +case 136 : return Immediate::makeImmediate(Result(u32, 8)); +case 137 : return Immediate::makeImmediate(Result(u32, 9)); +case 138 : return Immediate::makeImmediate(Result(u32, 10)); +case 139 : return Immediate::makeImmediate(Result(u32, 11)); +case 140 : return Immediate::makeImmediate(Result(u32, 12)); +case 141 : return Immediate::makeImmediate(Result(u32, 13)); +case 142 : return Immediate::makeImmediate(Result(u32, 14)); +case 143 : return Immediate::makeImmediate(Result(u32, 15)); +case 144 : return Immediate::makeImmediate(Result(u32, 16)); +case 145 : return Immediate::makeImmediate(Result(u32, 17)); +case 146 : return Immediate::makeImmediate(Result(u32, 18)); +case 147 : return Immediate::makeImmediate(Result(u32, 19)); +case 148 : return Immediate::makeImmediate(Result(u32, 20)); +case 149 : return Immediate::makeImmediate(Result(u32, 21)); +case 150 : return Immediate::makeImmediate(Result(u32, 22)); +case 151 : return Immediate::makeImmediate(Result(u32, 23)); +case 152 : return Immediate::makeImmediate(Result(u32, 24)); +case 153 : return Immediate::makeImmediate(Result(u32, 25)); +case 154 : return Immediate::makeImmediate(Result(u32, 26)); +case 155 : return Immediate::makeImmediate(Result(u32, 27)); +case 156 : return Immediate::makeImmediate(Result(u32, 28)); +case 157 : return Immediate::makeImmediate(Result(u32, 29)); +case 158 : return Immediate::makeImmediate(Result(u32, 30)); +case 159 : return Immediate::makeImmediate(Result(u32, 31)); +case 160 : return Immediate::makeImmediate(Result(u32, 32)); +case 161 : return Immediate::makeImmediate(Result(u32, 33)); +case 162 : return Immediate::makeImmediate(Result(u32, 34)); +case 163 : return Immediate::makeImmediate(Result(u32, 35)); +case 164 : return Immediate::makeImmediate(Result(u32, 36)); +case 165 : return Immediate::makeImmediate(Result(u32, 37)); +case 166 : return Immediate::makeImmediate(Result(u32, 38)); +case 167 : return Immediate::makeImmediate(Result(u32, 39)); +case 168 : return Immediate::makeImmediate(Result(u32, 40)); +case 169 : return Immediate::makeImmediate(Result(u32, 41)); +case 170 : return Immediate::makeImmediate(Result(u32, 42)); +case 171 : return Immediate::makeImmediate(Result(u32, 43)); +case 172 : return Immediate::makeImmediate(Result(u32, 44)); +case 173 : return Immediate::makeImmediate(Result(u32, 45)); +case 174 : return Immediate::makeImmediate(Result(u32, 46)); +case 175 : return Immediate::makeImmediate(Result(u32, 47)); +case 176 : return Immediate::makeImmediate(Result(u32, 48)); +case 177 : return Immediate::makeImmediate(Result(u32, 49)); +case 178 : return Immediate::makeImmediate(Result(u32, 50)); +case 179 : return Immediate::makeImmediate(Result(u32, 51)); +case 180 : return Immediate::makeImmediate(Result(u32, 52)); +case 181 : return Immediate::makeImmediate(Result(u32, 53)); +case 182 : return Immediate::makeImmediate(Result(u32, 54)); +case 183 : return Immediate::makeImmediate(Result(u32, 55)); +case 184 : return Immediate::makeImmediate(Result(u32, 56)); +case 185 : return Immediate::makeImmediate(Result(u32, 57)); +case 186 : return Immediate::makeImmediate(Result(u32, 58)); +case 187 : return Immediate::makeImmediate(Result(u32, 59)); +case 188 : return Immediate::makeImmediate(Result(u32, 60)); +case 189 : return Immediate::makeImmediate(Result(u32, 61)); +case 190 : return Immediate::makeImmediate(Result(u32, 62)); +case 191 : return Immediate::makeImmediate(Result(u32, 63)); +case 192 : return Immediate::makeImmediate(Result(u32, 64)); +case 193 : return Immediate::makeImmediate(Result(u32, -1)); +case 194 : return Immediate::makeImmediate(Result(u32, -2)); +case 195 : return Immediate::makeImmediate(Result(u32, -3)); +case 196 : return Immediate::makeImmediate(Result(u32, -4)); +case 197 : return Immediate::makeImmediate(Result(u32, -5)); +case 198 : return Immediate::makeImmediate(Result(u32, -6)); +case 199 : return Immediate::makeImmediate(Result(u32, -7)); +case 200 : return Immediate::makeImmediate(Result(u32, -8)); +case 201 : return Immediate::makeImmediate(Result(u32, -9)); +case 202 : return Immediate::makeImmediate(Result(u32, -10)); +case 203 : return Immediate::makeImmediate(Result(u32, -11)); +case 204 : return Immediate::makeImmediate(Result(u32, -12)); +case 205 : return Immediate::makeImmediate(Result(u32, -13)); +case 206 : return Immediate::makeImmediate(Result(u32, -14)); +case 207 : return Immediate::makeImmediate(Result(u32, -15)); +case 208 : return Immediate::makeImmediate(Result(u32, -16)); +case 240 : return Immediate::makeImmediate(Result(sp_float, 0.5)); +case 241 : return Immediate::makeImmediate(Result(sp_float, -0.5)); +case 242 : return Immediate::makeImmediate(Result(sp_float, 1.0)); +case 243 : return Immediate::makeImmediate(Result(sp_float, -1.0)); +case 244 : return Immediate::makeImmediate(Result(sp_float, 2.0)); +case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); +case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); +case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); +case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TGT(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::mrt0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::mrt1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::mrt2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::mrt3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::mrt4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::mrt5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::mrt6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::mrt7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::mrtz,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::null,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::pos0,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::pos1,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::pos2,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::pos3,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::param0,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::param1,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::param2,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::param3,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::param4,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::param5,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::param6,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::param7,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::param8,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::param9,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::param10,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::param11,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::param12,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::param13,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::param14,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::param15,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::param16,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::param17,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::param18,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::param19,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::param20,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::param21,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::param22,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::param23,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::param24,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::param25,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::param26,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::param27,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::param28,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::param29,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::param30,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::param31,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TRAP(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::vcc); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC_LOHI(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 0 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 1 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 2 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 3 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 4 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 5 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 6 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 7 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 8 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 9 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 10 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 11 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 12 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 13 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 14 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 15 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 16 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 17 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 18 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 19 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 20 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 21 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 22 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 23 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 24 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 25 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 26 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 27 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 28 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 29 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 30 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 31 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 32 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 33 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 34 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 35 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 36 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 37 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 38 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 39 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 40 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 41 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 42 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 43 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 44 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 45 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 46 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 47 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 48 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 49 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 50 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 51 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 52 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 53 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 54 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 55 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 56 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 57 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 58 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 59 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 60 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 61 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 62 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 63 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 64 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 65 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 66 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 67 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 68 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 69 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 70 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 71 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 72 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 73 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 74 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 75 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 76 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 77 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 78 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 79 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 80 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 81 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 82 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 83 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 84 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 85 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 86 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 87 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 88 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 89 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 90 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 91 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 92 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 93 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 94 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 95 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 96 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 97 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 98 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 99 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 100 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 101 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 103 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 107 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 109 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 110 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 111 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 112 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 113 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 114 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 115 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 116 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 117 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 118 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 119 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 120 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 121 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 122 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 123 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 125 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 127 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 128 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 129 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 130 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 131 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 132 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 133 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 134 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 135 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 136 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 137 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 138 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 139 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 140 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 141 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 142 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 143 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 144 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 145 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 146 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 147 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 148 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 149 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 150 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 151 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 152 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 153 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 154 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 155 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 156 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 157 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 158 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 159 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 160 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 161 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 162 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 163 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 164 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 165 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 166 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 167 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 168 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 169 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 170 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 171 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 172 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 173 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 174 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 175 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 176 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 177 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 178 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 179 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 180 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 181 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 182 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 183 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 184 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 185 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 186 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 187 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 188 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 189 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 190 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 191 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 192 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 193 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 194 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 195 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 196 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 197 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 198 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 199 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 200 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 201 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 202 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 203 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 204 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 205 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 206 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 207 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 208 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 209 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 210 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 211 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 212 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 213 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 214 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 215 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 216 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 217 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 218 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 219 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 220 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 221 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 222 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 223 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 224 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 225 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 226 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 227 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 228 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 229 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 230 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 231 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 232 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 233 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 234 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 236 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 237 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 238 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 240 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 241 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 242 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 243 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 244 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 245 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 246 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 247 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 248 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 249 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 250 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR_OR_LDS(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_XNACK_MASK_LOHI(uint64_t input,uint32_t opr_size ){ +switch(input){ +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +default: return makeRegisterExpression(amdgpu_gfx908::invalid); +} +} diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h new file mode 100644 index 0000000000..9aed56c56f --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h @@ -0,0 +1,41 @@ +Expression::Ptr decodeOPR_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_ATTR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_PARAM(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_PC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_M0(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LDS(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_TGT(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_TRAP(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input ,uint32_t opr_size ); diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C new file mode 100644 index 0000000000..21d2ad3ffd --- /dev/null +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -0,0 +1,11469 @@ +void InstructionDecoder_amdgpu_gfx908::finalizeENC_DSOperands(){ +layout_ENC_DS & layout = insn_layout.ENC_DS; +switch(layout.OP){ +case 0:// DS_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 1:// DS_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 2:// DS_RSUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 3:// DS_INC_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 4:// DS_DEC_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 5:// DS_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 6:// DS_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 7:// DS_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 8:// DS_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 9:// DS_AND_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 10:// DS_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 11:// DS_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 12:// DS_MSKOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 13:// DS_WRITE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 14:// DS_WRITE2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 15:// DS_WRITE2ST64_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 16:// DS_CMPST_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 17:// DS_CMPST_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 18:// DS_MIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 19:// DS_MAX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 20:// DS_NOP +break; +case 21:// DS_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 29:// DS_WRITE_ADDTID_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// DS_WRITE_B8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 31:// DS_WRITE_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 32:// DS_ADD_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 33:// DS_SUB_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 34:// DS_RSUB_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 35:// DS_INC_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 36:// DS_DEC_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 37:// DS_MIN_RTN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 38:// DS_MAX_RTN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 39:// DS_MIN_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 40:// DS_MAX_RTN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 41:// DS_AND_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 42:// DS_OR_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 43:// DS_XOR_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 44:// DS_MSKOR_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 45:// DS_WRXCHG_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 46:// DS_WRXCHG2_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 47:// DS_WRXCHG2ST64_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 48:// DS_CMPST_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 49:// DS_CMPST_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 50:// DS_MIN_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 51:// DS_MAX_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 52:// DS_WRAP_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +break; +case 53:// DS_ADD_RTN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 54:// DS_READ_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 55:// DS_READ2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 56:// DS_READ2ST64_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 57:// DS_READ_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 58:// DS_READ_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 59:// DS_READ_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 60:// DS_READ_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 61:// DS_SWIZZLE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 62:// DS_PERMUTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 63:// DS_BPERMUTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 64:// DS_ADD_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 65:// DS_SUB_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 66:// DS_RSUB_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 67:// DS_INC_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 68:// DS_DEC_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 69:// DS_MIN_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 70:// DS_MAX_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 71:// DS_MIN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 72:// DS_MAX_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 73:// DS_AND_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 74:// DS_OR_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 75:// DS_XOR_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 76:// DS_MSKOR_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 77:// DS_WRITE_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 78:// DS_WRITE2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 79:// DS_WRITE2ST64_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 80:// DS_CMPST_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 81:// DS_CMPST_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 82:// DS_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 83:// DS_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 84:// DS_WRITE_B8_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 85:// DS_WRITE_B16_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +break; +case 86:// DS_READ_U8_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 87:// DS_READ_U8_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 88:// DS_READ_I8_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 89:// DS_READ_I8_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 90:// DS_READ_U16_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 91:// DS_READ_U16_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 96:// DS_ADD_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 97:// DS_SUB_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 98:// DS_RSUB_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 99:// DS_INC_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 100:// DS_DEC_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 101:// DS_MIN_RTN_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 102:// DS_MAX_RTN_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 103:// DS_MIN_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 104:// DS_MAX_RTN_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 105:// DS_AND_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 106:// DS_OR_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 107:// DS_XOR_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 108:// DS_MSKOR_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 109:// DS_WRXCHG_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 110:// DS_WRXCHG2_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 111:// DS_WRXCHG2ST64_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 112:// DS_CMPST_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 113:// DS_CMPST_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +break; +case 114:// DS_MIN_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 115:// DS_MAX_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 118:// DS_READ_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 119:// DS_READ2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 120:// DS_READ2ST64_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 126:// DS_CONDXCHG32_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +break; +case 128:// DS_ADD_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 129:// DS_SUB_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 130:// DS_RSUB_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 131:// DS_INC_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 132:// DS_DEC_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 133:// DS_MIN_SRC2_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 134:// DS_MAX_SRC2_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 135:// DS_MIN_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 136:// DS_MAX_SRC2_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 137:// DS_AND_SRC2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 138:// DS_OR_SRC2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 139:// DS_XOR_SRC2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 141:// DS_WRITE_SRC2_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 146:// DS_MIN_SRC2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 147:// DS_MAX_SRC2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 149:// DS_ADD_SRC2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 152:// DS_GWS_SEMA_RELEASE_ALL +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 153:// DS_GWS_INIT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 154:// DS_GWS_SEMA_V +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 155:// DS_GWS_SEMA_BR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 156:// DS_GWS_SEMA_P +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 157:// DS_GWS_BARRIER +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 182:// DS_READ_ADDTID_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 189:// DS_CONSUME +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 190:// DS_APPEND +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 191:// DS_ORDERED_COUNT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 192:// DS_ADD_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 193:// DS_SUB_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 194:// DS_RSUB_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 195:// DS_INC_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 196:// DS_DEC_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 197:// DS_MIN_SRC2_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 198:// DS_MAX_SRC2_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 199:// DS_MIN_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 200:// DS_MAX_SRC2_U64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 201:// DS_AND_SRC2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 202:// DS_OR_SRC2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 203:// DS_XOR_SRC2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 205:// DS_WRITE_SRC2_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 210:// DS_MIN_SRC2_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 211:// DS_MAX_SRC2_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 222:// DS_WRITE_B96 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); +break; +case 223:// DS_WRITE_B128 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+3,32),true,false); +break; +case 254:// DS_READ_B96 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +case 255:// DS_READ_B128 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLATOperands(){ +layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; +switch(layout.OP){ +case 16:// FLAT_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// FLAT_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// FLAT_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 19:// FLAT_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 20:// FLAT_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 21:// FLAT_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 22:// FLAT_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// FLAT_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 24:// FLAT_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 25:// FLAT_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 26:// FLAT_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 27:// FLAT_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 28:// FLAT_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 29:// FLAT_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// FLAT_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 31:// FLAT_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 32:// FLAT_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 33:// FLAT_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 34:// FLAT_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 35:// FLAT_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 36:// FLAT_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 37:// FLAT_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 64:// FLAT_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 65:// FLAT_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 66:// FLAT_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 67:// FLAT_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 68:// FLAT_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 69:// FLAT_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 70:// FLAT_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 71:// FLAT_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 72:// FLAT_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 73:// FLAT_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 74:// FLAT_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 75:// FLAT_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 76:// FLAT_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 96:// FLAT_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 97:// FLAT_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 98:// FLAT_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 99:// FLAT_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 100:// FLAT_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 101:// FLAT_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 102:// FLAT_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 103:// FLAT_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 104:// FLAT_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 105:// FLAT_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 106:// FLAT_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 107:// FLAT_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 108:// FLAT_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLAT_GLBLOperands(){ +layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; +switch(layout.OP){ +case 16:// GLOBAL_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// GLOBAL_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// GLOBAL_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 19:// GLOBAL_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 20:// GLOBAL_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 21:// GLOBAL_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 22:// GLOBAL_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// GLOBAL_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 24:// GLOBAL_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 25:// GLOBAL_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 26:// GLOBAL_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 27:// GLOBAL_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 28:// GLOBAL_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 29:// GLOBAL_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// GLOBAL_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 31:// GLOBAL_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 32:// GLOBAL_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 33:// GLOBAL_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 34:// GLOBAL_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 35:// GLOBAL_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 36:// GLOBAL_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 37:// GLOBAL_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 64:// GLOBAL_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 65:// GLOBAL_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 66:// GLOBAL_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 67:// GLOBAL_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 68:// GLOBAL_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 69:// GLOBAL_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 70:// GLOBAL_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 71:// GLOBAL_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 72:// GLOBAL_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 73:// GLOBAL_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 74:// GLOBAL_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 75:// GLOBAL_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 76:// GLOBAL_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 77:// GLOBAL_ATOMIC_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 78:// GLOBAL_ATOMIC_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 96:// GLOBAL_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 97:// GLOBAL_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 98:// GLOBAL_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 99:// GLOBAL_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 100:// GLOBAL_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 101:// GLOBAL_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 102:// GLOBAL_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 103:// GLOBAL_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 104:// GLOBAL_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 105:// GLOBAL_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 106:// GLOBAL_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 107:// GLOBAL_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 108:// GLOBAL_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLAT_SCRATCHOperands(){ +layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; +switch(layout.OP){ +case 16:// SCRATCH_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// SCRATCH_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// SCRATCH_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 19:// SCRATCH_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 20:// SCRATCH_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 21:// SCRATCH_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 22:// SCRATCH_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// SCRATCH_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 24:// SCRATCH_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 25:// SCRATCH_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 26:// SCRATCH_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 27:// SCRATCH_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 28:// SCRATCH_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 29:// SCRATCH_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// SCRATCH_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 31:// SCRATCH_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 32:// SCRATCH_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 33:// SCRATCH_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 34:// SCRATCH_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 35:// SCRATCH_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 36:// SCRATCH_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 37:// SCRATCH_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_MIMGOperands(){ +layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; +switch(layout.OP){ +case 0:// IMAGE_LOAD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 1:// IMAGE_LOAD_MIP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 2:// IMAGE_LOAD_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 3:// IMAGE_LOAD_PCK_SGN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 4:// IMAGE_LOAD_MIP_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 5:// IMAGE_LOAD_MIP_PCK_SGN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 8:// IMAGE_STORE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 9:// IMAGE_STORE_MIP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 10:// IMAGE_STORE_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 11:// IMAGE_STORE_MIP_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 14:// IMAGE_GET_RESINFO +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 16:// IMAGE_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 17:// IMAGE_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 18:// IMAGE_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 19:// IMAGE_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 20:// IMAGE_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 21:// IMAGE_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 22:// IMAGE_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 23:// IMAGE_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 24:// IMAGE_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 25:// IMAGE_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 26:// IMAGE_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 27:// IMAGE_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 28:// IMAGE_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +break; +case 32:// IMAGE_SAMPLE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 33:// IMAGE_SAMPLE_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 34:// IMAGE_SAMPLE_D +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 35:// IMAGE_SAMPLE_D_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 36:// IMAGE_SAMPLE_L +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 37:// IMAGE_SAMPLE_B +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 38:// IMAGE_SAMPLE_B_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 39:// IMAGE_SAMPLE_LZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 40:// IMAGE_SAMPLE_C +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 41:// IMAGE_SAMPLE_C_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 42:// IMAGE_SAMPLE_C_D +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 43:// IMAGE_SAMPLE_C_D_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 44:// IMAGE_SAMPLE_C_L +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 45:// IMAGE_SAMPLE_C_B +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 46:// IMAGE_SAMPLE_C_B_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 47:// IMAGE_SAMPLE_C_LZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 48:// IMAGE_SAMPLE_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 49:// IMAGE_SAMPLE_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 50:// IMAGE_SAMPLE_D_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 51:// IMAGE_SAMPLE_D_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 52:// IMAGE_SAMPLE_L_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 53:// IMAGE_SAMPLE_B_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 54:// IMAGE_SAMPLE_B_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 55:// IMAGE_SAMPLE_LZ_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 56:// IMAGE_SAMPLE_C_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 57:// IMAGE_SAMPLE_C_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 58:// IMAGE_SAMPLE_C_D_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 59:// IMAGE_SAMPLE_C_D_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 60:// IMAGE_SAMPLE_C_L_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 61:// IMAGE_SAMPLE_C_B_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 62:// IMAGE_SAMPLE_C_B_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 63:// IMAGE_SAMPLE_C_LZ_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 64:// IMAGE_GATHER4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 65:// IMAGE_GATHER4_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 66:// IMAGE_GATHER4H +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 68:// IMAGE_GATHER4_L +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 69:// IMAGE_GATHER4_B +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 70:// IMAGE_GATHER4_B_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 71:// IMAGE_GATHER4_LZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 72:// IMAGE_GATHER4_C +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 73:// IMAGE_GATHER4_C_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 74:// IMAGE_GATHER4H_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 75:// IMAGE_GATHER8H_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 76:// IMAGE_GATHER4_C_L +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 77:// IMAGE_GATHER4_C_B +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 78:// IMAGE_GATHER4_C_B_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 79:// IMAGE_GATHER4_C_LZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 80:// IMAGE_GATHER4_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 81:// IMAGE_GATHER4_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 84:// IMAGE_GATHER4_L_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 85:// IMAGE_GATHER4_B_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 86:// IMAGE_GATHER4_B_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 87:// IMAGE_GATHER4_LZ_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 88:// IMAGE_GATHER4_C_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 89:// IMAGE_GATHER4_C_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 92:// IMAGE_GATHER4_C_L_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 93:// IMAGE_GATHER4_C_B_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 94:// IMAGE_GATHER4_C_B_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 95:// IMAGE_GATHER4_C_LZ_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 96:// IMAGE_GET_LOD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 104:// IMAGE_SAMPLE_CD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 105:// IMAGE_SAMPLE_CD_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 106:// IMAGE_SAMPLE_C_CD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 107:// IMAGE_SAMPLE_C_CD_CL +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 108:// IMAGE_SAMPLE_CD_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 109:// IMAGE_SAMPLE_CD_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 110:// IMAGE_SAMPLE_C_CD_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +case 111:// IMAGE_SAMPLE_C_CD_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_MTBUFOperands(){ +layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; +switch(layout.OP){ +case 0:// TBUFFER_LOAD_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 1:// TBUFFER_LOAD_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 2:// TBUFFER_LOAD_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 3:// TBUFFER_LOAD_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 4:// TBUFFER_STORE_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 5:// TBUFFER_STORE_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 6:// TBUFFER_STORE_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 7:// TBUFFER_STORE_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 8:// TBUFFER_LOAD_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 9:// TBUFFER_LOAD_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 10:// TBUFFER_LOAD_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 11:// TBUFFER_LOAD_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 12:// TBUFFER_STORE_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 13:// TBUFFER_STORE_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 14:// TBUFFER_STORE_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 15:// TBUFFER_STORE_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_MUBUFOperands(){ +layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; +switch(layout.OP){ +case 0:// BUFFER_LOAD_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 1:// BUFFER_LOAD_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 2:// BUFFER_LOAD_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 3:// BUFFER_LOAD_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 4:// BUFFER_STORE_FORMAT_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 5:// BUFFER_STORE_FORMAT_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 6:// BUFFER_STORE_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 7:// BUFFER_STORE_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 8:// BUFFER_LOAD_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 9:// BUFFER_LOAD_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 10:// BUFFER_LOAD_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 11:// BUFFER_LOAD_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 12:// BUFFER_STORE_FORMAT_D16_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 13:// BUFFER_STORE_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 14:// BUFFER_STORE_FORMAT_D16_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 15:// BUFFER_STORE_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 16:// BUFFER_LOAD_UBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 17:// BUFFER_LOAD_SBYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 18:// BUFFER_LOAD_USHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 19:// BUFFER_LOAD_SSHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 20:// BUFFER_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 21:// BUFFER_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 22:// BUFFER_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 23:// BUFFER_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 24:// BUFFER_STORE_BYTE +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 25:// BUFFER_STORE_BYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 26:// BUFFER_STORE_SHORT +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 27:// BUFFER_STORE_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 28:// BUFFER_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 29:// BUFFER_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 30:// BUFFER_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 31:// BUFFER_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 32:// BUFFER_LOAD_UBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 33:// BUFFER_LOAD_UBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 34:// BUFFER_LOAD_SBYTE_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 35:// BUFFER_LOAD_SBYTE_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 36:// BUFFER_LOAD_SHORT_D16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 37:// BUFFER_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 38:// BUFFER_LOAD_FORMAT_D16_HI_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 39:// BUFFER_STORE_FORMAT_D16_HI_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 61:// BUFFER_STORE_LDS_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 62:// BUFFER_WBINVL1 +break; +case 63:// BUFFER_WBINVL1_VOL +break; +case 64:// BUFFER_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 65:// BUFFER_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 66:// BUFFER_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 67:// BUFFER_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 68:// BUFFER_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 69:// BUFFER_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 70:// BUFFER_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 71:// BUFFER_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 72:// BUFFER_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 73:// BUFFER_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 74:// BUFFER_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 75:// BUFFER_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 76:// BUFFER_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 77:// BUFFER_ATOMIC_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 78:// BUFFER_ATOMIC_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 96:// BUFFER_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 97:// BUFFER_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 98:// BUFFER_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 99:// BUFFER_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 100:// BUFFER_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 101:// BUFFER_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 102:// BUFFER_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 103:// BUFFER_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 104:// BUFFER_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 105:// BUFFER_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 106:// BUFFER_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 107:// BUFFER_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 108:// BUFFER_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SMEMOperands(){ +layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; +switch(layout.OP){ +case 0:// S_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 1:// S_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 2:// S_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 3:// S_LOAD_DWORDX8 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 4:// S_LOAD_DWORDX16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 5:// S_SCRATCH_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 6:// S_SCRATCH_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 7:// S_SCRATCH_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 8:// S_BUFFER_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 9:// S_BUFFER_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 10:// S_BUFFER_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 11:// S_BUFFER_LOAD_DWORDX8 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 12:// S_BUFFER_LOAD_DWORDX16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 16:// S_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 17:// S_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 18:// S_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 21:// S_SCRATCH_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 22:// S_SCRATCH_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 23:// S_SCRATCH_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 24:// S_BUFFER_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 25:// S_BUFFER_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 26:// S_BUFFER_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 32:// S_DCACHE_INV +break; +case 33:// S_DCACHE_WB +break; +case 34:// S_DCACHE_INV_VOL +break; +case 35:// S_DCACHE_WB_VOL +break; +case 36:// S_MEMTIME +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +break; +case 37:// S_MEMREALTIME +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +break; +case 38:// S_ATC_PROBE +insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 39:// S_ATC_PROBE_BUFFER +insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 40:// S_DCACHE_DISCARD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 41:// S_DCACHE_DISCARD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 64:// S_BUFFER_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 65:// S_BUFFER_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 66:// S_BUFFER_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 67:// S_BUFFER_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 68:// S_BUFFER_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 69:// S_BUFFER_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 70:// S_BUFFER_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 71:// S_BUFFER_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 72:// S_BUFFER_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 73:// S_BUFFER_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 74:// S_BUFFER_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 75:// S_BUFFER_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 76:// S_BUFFER_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 96:// S_BUFFER_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 97:// S_BUFFER_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 98:// S_BUFFER_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 99:// S_BUFFER_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 100:// S_BUFFER_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 101:// S_BUFFER_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 102:// S_BUFFER_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 103:// S_BUFFER_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 104:// S_BUFFER_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 105:// S_BUFFER_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 106:// S_BUFFER_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 107:// S_BUFFER_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 108:// S_BUFFER_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 128:// S_ATOMIC_SWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 129:// S_ATOMIC_CMPSWAP +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 130:// S_ATOMIC_ADD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 131:// S_ATOMIC_SUB +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 132:// S_ATOMIC_SMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 133:// S_ATOMIC_UMIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 134:// S_ATOMIC_SMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 135:// S_ATOMIC_UMAX +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 136:// S_ATOMIC_AND +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 137:// S_ATOMIC_OR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 138:// S_ATOMIC_XOR +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 139:// S_ATOMIC_INC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 140:// S_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 160:// S_ATOMIC_SWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 161:// S_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 162:// S_ATOMIC_ADD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 163:// S_ATOMIC_SUB_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 164:// S_ATOMIC_SMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 165:// S_ATOMIC_UMIN_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 166:// S_ATOMIC_SMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 167:// S_ATOMIC_UMAX_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 168:// S_ATOMIC_AND_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 169:// S_ATOMIC_OR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 170:// S_ATOMIC_XOR_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 171:// S_ATOMIC_INC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 172:// S_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP1Operands(){ +layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; +switch(layout.OP){ +case 0:// S_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 1:// S_MOV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 2:// S_CMOV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 3:// S_CMOV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 4:// S_NOT_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 5:// S_NOT_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 6:// S_WQM_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_WQM_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_BREV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 9:// S_BREV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 10:// S_BCNT0_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 11:// S_BCNT0_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 12:// S_BCNT1_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_BCNT1_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_FF0_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 15:// S_FF0_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 16:// S_FF1_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 17:// S_FF1_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 18:// S_FLBIT_I32_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 19:// S_FLBIT_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 20:// S_FLBIT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 21:// S_FLBIT_I32_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +break; +case 22:// S_SEXT_I32_I8 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +break; +case 23:// S_SEXT_I32_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +break; +case 24:// S_BITSET0_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 25:// S_BITSET0_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 26:// S_BITSET1_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 27:// S_BITSET1_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +case 28:// S_GETPC_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +break; +case 29:// S_SETPC_B64 +setBranch(); +setModifyPC(); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 30:// S_SWAPPC_B64 +setBranch(); +setModifyPC(); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +break; +case 31:// S_RFE_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 32:// S_AND_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 33:// S_OR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 34:// S_XOR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 35:// S_ANDN2_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 36:// S_ORN2_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 37:// S_NAND_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 38:// S_NOR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 39:// S_XNOR_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 40:// S_QUADMASK_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 41:// S_QUADMASK_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 42:// S_MOVRELS_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 43:// S_MOVRELS_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 44:// S_MOVRELD_B32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 45:// S_MOVRELD_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 46:// S_CBRANCH_JOIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 48:// S_ABS_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 50:// S_SET_GPR_IDX_IDX +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 51:// S_ANDN1_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 52:// S_ORN1_SAVEEXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 53:// S_ANDN1_WREXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 54:// S_ANDN2_WREXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 55:// S_BITREPLICATE_B64_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP2Operands(){ +layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; +switch(layout.OP){ +case 0:// S_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 1:// S_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 2:// S_ADD_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 3:// S_SUB_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 4:// S_ADDC_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 5:// S_SUBB_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 6:// S_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 9:// S_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 10:// S_CSELECT_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 11:// S_CSELECT_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 12:// S_AND_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_AND_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_OR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 15:// S_OR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 16:// S_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 17:// S_XOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 18:// S_ANDN2_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 19:// S_ANDN2_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 20:// S_ORN2_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 21:// S_ORN2_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 22:// S_NAND_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 23:// S_NAND_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 24:// S_NOR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 25:// S_NOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 26:// S_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 27:// S_XNOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 28:// S_LSHL_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 29:// S_LSHL_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 30:// S_LSHR_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 31:// S_LSHR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 32:// S_ASHR_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 33:// S_ASHR_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 34:// S_BFM_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 35:// S_BFM_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 36:// S_MUL_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 37:// S_BFE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 38:// S_BFE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 39:// S_BFE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 40:// S_BFE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 41:// S_CBRANCH_G_FORK +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 42:// S_ABSDIFF_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 43:// S_RFE_RESTORE_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +break; +case 44:// S_MUL_HI_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 45:// S_MUL_HI_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 46:// S_LSHL1_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 47:// S_LSHL2_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 48:// S_LSHL3_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 49:// S_LSHL4_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 50:// S_PACK_LL_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,16),true,false); +break; +case 51:// S_PACK_LH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 52:// S_PACK_HH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPCOperands(){ +layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; +switch(layout.OP){ +case 0:// S_CMP_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 1:// S_CMP_LG_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 2:// S_CMP_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 3:// S_CMP_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 4:// S_CMP_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 5:// S_CMP_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 6:// S_CMP_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_CMP_LG_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_CMP_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 9:// S_CMP_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 10:// S_CMP_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 11:// S_CMP_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 12:// S_BITCMP0_B32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_BITCMP1_B32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_BITCMP0_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 15:// S_BITCMP1_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 16:// S_SETVSKIP +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +break; +case 17:// S_SET_GPR_IDX_ON +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM4(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// S_CMP_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 19:// S_CMP_LG_U64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPKOperands(){ +layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; +switch(layout.OP){ +case 0:// S_MOVK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 1:// S_CMOVK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 2:// S_CMPK_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 3:// S_CMPK_LG_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 4:// S_CMPK_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 5:// S_CMPK_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 6:// S_CMPK_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 7:// S_CMPK_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 8:// S_CMPK_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 9:// S_CMPK_LG_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 10:// S_CMPK_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 11:// S_CMPK_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 12:// S_CMPK_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 13:// S_CMPK_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 14:// S_ADDK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 15:// S_MULK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 16:// S_CBRANCH_I_FORK +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 17:// S_GETREG_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 18:// S_SETREG_B32 +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +break; +case 21:// S_CALL_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeSOPK_INST_LITERAL_Operands(){ +layout_SOPK_INST_LITERAL_ & layout = insn_layout.SOPK_INST_LITERAL_; +switch(layout.OP){ +case 20:// S_SETREG_IMM32_B32 +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM32(decodeOPR_LITERAL()),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPPOperands(){ +layout_ENC_SOPP & layout = insn_layout.ENC_SOPP; +switch(layout.OP){ +case 0:// S_NOP +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 1:// S_ENDPGM +break; +case 2:// S_BRANCH +setBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 3:// S_WAKEUP +break; +case 4:// S_CBRANCH_SCC0 +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 5:// S_CBRANCH_SCC1 +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +break; +case 6:// S_CBRANCH_VCCZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 7:// S_CBRANCH_VCCNZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 8:// S_CBRANCH_EXECZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 9:// S_CBRANCH_EXECNZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +break; +case 10:// S_BARRIER +break; +case 11:// S_SETKILL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 12:// S_WAITCNT +insn_in_progress->appendOperand(decodeOPR_WAITCNT(layout.SIMM16),true,false); +break; +case 13:// S_SETHALT +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 14:// S_SLEEP +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 15:// S_SETPRIO +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 16:// S_SENDMSG +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 17:// S_SENDMSGHALT +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 18:// S_TRAP +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 19:// S_ICACHE_INV +break; +case 20:// S_INCPERFLEVEL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 21:// S_DECPERFLEVEL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +break; +case 22:// S_TTRACEDATA +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 23:// S_CBRANCH_CDBGSYS +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 24:// S_CBRANCH_CDBGUSER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 25:// S_CBRANCH_CDBGSYS_OR_USER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 26:// S_CBRANCH_CDBGSYS_AND_USER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +break; +case 27:// S_ENDPGM_SAVED +break; +case 28:// S_SET_GPR_IDX_OFF +break; +case 29:// S_SET_GPR_IDX_MODE +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 30:// S_ENDPGM_ORDERED_PS_DONE +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VINTRPOperands(){ +layout_ENC_VINTRP & layout = insn_layout.ENC_VINTRP; +switch(layout.OP){ +case 0:// V_INTERP_P1_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 1:// V_INTERP_P2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 2:// V_INTERP_MOV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PARAM(layout.VSRC,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3Operands(){ +layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; +switch(layout.OP){ +case 624:// V_INTERP_P1_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 625:// V_INTERP_P2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 626:// V_INTERP_MOV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PARAM(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +case 320:// V_NOP +break; +case 321:// V_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 322:// V_READFIRSTLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +break; +case 323:// V_CVT_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 324:// V_CVT_F64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 325:// V_CVT_F32_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 326:// V_CVT_F32_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 327:// V_CVT_U32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 328:// V_CVT_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 330:// V_CVT_F16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 331:// V_CVT_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 332:// V_CVT_RPI_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 333:// V_CVT_FLR_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 334:// V_CVT_OFF_F32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 335:// V_CVT_F32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 336:// V_CVT_F64_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 337:// V_CVT_F32_UBYTE0 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 338:// V_CVT_F32_UBYTE1 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 339:// V_CVT_F32_UBYTE2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 340:// V_CVT_F32_UBYTE3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 341:// V_CVT_U32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 342:// V_CVT_F64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 343:// V_TRUNC_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 344:// V_CEIL_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 345:// V_RNDNE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 346:// V_FLOOR_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 347:// V_FRACT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 348:// V_TRUNC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 349:// V_CEIL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 350:// V_RNDNE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 351:// V_FLOOR_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 352:// V_EXP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 353:// V_LOG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 354:// V_RCP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 355:// V_RCP_IFLAG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 356:// V_RSQ_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 357:// V_RCP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 358:// V_RSQ_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 359:// V_SQRT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 360:// V_SQRT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 361:// V_SIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 362:// V_COS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 363:// V_NOT_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 364:// V_BFREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 365:// V_FFBH_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 366:// V_FFBL_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 367:// V_FFBH_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 368:// V_FREXP_EXP_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 369:// V_FREXP_MANT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 370:// V_FRACT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +break; +case 371:// V_FREXP_EXP_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 372:// V_FREXP_MANT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 373:// V_CLREXCP +break; +case 375:// V_SCREEN_PARTITION_4SE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 377:// V_CVT_F16_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 378:// V_CVT_F16_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 379:// V_CVT_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 380:// V_CVT_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 381:// V_RCP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 382:// V_SQRT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 383:// V_RSQ_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 384:// V_LOG_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 385:// V_EXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 386:// V_FREXP_MANT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 387:// V_FREXP_EXP_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 388:// V_FLOOR_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 389:// V_CEIL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 390:// V_TRUNC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 391:// V_RNDNE_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 392:// V_FRACT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 393:// V_SIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 394:// V_COS_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 395:// V_EXP_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 396:// V_LOG_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 397:// V_CVT_NORM_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 398:// V_CVT_NORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +break; +case 399:// V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +case 401:// V_SWAP_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); +break; +case 256:// V_CNDMASK_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 257:// V_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 258:// V_SUB_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 259:// V_SUBREV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 260:// V_MUL_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 261:// V_MUL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 262:// V_MUL_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 263:// V_MUL_HI_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 264:// V_MUL_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 265:// V_MUL_HI_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 266:// V_MIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 267:// V_MAX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 268:// V_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 269:// V_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 270:// V_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 271:// V_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 272:// V_LSHRREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 273:// V_ASHRREV_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 274:// V_LSHLREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 275:// V_AND_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 276:// V_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 277:// V_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 278:// V_MAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 287:// V_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 288:// V_SUB_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 289:// V_SUBREV_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 290:// V_MUL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 291:// V_MAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 294:// V_ADD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 295:// V_SUB_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 296:// V_SUBREV_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 297:// V_MUL_LO_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 298:// V_LSHLREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 299:// V_LSHRREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 300:// V_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 301:// V_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 302:// V_MIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 303:// V_MAX_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 304:// V_MAX_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 305:// V_MIN_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 306:// V_MIN_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 307:// V_LDEXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 308:// V_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 309:// V_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 310:// V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 311:// V_DOT2C_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 312:// V_DOT2C_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 313:// V_DOT4C_I32_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 314:// V_DOT8C_I32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 315:// V_FMAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 316:// V_PK_FMAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 317:// V_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 448:// V_MAD_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 449:// V_MAD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 450:// V_MAD_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 451:// V_MAD_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 452:// V_CUBEID_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 453:// V_CUBESC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 454:// V_CUBETC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 455:// V_CUBEMA_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 456:// V_BFE_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 457:// V_BFE_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 458:// V_BFI_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 459:// V_FMA_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 460:// V_FMA_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 461:// V_LERP_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 462:// V_ALIGNBIT_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 463:// V_ALIGNBYTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 464:// V_MIN3_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 465:// V_MIN3_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 466:// V_MIN3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 467:// V_MAX3_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 468:// V_MAX3_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 469:// V_MAX3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 470:// V_MED3_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 471:// V_MED3_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 472:// V_MED3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 473:// V_SAD_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 474:// V_SAD_HI_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 475:// V_SAD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 476:// V_SAD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 477:// V_CVT_PK_U8_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 478:// V_DIV_FIXUP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 479:// V_DIV_FIXUP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 482:// V_DIV_FMAS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 483:// V_DIV_FMAS_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 484:// V_MSAD_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 485:// V_QSAD_PK_U16_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 486:// V_MQSAD_PK_U16_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 487:// V_MQSAD_U32_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+3,32),true,false); +break; +case 490:// V_MAD_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 491:// V_MAD_LEGACY_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 492:// V_MAD_LEGACY_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 493:// V_PERM_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 494:// V_FMA_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 495:// V_DIV_FIXUP_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 496:// V_CVT_PKACCUM_U8_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 497:// V_MAD_U32_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 498:// V_MAD_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 499:// V_XAD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 500:// V_MIN3_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 501:// V_MIN3_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 502:// V_MIN3_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 503:// V_MAX3_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 504:// V_MAX3_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 505:// V_MAX3_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 506:// V_MED3_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 507:// V_MED3_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 508:// V_MED3_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 509:// V_LSHL_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 510:// V_ADD_LSHL_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 511:// V_ADD3_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 512:// V_LSHL_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 513:// V_AND_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 514:// V_OR3_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 515:// V_MAD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 516:// V_MAD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 517:// V_MAD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 518:// V_FMA_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 519:// V_DIV_FIXUP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 628:// V_INTERP_P1LL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +break; +case 629:// V_INTERP_P1LV_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); +break; +case 630:// V_INTERP_P2_LEGACY_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); +break; +case 631:// V_INTERP_P2_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); +break; +case 640:// V_ADD_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 641:// V_MUL_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 642:// V_MIN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 643:// V_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 644:// V_LDEXP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 645:// V_MUL_LO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 646:// V_MUL_HI_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 647:// V_MUL_HI_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 648:// V_LDEXP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 649:// V_READLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); +break; +case 650:// V_WRITELANE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); +break; +case 651:// V_BCNT_U32_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 652:// V_MBCNT_LO_U32_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 653:// V_MBCNT_HI_U32_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 655:// V_LSHLREV_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 656:// V_LSHRREV_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 657:// V_ASHRREV_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 658:// V_TRIG_PREOP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 659:// V_BFM_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 660:// V_CVT_PKNORM_I16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 661:// V_CVT_PKNORM_U16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 662:// V_CVT_PKRTZ_F16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 663:// V_CVT_PK_U16_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 664:// V_CVT_PK_I16_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 665:// V_CVT_PKNORM_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 666:// V_CVT_PKNORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 668:// V_ADD_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 669:// V_SUB_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 670:// V_ADD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 671:// V_SUB_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 672:// V_PACK_B32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 16:// V_CMP_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 17:// V_CMPX_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 18:// V_CMP_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 19:// V_CMPX_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 20:// V_CMP_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 21:// V_CMPX_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 32:// V_CMP_F_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 33:// V_CMP_LT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 34:// V_CMP_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 35:// V_CMP_LE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 36:// V_CMP_GT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 37:// V_CMP_LG_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 38:// V_CMP_GE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 39:// V_CMP_O_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 40:// V_CMP_U_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 41:// V_CMP_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 42:// V_CMP_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 43:// V_CMP_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 44:// V_CMP_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 45:// V_CMP_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 46:// V_CMP_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 47:// V_CMP_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 48:// V_CMPX_F_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 49:// V_CMPX_LT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 50:// V_CMPX_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 51:// V_CMPX_LE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 52:// V_CMPX_GT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 53:// V_CMPX_LG_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 54:// V_CMPX_GE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 55:// V_CMPX_O_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 56:// V_CMPX_U_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 57:// V_CMPX_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 58:// V_CMPX_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 59:// V_CMPX_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 60:// V_CMPX_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 61:// V_CMPX_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 62:// V_CMPX_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 63:// V_CMPX_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 64:// V_CMP_F_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 65:// V_CMP_LT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 66:// V_CMP_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 67:// V_CMP_LE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 68:// V_CMP_GT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 69:// V_CMP_LG_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 70:// V_CMP_GE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 71:// V_CMP_O_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 72:// V_CMP_U_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 73:// V_CMP_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 74:// V_CMP_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 75:// V_CMP_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 76:// V_CMP_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 77:// V_CMP_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 78:// V_CMP_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 79:// V_CMP_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 80:// V_CMPX_F_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 81:// V_CMPX_LT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 82:// V_CMPX_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 83:// V_CMPX_LE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 84:// V_CMPX_GT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 85:// V_CMPX_LG_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 86:// V_CMPX_GE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 87:// V_CMPX_O_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 88:// V_CMPX_U_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 89:// V_CMPX_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 90:// V_CMPX_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 91:// V_CMPX_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 92:// V_CMPX_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 93:// V_CMPX_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 94:// V_CMPX_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 95:// V_CMPX_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 96:// V_CMP_F_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 97:// V_CMP_LT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 98:// V_CMP_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 99:// V_CMP_LE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 100:// V_CMP_GT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 101:// V_CMP_LG_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 102:// V_CMP_GE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 103:// V_CMP_O_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 104:// V_CMP_U_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 105:// V_CMP_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 106:// V_CMP_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 107:// V_CMP_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 108:// V_CMP_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 109:// V_CMP_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 110:// V_CMP_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 111:// V_CMP_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 112:// V_CMPX_F_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 113:// V_CMPX_LT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 114:// V_CMPX_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 115:// V_CMPX_LE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 116:// V_CMPX_GT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 117:// V_CMPX_LG_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 118:// V_CMPX_GE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 119:// V_CMPX_O_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 120:// V_CMPX_U_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 121:// V_CMPX_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 122:// V_CMPX_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 123:// V_CMPX_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 124:// V_CMPX_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 125:// V_CMPX_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 126:// V_CMPX_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 127:// V_CMPX_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 160:// V_CMP_F_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 161:// V_CMP_LT_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 162:// V_CMP_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 163:// V_CMP_LE_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 164:// V_CMP_GT_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 165:// V_CMP_NE_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 166:// V_CMP_GE_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 167:// V_CMP_T_I16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 168:// V_CMP_F_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 169:// V_CMP_LT_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 170:// V_CMP_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 171:// V_CMP_LE_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 172:// V_CMP_GT_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 173:// V_CMP_NE_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 174:// V_CMP_GE_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 175:// V_CMP_T_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 176:// V_CMPX_F_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 177:// V_CMPX_LT_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 178:// V_CMPX_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 179:// V_CMPX_LE_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 180:// V_CMPX_GT_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 181:// V_CMPX_NE_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 182:// V_CMPX_GE_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 183:// V_CMPX_T_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 184:// V_CMPX_F_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 185:// V_CMPX_LT_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 186:// V_CMPX_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 187:// V_CMPX_LE_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 188:// V_CMPX_GT_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 189:// V_CMPX_NE_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 190:// V_CMPX_GE_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 191:// V_CMPX_T_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 192:// V_CMP_F_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 193:// V_CMP_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 194:// V_CMP_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 195:// V_CMP_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 196:// V_CMP_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 197:// V_CMP_NE_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 198:// V_CMP_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 199:// V_CMP_T_I32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 200:// V_CMP_F_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 201:// V_CMP_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 202:// V_CMP_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 203:// V_CMP_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 204:// V_CMP_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 205:// V_CMP_NE_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 206:// V_CMP_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 207:// V_CMP_T_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 208:// V_CMPX_F_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 209:// V_CMPX_LT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 210:// V_CMPX_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 211:// V_CMPX_LE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 212:// V_CMPX_GT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 213:// V_CMPX_NE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 214:// V_CMPX_GE_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 215:// V_CMPX_T_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 216:// V_CMPX_F_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 217:// V_CMPX_LT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 218:// V_CMPX_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 219:// V_CMPX_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 220:// V_CMPX_GT_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 221:// V_CMPX_NE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 222:// V_CMPX_GE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 223:// V_CMPX_T_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 224:// V_CMP_F_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 225:// V_CMP_LT_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 226:// V_CMP_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 227:// V_CMP_LE_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 228:// V_CMP_GT_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 229:// V_CMP_NE_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 230:// V_CMP_GE_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 231:// V_CMP_T_I64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 232:// V_CMP_F_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 233:// V_CMP_LT_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 234:// V_CMP_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 235:// V_CMP_LE_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 236:// V_CMP_GT_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 237:// V_CMP_NE_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 238:// V_CMP_GE_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 239:// V_CMP_T_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +break; +case 240:// V_CMPX_F_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 241:// V_CMPX_LT_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 242:// V_CMPX_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 243:// V_CMPX_LE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 244:// V_CMPX_GT_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 245:// V_CMPX_NE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 246:// V_CMPX_GE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 247:// V_CMPX_T_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 248:// V_CMPX_F_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 249:// V_CMPX_LT_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 250:// V_CMPX_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 251:// V_CMPX_LE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 252:// V_CMPX_GT_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 253:// V_CMPX_NE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 254:// V_CMPX_GE_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 255:// V_CMPX_T_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP1Operands(){ +layout_ENC_VOP1 & layout = insn_layout.ENC_VOP1; +switch(layout.OP){ +case 0:// V_NOP +break; +case 1:// V_MOV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 2:// V_READFIRSTLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +break; +case 3:// V_CVT_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 4:// V_CVT_F64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 5:// V_CVT_F32_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 6:// V_CVT_F32_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 7:// V_CVT_U32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 8:// V_CVT_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 10:// V_CVT_F16_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 11:// V_CVT_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 12:// V_CVT_RPI_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 13:// V_CVT_FLR_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 14:// V_CVT_OFF_F32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 15:// V_CVT_F32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 16:// V_CVT_F64_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 17:// V_CVT_F32_UBYTE0 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 18:// V_CVT_F32_UBYTE1 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 19:// V_CVT_F32_UBYTE2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 20:// V_CVT_F32_UBYTE3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 21:// V_CVT_U32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 22:// V_CVT_F64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 23:// V_TRUNC_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 24:// V_CEIL_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 25:// V_RNDNE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 26:// V_FLOOR_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 27:// V_FRACT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 28:// V_TRUNC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 29:// V_CEIL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 30:// V_RNDNE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 31:// V_FLOOR_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 32:// V_EXP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 33:// V_LOG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 34:// V_RCP_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 35:// V_RCP_IFLAG_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 36:// V_RSQ_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 37:// V_RCP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 38:// V_RSQ_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 39:// V_SQRT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 40:// V_SQRT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 41:// V_SIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 42:// V_COS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 43:// V_NOT_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 44:// V_BFREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 45:// V_FFBH_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 46:// V_FFBL_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 47:// V_FFBH_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 48:// V_FREXP_EXP_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 49:// V_FREXP_MANT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 50:// V_FRACT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +break; +case 51:// V_FREXP_EXP_I32_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 52:// V_FREXP_MANT_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 53:// V_CLREXCP +break; +case 55:// V_SCREEN_PARTITION_4SE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 57:// V_CVT_F16_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 58:// V_CVT_F16_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 59:// V_CVT_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 60:// V_CVT_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 61:// V_RCP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 62:// V_SQRT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 63:// V_RSQ_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 64:// V_LOG_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 65:// V_EXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 66:// V_FREXP_MANT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 67:// V_FREXP_EXP_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 68:// V_FLOOR_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 69:// V_CEIL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 70:// V_TRUNC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 71:// V_RNDNE_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 72:// V_FRACT_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 73:// V_SIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 74:// V_COS_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 75:// V_EXP_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 76:// V_LOG_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 77:// V_CVT_NORM_I16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 78:// V_CVT_NORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +break; +case 79:// V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +break; +case 81:// V_SWAP_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2Operands(){ +layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; +switch(layout.OP){ +case 0:// V_CNDMASK_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 1:// V_ADD_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 2:// V_SUB_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 3:// V_SUBREV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 4:// V_MUL_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 5:// V_MUL_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 6:// V_MUL_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 7:// V_MUL_HI_I32_I24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 8:// V_MUL_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 9:// V_MUL_HI_U32_U24 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 10:// V_MIN_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 11:// V_MAX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 12:// V_MIN_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 13:// V_MAX_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 14:// V_MIN_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 15:// V_MAX_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 16:// V_LSHRREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 17:// V_ASHRREV_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 18:// V_LSHLREV_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 19:// V_AND_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 20:// V_OR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 21:// V_XOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 22:// V_MAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 25:// V_ADD_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 26:// V_SUB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 27:// V_SUBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 28:// V_ADDC_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 29:// V_SUBB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 30:// V_SUBBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +break; +case 31:// V_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 32:// V_SUB_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 33:// V_SUBREV_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 34:// V_MUL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 35:// V_MAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 38:// V_ADD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 39:// V_SUB_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 40:// V_SUBREV_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 41:// V_MUL_LO_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 42:// V_LSHLREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 43:// V_LSHRREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 44:// V_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 45:// V_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 46:// V_MIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 47:// V_MAX_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 48:// V_MAX_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 49:// V_MIN_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 50:// V_MIN_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 51:// V_LDEXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 52:// V_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 53:// V_SUB_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 54:// V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 55:// V_DOT2C_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 56:// V_DOT2C_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 57:// V_DOT4C_I32_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 58:// V_DOT8C_I32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 59:// V_FMAC_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 60:// V_PK_FMAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 61:// V_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2_LITERALOperands(){ +layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; +switch(layout.OP){ +case 23:// V_MADMK_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 24:// V_MADAK_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +break; +case 36:// V_MADMK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 37:// V_MADAK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3BOperands(){ +layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; +switch(layout.OP){ +case 281:// V_ADD_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 282:// V_SUB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 283:// V_SUBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 284:// V_ADDC_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 285:// V_SUBB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 286:// V_SUBBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +break; +case 480:// V_DIV_SCALE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 481:// V_DIV_SCALE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 488:// V_MAD_U64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +case 489:// V_MAD_I64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3POperands(){ +layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; +switch(layout.OP){ +case 0:// V_PK_MAD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 1:// V_PK_MUL_LO_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 2:// V_PK_ADD_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 3:// V_PK_SUB_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 4:// V_PK_LSHLREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 5:// V_PK_LSHRREV_B16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 6:// V_PK_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +break; +case 7:// V_PK_MAX_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 8:// V_PK_MIN_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 9:// V_PK_MAD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 10:// V_PK_ADD_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 11:// V_PK_SUB_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 12:// V_PK_MAX_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 13:// V_PK_MIN_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 14:// V_PK_FMA_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 15:// V_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 16:// V_PK_MUL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 17:// V_PK_MIN_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 18:// V_PK_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +break; +case 32:// V_MAD_MIX_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 33:// V_MAD_MIXLO_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 34:// V_MAD_MIXHI_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 35:// V_DOT2_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 38:// V_DOT2_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 39:// V_DOT2_U32_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 40:// V_DOT4_I32_I8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 41:// V_DOT4_U32_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 42:// V_DOT8_I32_I4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 43:// V_DOT8_U32_U4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +break; +case 88:// V_ACCVGPR_READ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); +break; +case 89:// V_ACCVGPR_WRITE +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3P_MFMAOperands(){ +layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; +switch(layout.OP){ +case 64:// V_MFMA_F32_32X32X1F32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 65:// V_MFMA_F32_16X16X1F32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 66:// V_MFMA_F32_4X4X1F32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 68:// V_MFMA_F32_32X32X2F32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 69:// V_MFMA_F32_16X16X4F32 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 72:// V_MFMA_F32_32X32X4F16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 73:// V_MFMA_F32_16X16X4F16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 74:// V_MFMA_F32_4X4X4F16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 76:// V_MFMA_F32_32X32X8F16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 77:// V_MFMA_F32_16X16X16F16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 80:// V_MFMA_I32_32X32X4I8 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 81:// V_MFMA_I32_16X16X4I8 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 82:// V_MFMA_I32_4X4X4I8 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 84:// V_MFMA_I32_32X32X8I8 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 85:// V_MFMA_I32_16X16X16I8 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 104:// V_MFMA_F32_32X32X2BF16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 105:// V_MFMA_F32_16X16X2BF16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 107:// V_MFMA_F32_4X4X2BF16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 108:// V_MFMA_F32_32X32X4BF16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +case 109:// V_MFMA_F32_16X16X8BF16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOPCOperands(){ +layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; +switch(layout.OP){ +case 16:// V_CMP_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 17:// V_CMPX_CLASS_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 18:// V_CMP_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 19:// V_CMPX_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 20:// V_CMP_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 21:// V_CMPX_CLASS_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 32:// V_CMP_F_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 33:// V_CMP_LT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 34:// V_CMP_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 35:// V_CMP_LE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 36:// V_CMP_GT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 37:// V_CMP_LG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 38:// V_CMP_GE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 39:// V_CMP_O_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 40:// V_CMP_U_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 41:// V_CMP_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 42:// V_CMP_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 43:// V_CMP_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 44:// V_CMP_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 45:// V_CMP_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 46:// V_CMP_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 47:// V_CMP_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 48:// V_CMPX_F_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 49:// V_CMPX_LT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 50:// V_CMPX_EQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 51:// V_CMPX_LE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 52:// V_CMPX_GT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 53:// V_CMPX_LG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 54:// V_CMPX_GE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 55:// V_CMPX_O_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 56:// V_CMPX_U_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 57:// V_CMPX_NGE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 58:// V_CMPX_NLG_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 59:// V_CMPX_NGT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 60:// V_CMPX_NLE_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 61:// V_CMPX_NEQ_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 62:// V_CMPX_NLT_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 63:// V_CMPX_TRU_F16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 64:// V_CMP_F_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 65:// V_CMP_LT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 66:// V_CMP_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 67:// V_CMP_LE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 68:// V_CMP_GT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 69:// V_CMP_LG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 70:// V_CMP_GE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 71:// V_CMP_O_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 72:// V_CMP_U_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 73:// V_CMP_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 74:// V_CMP_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 75:// V_CMP_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 76:// V_CMP_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 77:// V_CMP_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 78:// V_CMP_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 79:// V_CMP_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 80:// V_CMPX_F_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 81:// V_CMPX_LT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 82:// V_CMPX_EQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 83:// V_CMPX_LE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 84:// V_CMPX_GT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 85:// V_CMPX_LG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 86:// V_CMPX_GE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 87:// V_CMPX_O_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 88:// V_CMPX_U_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 89:// V_CMPX_NGE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 90:// V_CMPX_NLG_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 91:// V_CMPX_NGT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 92:// V_CMPX_NLE_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 93:// V_CMPX_NEQ_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 94:// V_CMPX_NLT_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 95:// V_CMPX_TRU_F32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 96:// V_CMP_F_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 97:// V_CMP_LT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 98:// V_CMP_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 99:// V_CMP_LE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 100:// V_CMP_GT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 101:// V_CMP_LG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 102:// V_CMP_GE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 103:// V_CMP_O_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 104:// V_CMP_U_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 105:// V_CMP_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 106:// V_CMP_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 107:// V_CMP_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 108:// V_CMP_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 109:// V_CMP_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 110:// V_CMP_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 111:// V_CMP_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 112:// V_CMPX_F_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 113:// V_CMPX_LT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 114:// V_CMPX_EQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 115:// V_CMPX_LE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 116:// V_CMPX_GT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 117:// V_CMPX_LG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 118:// V_CMPX_GE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 119:// V_CMPX_O_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 120:// V_CMPX_U_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 121:// V_CMPX_NGE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 122:// V_CMPX_NLG_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 123:// V_CMPX_NGT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 124:// V_CMPX_NLE_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 125:// V_CMPX_NEQ_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 126:// V_CMPX_NLT_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 127:// V_CMPX_TRU_F64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 160:// V_CMP_F_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 161:// V_CMP_LT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 162:// V_CMP_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 163:// V_CMP_LE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 164:// V_CMP_GT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 165:// V_CMP_NE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 166:// V_CMP_GE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 167:// V_CMP_T_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 168:// V_CMP_F_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 169:// V_CMP_LT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 170:// V_CMP_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 171:// V_CMP_LE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 172:// V_CMP_GT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 173:// V_CMP_NE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 174:// V_CMP_GE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 175:// V_CMP_T_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +break; +case 176:// V_CMPX_F_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 177:// V_CMPX_LT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 178:// V_CMPX_EQ_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 179:// V_CMPX_LE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 180:// V_CMPX_GT_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 181:// V_CMPX_NE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 182:// V_CMPX_GE_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 183:// V_CMPX_T_I16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 184:// V_CMPX_F_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 185:// V_CMPX_LT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 186:// V_CMPX_EQ_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 187:// V_CMPX_LE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 188:// V_CMPX_GT_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 189:// V_CMPX_NE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 190:// V_CMPX_GE_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 191:// V_CMPX_T_U16 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 192:// V_CMP_F_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 193:// V_CMP_LT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 194:// V_CMP_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 195:// V_CMP_LE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 196:// V_CMP_GT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 197:// V_CMP_NE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 198:// V_CMP_GE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 199:// V_CMP_T_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 200:// V_CMP_F_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 201:// V_CMP_LT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 202:// V_CMP_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 203:// V_CMP_LE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 204:// V_CMP_GT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 205:// V_CMP_NE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 206:// V_CMP_GE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 207:// V_CMP_T_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +break; +case 208:// V_CMPX_F_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 209:// V_CMPX_LT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 210:// V_CMPX_EQ_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 211:// V_CMPX_LE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 212:// V_CMPX_GT_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 213:// V_CMPX_NE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 214:// V_CMPX_GE_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 215:// V_CMPX_T_I32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 216:// V_CMPX_F_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 217:// V_CMPX_LT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 218:// V_CMPX_EQ_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 219:// V_CMPX_LE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 220:// V_CMPX_GT_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 221:// V_CMPX_NE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 222:// V_CMPX_GE_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 223:// V_CMPX_T_U32 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 224:// V_CMP_F_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 225:// V_CMP_LT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 226:// V_CMP_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 227:// V_CMP_LE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 228:// V_CMP_GT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 229:// V_CMP_NE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 230:// V_CMP_GE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 231:// V_CMP_T_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 232:// V_CMP_F_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 233:// V_CMP_LT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 234:// V_CMP_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 235:// V_CMP_LE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 236:// V_CMP_GT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 237:// V_CMP_NE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 238:// V_CMP_GE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 239:// V_CMP_T_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +break; +case 240:// V_CMPX_F_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 241:// V_CMPX_LT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 242:// V_CMPX_EQ_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 243:// V_CMPX_LE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 244:// V_CMPX_GT_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 245:// V_CMPX_NE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 246:// V_CMPX_GE_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 247:// V_CMPX_T_I64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 248:// V_CMPX_F_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 249:// V_CMPX_LT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 250:// V_CMPX_EQ_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 251:// V_CMPX_LE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 252:// V_CMPX_GT_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 253:// V_CMPX_NE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 254:// V_CMPX_GE_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +case 255:// V_CMPX_T_U64 +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +break; +} +} diff --git a/instructionAPI/src/Instruction.C b/instructionAPI/src/Instruction.C index bcc16621bf..e1badc6e05 100644 --- a/instructionAPI/src/Instruction.C +++ b/instructionAPI/src/Instruction.C @@ -59,7 +59,7 @@ using namespace NS_x86; #define DECODE_OPERANDS() \ do { \ - if (arch_decoded_from != Arch_cuda && arch_decoded_from != Arch_amdgpu_cdna2 && m_Operands.empty()) { \ + if (arch_decoded_from != Arch_cuda && arch_decoded_from != Arch_amdgpu_gfx908 && arch_decoded_from != Arch_amdgpu_cdna2 && m_Operands.empty()) { \ decodeOperands(); \ }\ }while(0) diff --git a/instructionAPI/src/InstructionCategories.C b/instructionAPI/src/InstructionCategories.C index 703e018c16..7fe6cf179d 100644 --- a/instructionAPI/src/InstructionCategories.C +++ b/instructionAPI/src/InstructionCategories.C @@ -44,6 +44,7 @@ namespace Dyninst case aarch64_op_ret: return c_ReturnInsn; case amdgpu_op_s_endpgm: // special treatment for endpgm + case amdgpu_gfx908_op_S_ENDPGM: // special treatment for endpgm case amdgpu_cdna2_op_S_ENDPGM: // special treatment for endpgm return c_GPUKernelExitInsn; case e_call: diff --git a/instructionAPI/src/InstructionDecoderImpl.C b/instructionAPI/src/InstructionDecoderImpl.C index 424f96f706..32090667da 100644 --- a/instructionAPI/src/InstructionDecoderImpl.C +++ b/instructionAPI/src/InstructionDecoderImpl.C @@ -34,6 +34,7 @@ #include "InstructionDecoder-power.h" #include "InstructionDecoder-aarch64.h" #include "AMDGPU/vega/InstructionDecoder-amdgpu-vega.h" +#include "AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h" #include "AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.h" #include "BinaryFunction.h" @@ -78,6 +79,8 @@ namespace Dyninst return Ptr(new InstructionDecoder_aarch64(a)); case Arch_amdgpu_vega: return Ptr(new InstructionDecoder_amdgpu_vega(a)); + case Arch_amdgpu_gfx908: + return Ptr(new InstructionDecoder_amdgpu_gfx908(a)); case Arch_amdgpu_cdna2: return Ptr(new InstructionDecoder_amdgpu_cdna2(a)); default: diff --git a/instructionAPI/src/Register.C b/instructionAPI/src/Register.C index f70ebcf9c7..c87475d4dc 100644 --- a/instructionAPI/src/Register.C +++ b/instructionAPI/src/Register.C @@ -92,7 +92,7 @@ namespace Dyninst std::string RegisterAST::format(Architecture arch, formatStyle f) const { - if(arch == Arch_amdgpu_vega || arch == Arch_amdgpu_cdna2){ + if(arch == Arch_amdgpu_vega || arch == Arch_amdgpu_gfx908 || arch == Arch_amdgpu_cdna2){ return RegisterAST::format(f); } return ArchSpecificFormatter::getFormatter(arch).formatRegister(m_Reg.name()); @@ -117,22 +117,22 @@ namespace Dyninst // are the two *::VGPR constants DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_LOGICAL_OP - if( regClass == amdgpu_cdna2::SGPR || regClass == amdgpu_vega::SGPR){ + if(regClass == amdgpu_gfx908::SGPR || regClass == amdgpu_cdna2::SGPR || regClass == amdgpu_vega::SGPR){ return "S["+to_string(id) + ":" + to_string(id+size-1)+"]"; } - if(regClass == amdgpu_cdna2::VGPR || regClass == amdgpu_vega::VGPR){ + if(regClass == amdgpu_gfx908::VGPR || regClass == amdgpu_cdna2::VGPR || regClass == amdgpu_vega::VGPR){ return "V["+to_string(id) + ":" + to_string(id+size-1)+"]"; } DYNINST_DIAGNOSTIC_END_SUPPRESS_LOGICAL_OP - if(regClass == amdgpu_cdna2::ACC_VGPR){ + if(regClass == amdgpu_gfx908::ACC_VGPR || regClass == amdgpu_cdna2::ACC_VGPR){ return "ACC["+to_string(id) + ":" + to_string(id+size-1)+"]"; } - if(m_Reg == amdgpu_cdna2::vcc_lo || m_Reg == amdgpu_vega::vcc_lo) + if(m_Reg == amdgpu_gfx908::vcc_lo || m_Reg == amdgpu_cdna2::vcc_lo || m_Reg == amdgpu_vega::vcc_lo) return "VCC"; - if(m_Reg == amdgpu_cdna2::exec_lo || m_Reg == amdgpu_vega::exec_lo) + if(m_Reg == amdgpu_gfx908::exec_lo || m_Reg == amdgpu_cdna2::exec_lo || m_Reg == amdgpu_vega::exec_lo) return "EXEC"; name += "["+to_string(m_Low)+":"+to_string(m_High)+"]"; diff --git a/instructionAPI/src/amdgpu_branchinsn_table.h b/instructionAPI/src/amdgpu_branchinsn_table.h index c6ecc58feb..3df3e4944a 100644 --- a/instructionAPI/src/amdgpu_branchinsn_table.h +++ b/instructionAPI/src/amdgpu_branchinsn_table.h @@ -14,6 +14,22 @@ case amdgpu_op_s_cbranch_g_fork: case amdgpu_op_s_cbranch_i_fork: case amdgpu_op_s_call_b64: + case amdgpu_gfx908_op_S_BRANCH: + case amdgpu_gfx908_op_S_CBRANCH_SCC0: + case amdgpu_gfx908_op_S_CBRANCH_SCC1: + case amdgpu_gfx908_op_S_CBRANCH_VCCZ: + case amdgpu_gfx908_op_S_CBRANCH_VCCNZ: + case amdgpu_gfx908_op_S_CBRANCH_EXECZ: + case amdgpu_gfx908_op_S_CBRANCH_EXECNZ: + case amdgpu_gfx908_op_S_CBRANCH_CDBGSYS: + case amdgpu_gfx908_op_S_CBRANCH_CDBGUSER: + case amdgpu_gfx908_op_S_CBRANCH_CDBGSYS_AND_USER: + case amdgpu_gfx908_op_S_SETPC_B64: + case amdgpu_gfx908_op_S_SWAPPC_B64: + case amdgpu_gfx908_op_S_RFE_B64: + case amdgpu_gfx908_op_S_CBRANCH_G_FORK: + case amdgpu_gfx908_op_S_CBRANCH_I_FORK: + case amdgpu_gfx908_op_S_CALL_B64: case amdgpu_cdna2_op_S_BRANCH: case amdgpu_cdna2_op_S_CBRANCH_SCC0: case amdgpu_cdna2_op_S_CBRANCH_SCC1: diff --git a/instructionAPI/src/debug_decode.C b/instructionAPI/src/debug_decode.C new file mode 100644 index 0000000000..79a948df4e --- /dev/null +++ b/instructionAPI/src/debug_decode.C @@ -0,0 +1,77 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#include +#include +#include + +#include "debug_decode.h" + +using namespace Dyninst::InstructionAPI; + +int Dyninst::InstructionAPI::dyn_debug_decoding = 0; +int Dyninst::InstructionAPI::dyn_debug_initialized = 0; + +#if defined(_OPENMP) +#include +#endif + +dyn_tls FILE* log_file = NULL; + +int Dyninst::InstructionAPI::decoding_printf_int(const char *format, ...); +int Dyninst::InstructionAPI::decoding_printf_int(const char *format, ...) +{ + if(!dyn_debug_initialized) { + if(getenv("DYNINST_DEBUG_DECODING")) + dyn_debug_decoding = 1; + dyn_debug_initialized = 1; + } + + if(!dyn_debug_decoding) return 0; + if(NULL == format) return -1; + if (log_file == NULL) { + char filename[128]; +#if defined(_OPENMP) + snprintf(filename, 128, "%s-%d.txt", getenv("DYNINST_DEBUG_DECODING"), omp_get_thread_num()); +#else + snprintf(filename, 128, "%s-%d.txt", getenv("DYNINST_DEBUG_DECODING"), 0); +#endif + + log_file = fopen(filename, "w"); + } + + va_list va; + va_start(va,format); + int ret = vfprintf(log_file, format, va); + fflush(log_file); + va_end(va); + + return ret; +} + diff --git a/instructionAPI/src/debug_decode.h b/instructionAPI/src/debug_decode.h new file mode 100644 index 0000000000..770936550d --- /dev/null +++ b/instructionAPI/src/debug_decode.h @@ -0,0 +1,52 @@ +/* + * See the dyninst/COPYRIGHT file for copyright information. + * + * We provide the Paradyn Tools (below described as "Paradyn") + * on an AS IS basis, and do not warrant its validity or performance. + * We reserve the right to update, modify, or discontinue this + * software at any time. We shall have no obligation to supply such + * updates or modifications or any other form of support to you. + * + * By your use of Paradyn, you understand and agree that we (or any + * other person or entity with proprietary rights in Paradyn) are + * under no obligation to provide either maintenance services, + * update services, notices of latent defects, or correction of + * defects for Paradyn. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ +#ifndef _INSTRUCTIONAPI_DEBUG_ +#define _INSTRUCTIONAPI_DEBUG_ + +#include +#include +#include +#include "compiler_annotations.h" + +namespace Dyninst { +namespace InstructionAPI { + extern int INSTRUCTION_EXPORT decoding_printf_int(const char *format, ...) + DYNINST_PRINTF_ANNOTATION(1, 2); + extern int dyn_debug_decoding; + extern int dyn_debug_initialized; + +#define decoding_cerr if (dyn_debug_decoding) cerr + +#define dyn_debug_printf(debug_sys, ...) do { if(!dyn_debug_initialized || dyn_debug_##debug_sys) debug_sys##_printf_int(__VA_ARGS__); } while(0) + +#define decoding_printf(...) dyn_debug_printf(decoding, __VA_ARGS__) +} +} +#endif diff --git a/parseAPI/src/IA_IAPI.C b/parseAPI/src/IA_IAPI.C index 948be3001f..fca705a7a7 100644 --- a/parseAPI/src/IA_IAPI.C +++ b/parseAPI/src/IA_IAPI.C @@ -121,8 +121,7 @@ IA_IAPI* IA_IAPI::makePlatformIA_IAPI(Architecture arch, case Arch_aarch64: return new IA_aarch64(dec_, where_, o, r, isrc, curBlk_); case Arch_amdgpu_vega: - - return new IA_amdgpu(dec_, where_, o, r, isrc, curBlk_); + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: return new IA_amdgpu(dec_, where_, o, r, isrc, curBlk_); @@ -146,6 +145,7 @@ void IA_IAPI::initASTs() framePtr[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_ppc64))); framePtr[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_aarch64))); framePtr[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_amdgpu_vega))); + framePtr[Arch_amdgpu_gfx908] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_amdgpu_gfx908))); framePtr[Arch_amdgpu_cdna2] = RegisterAST::Ptr(new RegisterAST(MachRegister::getFramePointer(Arch_amdgpu_cdna2))); } if(stackPtr.empty()) @@ -156,6 +156,7 @@ void IA_IAPI::initASTs() stackPtr[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_ppc64))); stackPtr[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_aarch64))); stackPtr[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_amdgpu_vega))); + stackPtr[Arch_amdgpu_gfx908] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_amdgpu_gfx908))); stackPtr[Arch_amdgpu_cdna2] = RegisterAST::Ptr(new RegisterAST(MachRegister::getStackPointer(Arch_amdgpu_cdna2))); } if(thePC.empty()) @@ -166,6 +167,7 @@ void IA_IAPI::initASTs() thePC[Arch_ppc64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_ppc64))); thePC[Arch_aarch64] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_aarch64))); thePC[Arch_amdgpu_vega] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_amdgpu_vega))); + thePC[Arch_amdgpu_gfx908] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_amdgpu_gfx908))); thePC[Arch_amdgpu_cdna2] = RegisterAST::Ptr(new RegisterAST(MachRegister::getPC(Arch_amdgpu_cdna2))); } ANNOTATE_HAPPENS_BEFORE(&IA_IAPI::ptrInit); diff --git a/parseAPI/src/IA_amdgpu.C b/parseAPI/src/IA_amdgpu.C index 463fe7f9c7..26f1cda31e 100644 --- a/parseAPI/src/IA_amdgpu.C +++ b/parseAPI/src/IA_amdgpu.C @@ -74,7 +74,7 @@ bool IA_amdgpu::isNop() const { Instruction ci = curInsn(); auto id = ci.getOperation().getID(); - if(id == amdgpu_op_s_nop || id == amdgpu_cdna2_op_S_NOP ) + if(id == amdgpu_op_s_nop || id == amdgpu_gfx908_op_S_NOP || id == amdgpu_cdna2_op_S_NOP ) return true; return false; } diff --git a/parseAPI/src/Parser.C b/parseAPI/src/Parser.C index 14fdb2b823..4ea5891198 100644 --- a/parseAPI/src/Parser.C +++ b/parseAPI/src/Parser.C @@ -1767,6 +1767,13 @@ Parser::parse_frame_one_iteration(ParseFrame &frame, bool recursive) { // this is special treatment for non-returning instruction // examples are amdgpu_op_s_endpgm and amddgpu_op_s_endpgm_saved //cout << "calling endblock for non-returning instruction " << std::hex <getAddr() << endl; + // + + + parsing_printf("[%s:%d] gpu exit insn 0x%lx: %s \n", + FILE__,__LINE__,curAddr, ah->getInstruction().format().c_str() ); + + end_block(cur,ahPtr); break; } diff --git a/parseAPI/src/SymbolicExpression.C b/parseAPI/src/SymbolicExpression.C index b9f556f28a..f22373a4be 100644 --- a/parseAPI/src/SymbolicExpression.C +++ b/parseAPI/src/SymbolicExpression.C @@ -423,6 +423,7 @@ Address SymbolicExpression::PCValue(Address cur, size_t insnSize, Architecture a case Arch_x86: case Arch_x86_64: case Arch_amdgpu_vega: + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: return cur + insnSize; case Arch_aarch64: diff --git a/proccontrol/src/process.C b/proccontrol/src/process.C index 8b68f265ea..81f753731e 100644 --- a/proccontrol/src/process.C +++ b/proccontrol/src/process.C @@ -1934,6 +1934,7 @@ int int_process::getAddressWidth() case Arch_intelGen9: return 8; case Arch_amdgpu_vega: // according to the vega architecture, there are 32/64 address mode + case Arch_amdgpu_gfx908: case Arch_amdgpu_cdna2: return 8; case Arch_none: From 63d83f00b0bc43efe05e5f00d7d84786236c31c5 Mon Sep 17 00:00:00 2001 From: Hsuan-Heng Wu Date: Tue, 5 Jul 2022 21:05:36 -0500 Subject: [PATCH 164/505] fix compiler warnings for unused parameter and unused variable for gfx908 --- .../gfx908/amdgpu_gfx908_decoder_impl.C | 1 - .../src/AMDGPU/gfx908/decodeOperands.C | 82 +++++++++---------- .../src/AMDGPU/gfx908/decodeOperands.h | 82 +++++++++---------- 3 files changed, 82 insertions(+), 83 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C index 8727c7a553..4fab484900 100644 --- a/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C +++ b/instructionAPI/src/AMDGPU/gfx908/amdgpu_gfx908_decoder_impl.C @@ -1989,7 +1989,6 @@ void InstructionDecoder_amdgpu_gfx908::decodeENC_MIMG(){ } void InstructionDecoder_amdgpu_gfx908::decodeENC_EXP(){ insn_size = 8; - layout_ENC_EXP & layout = insn_layout.ENC_EXP; } void InstructionDecoder_amdgpu_gfx908::decodeENC_FLAT(){ insn_size = 8; diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C index 0f85a19260..46eae153ae 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C @@ -1,4 +1,4 @@ -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); @@ -259,7 +259,7 @@ case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ATTR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ATTR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::attr0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::attr1,0,opr_size); @@ -297,20 +297,20 @@ case 32 : return makeRegisterExpression(amdgpu_gfx908::attr32,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_all,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t opr_size){ switch(input){ case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PARAM(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PARAM(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::p10,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::p20,0,opr_size); @@ -318,13 +318,13 @@ case 2 : return makeRegisterExpression(amdgpu_gfx908::p0,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PC(uint64_t input, uint32_t ){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::pc_all); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -456,20 +456,20 @@ case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_EXEC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size){ switch(input){ case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_M0(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size){ switch(input){ case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -576,7 +576,7 @@ case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SMEM_OFFSET(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SMEM_OFFSET(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -706,7 +706,7 @@ case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -1194,7 +1194,7 @@ case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); @@ -1455,7 +1455,7 @@ case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size){ switch(input){ case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); @@ -1806,7 +1806,7 @@ case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLDS(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLDS(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -2293,7 +2293,7 @@ case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLIT(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -2780,7 +2780,7 @@ case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_siz default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_SIMPLE(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -3266,7 +3266,7 @@ case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); @@ -3527,7 +3527,7 @@ case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); @@ -4044,7 +4044,7 @@ case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -4173,7 +4173,7 @@ case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG_NOVCC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG_NOVCC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -4300,7 +4300,7 @@ case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -4531,7 +4531,7 @@ case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_0_63_INLINES(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_0_63_INLINES(uint64_t input, uint32_t ){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -4600,7 +4600,7 @@ case 191 : return Immediate::makeImmediate(Result(u32, 63)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_INLINES(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_INLINES(uint64_t input, uint32_t ){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -4695,7 +4695,7 @@ case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_LANESEL(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -4889,7 +4889,7 @@ case 191 : return Immediate::makeImmediate(Result(u32, 63)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_NOLIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); @@ -5119,7 +5119,7 @@ case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t opr_size){ switch(input){ case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); @@ -5128,25 +5128,25 @@ case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_ default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t opr_size){ switch(input){ case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LDS(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LDS(uint64_t input, uint32_t opr_size){ switch(input){ case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t opr_size){ switch(input){ case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t opr_size){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -5249,25 +5249,25 @@ case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t opr_size){ switch(input){ case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t opr_size){ switch(input){ case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t opr_size){ switch(input){ case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TGT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TGT(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::mrt0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::mrt1,0,opr_size); @@ -5318,7 +5318,7 @@ case 63 : return makeRegisterExpression(amdgpu_gfx908::param31,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TRAP(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TRAP(uint64_t input, uint32_t opr_size){ switch(input){ case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); @@ -5339,20 +5339,20 @@ case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC(uint64_t input, uint32_t ){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::vcc); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC_LOHI(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC_LOHI(uint64_t input, uint32_t opr_size){ switch(input){ case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); @@ -5613,7 +5613,7 @@ case 255 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR_OR_LDS(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t opr_size){ switch(input){ case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); @@ -5875,7 +5875,7 @@ case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_XNACK_MASK_LOHI(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t opr_size){ switch(input){ case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h index 9aed56c56f..82faf3a7cc 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h @@ -1,41 +1,41 @@ -Expression::Ptr decodeOPR_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_ATTR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_PARAM(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_PC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST_M0(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SREG(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_LDS(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_TGT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_TRAP(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VCC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_ATTR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_PARAM(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_PC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LDS(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_TGT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_TRAP(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t opr_size ); From 656c7368a9d7ff8100b211527f14bcd8d573c94b Mon Sep 17 00:00:00 2001 From: Hsuan-Heng Wu Date: Tue, 5 Jul 2022 21:10:08 -0500 Subject: [PATCH 165/505] fix compiler warning for unused parameter and unused variable for cdna2 --- .../src/AMDGPU/cdna2/decodeOperands.C | 82 +++++++++---------- .../src/AMDGPU/cdna2/decodeOperands.h | 82 +++++++++---------- 2 files changed, 82 insertions(+), 82 deletions(-) diff --git a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C index a27ced6083..429cab0b8a 100644 --- a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C +++ b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.C @@ -1,4 +1,4 @@ -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 512 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); case 513 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); @@ -259,7 +259,7 @@ case 767 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_ATTR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_ATTR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::attr0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::attr1,0,opr_size); @@ -297,20 +297,20 @@ case 32 : return makeRegisterExpression(amdgpu_cdna2::attr32,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_FLAT_SCRATCH(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_all,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t opr_size){ switch(input){ case 102 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_lo,0,opr_size); case 103 : return makeRegisterExpression(amdgpu_cdna2::flat_scratch_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PARAM(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PARAM(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::p10,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::p20,0,opr_size); @@ -318,13 +318,13 @@ case 2 : return makeRegisterExpression(amdgpu_cdna2::p0,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PC(uint64_t input,uint32_t){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_PC(uint64_t input, uint32_t ){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::pc_all); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -456,20 +456,20 @@ case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST_EXEC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size){ switch(input){ case 126 : return makeRegisterExpression(amdgpu_cdna2::exec_lo,0,opr_size); case 127 : return makeRegisterExpression(amdgpu_cdna2::exec_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST_M0(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size){ switch(input){ case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -576,7 +576,7 @@ case 101 : return makeRegisterExpression(amdgpu_cdna2::s101,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SMEM_OFFSET(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SMEM_OFFSET(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -706,7 +706,7 @@ case 124 : return makeRegisterExpression(amdgpu_cdna2::m0,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -1193,7 +1193,7 @@ case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 768 : return makeRegisterExpression(amdgpu_cdna2::acc0,0,opr_size); case 769 : return makeRegisterExpression(amdgpu_cdna2::acc1,0,opr_size); @@ -1454,7 +1454,7 @@ case 1023 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_NOLDS(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_NOLDS(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -1941,7 +1941,7 @@ case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_NOLIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_NOLIT(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -2427,7 +2427,7 @@ case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_SIMPLE(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -2913,7 +2913,7 @@ case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); @@ -3174,7 +3174,7 @@ case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); @@ -3691,7 +3691,7 @@ case 1023 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size){ switch(input){ case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); @@ -4298,7 +4298,7 @@ case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SREG(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SREG(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -4427,7 +4427,7 @@ case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SREG_NOVCC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SREG_NOVCC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -4554,7 +4554,7 @@ case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -4785,7 +4785,7 @@ case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_0_63_INLINES(uint64_t input,uint32_t){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_0_63_INLINES(uint64_t input, uint32_t ){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -4854,7 +4854,7 @@ case 191 : return Immediate::makeImmediate(Result(u32, 63)); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_INLINES(uint64_t input,uint32_t){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_INLINES(uint64_t input, uint32_t ){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -4949,7 +4949,7 @@ case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_LANESEL(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -5143,7 +5143,7 @@ case 191 : return Immediate::makeImmediate(Result(u32, 63)); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_NOLIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::s0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::s1,0,opr_size); @@ -5373,7 +5373,7 @@ case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id, default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t opr_size){ switch(input){ case 235 : return makeRegisterExpression(amdgpu_cdna2::src_shared_base,0,opr_size); case 236 : return makeRegisterExpression(amdgpu_cdna2::src_shared_limit,0,opr_size); @@ -5382,19 +5382,19 @@ case 238 : return makeRegisterExpression(amdgpu_cdna2::src_private_limit,0,opr_s default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t opr_size){ switch(input){ case 252 : return makeRegisterExpression(amdgpu_cdna2::src_execz,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t opr_size){ switch(input){ case 255 : return makeRegisterExpression(amdgpu_cdna2::src_literal,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t opr_size){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -5497,25 +5497,25 @@ case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id, default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t opr_size){ switch(input){ case 239 : return makeRegisterExpression(amdgpu_cdna2::src_pops_exiting_wave_id,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t opr_size){ switch(input){ case 253 : return makeRegisterExpression(amdgpu_cdna2::src_scc,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t opr_size){ switch(input){ case 251 : return makeRegisterExpression(amdgpu_cdna2::src_vccz,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_TGT(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_TGT(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::mrt0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::mrt1,0,opr_size); @@ -5566,7 +5566,7 @@ case 63 : return makeRegisterExpression(amdgpu_cdna2::param31,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_TRAP(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_TRAP(uint64_t input, uint32_t opr_size){ switch(input){ case 108 : return makeRegisterExpression(amdgpu_cdna2::ttmp0,0,opr_size); case 109 : return makeRegisterExpression(amdgpu_cdna2::ttmp1,0,opr_size); @@ -5587,20 +5587,20 @@ case 123 : return makeRegisterExpression(amdgpu_cdna2::ttmp15,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC(uint64_t input,uint32_t){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC(uint64_t input, uint32_t ){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::vcc); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC_LOHI(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VCC_LOHI(uint64_t input, uint32_t opr_size){ switch(input){ case 106 : return makeRegisterExpression(amdgpu_cdna2::vcc_lo,0,opr_size); case 107 : return makeRegisterExpression(amdgpu_cdna2::vcc_hi,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); @@ -5861,7 +5861,7 @@ case 255 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR_OR_ACCVGPR(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); case 1 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); @@ -6378,7 +6378,7 @@ case 767 : return makeRegisterExpression(amdgpu_cdna2::acc255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR_OR_LDS(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t opr_size){ switch(input){ case 256 : return makeRegisterExpression(amdgpu_cdna2::v0,0,opr_size); case 257 : return makeRegisterExpression(amdgpu_cdna2::v1,0,opr_size); @@ -6639,7 +6639,7 @@ case 511 : return makeRegisterExpression(amdgpu_cdna2::v255,0,opr_size); default: return makeRegisterExpression(amdgpu_cdna2::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_XNACK_MASK_LOHI(uint64_t input,uint32_t opr_size ){ +Expression::Ptr InstructionDecoder_amdgpu_cdna2::decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t opr_size){ switch(input){ case 104 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_lo,0,opr_size); case 105 : return makeRegisterExpression(amdgpu_cdna2::xnack_mask_hi,0,opr_size); diff --git a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h index 8533c5a99a..175b97822b 100644 --- a/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h +++ b/instructionAPI/src/AMDGPU/cdna2/decodeOperands.h @@ -1,41 +1,41 @@ -Expression::Ptr decodeOPR_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_ATTR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_PARAM(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_PC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST_M0(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SREG(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_TGT(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_TRAP(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VCC(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR_OR_ACCVGPR(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input ,uint32_t opr_size ); -Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input ,uint32_t opr_size ); +Expression::Ptr decodeOPR_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_ATTR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_PARAM(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_PC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_TGT(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_TRAP(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t opr_size ); From 1701ab375200a37861495a24ed30f679ae36bf25 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Wed, 20 Jul 2022 08:19:33 -0500 Subject: [PATCH 166/505] updated based on new xml-isa drop --- instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index 21d2ad3ffd..634672251f 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -9907,8 +9907,8 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); break; case 480:// V_DIV_SCALE_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); @@ -9916,8 +9916,8 @@ break; case 481:// V_DIV_SCALE_F64 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); From 00e9c17818ebec948f303e8a679b7aa434f7aca4 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 6 Sep 2022 18:26:35 -0500 Subject: [PATCH 167/505] fix decoding of operand for v_div_scale based on 220804 isa drop --- instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index 634672251f..21d2ad3ffd 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -9907,8 +9907,8 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); break; case 480:// V_DIV_SCALE_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); @@ -9916,8 +9916,8 @@ break; case 481:// V_DIV_SCALE_F64 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); From bbbcbc2617e7f0fe2c6f2be1d7fff486e6089d6a Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 6 Sep 2022 18:36:21 -0500 Subject: [PATCH 168/505] revert changes related to adding debug interface --- instructionAPI/CMakeLists.txt | 1 - .../gfx908/InstructionDecoder-amdgpu-gfx908.C | 4 - instructionAPI/src/debug_decode.C | 77 ------------------- instructionAPI/src/debug_decode.h | 52 ------------- 4 files changed, 134 deletions(-) delete mode 100644 instructionAPI/src/debug_decode.C delete mode 100644 instructionAPI/src/debug_decode.h diff --git a/instructionAPI/CMakeLists.txt b/instructionAPI/CMakeLists.txt index 337b3f903c..64940c4324 100644 --- a/instructionAPI/CMakeLists.txt +++ b/instructionAPI/CMakeLists.txt @@ -6,7 +6,6 @@ include_directories( ${PROJECT_SOURCE_DIR}/instructionAPI/src/AMDGPU/vega) set(SRC_LIST - src/debug_decode.C src/Instruction.C src/InstructionAST.C src/Operation.C diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C index 852743bda0..cc2d971629 100644 --- a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C @@ -30,7 +30,6 @@ #include "Ternary.h" #include "InstructionDecoder-amdgpu-gfx908.h" -#include "debug_decode.h" namespace Dyninst { namespace InstructionAPI { @@ -216,7 +215,6 @@ namespace Dyninst { imm_at_64 = get32bit(b,8); insn_long = ( ((uint64_t) insn_high) << 32) | insn; - decoding_printf("[%s:%d]: setting up insnword, bits = %llu\n",FILE__,__LINE__, insn_long ); } @@ -239,7 +237,6 @@ namespace Dyninst { //cout << "Is Branch Instruction !! , name = " << insn_in_progress -> getOperation().mnemonic << endl; //std::mem_fun(decode_lookup_table[instr_family])(this); } - decoding_printf("[%s:%d]: decoded instruction = %s\n",FILE__,__LINE__, insn_in_progress->getOperation().mnemonic.c_str() ); b.start += insn_in_progress->size(); return *insn_in_progress; } @@ -249,7 +246,6 @@ namespace Dyninst { InstructionDecoder::buffer b(insn_to_complete->ptr(), insn_to_complete->size()); setupInsnWord(b); mainDecode(); - decoding_printf("[%s:%d]: decoded instruction = %s\n",FILE__,__LINE__, insn_in_progress->getOperation().mnemonic.c_str() ); cout.clear(); Instruction* iptr = const_cast(insn_to_complete); *iptr = *(insn_in_progress.get()); diff --git a/instructionAPI/src/debug_decode.C b/instructionAPI/src/debug_decode.C deleted file mode 100644 index 79a948df4e..0000000000 --- a/instructionAPI/src/debug_decode.C +++ /dev/null @@ -1,77 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include -#include -#include - -#include "debug_decode.h" - -using namespace Dyninst::InstructionAPI; - -int Dyninst::InstructionAPI::dyn_debug_decoding = 0; -int Dyninst::InstructionAPI::dyn_debug_initialized = 0; - -#if defined(_OPENMP) -#include -#endif - -dyn_tls FILE* log_file = NULL; - -int Dyninst::InstructionAPI::decoding_printf_int(const char *format, ...); -int Dyninst::InstructionAPI::decoding_printf_int(const char *format, ...) -{ - if(!dyn_debug_initialized) { - if(getenv("DYNINST_DEBUG_DECODING")) - dyn_debug_decoding = 1; - dyn_debug_initialized = 1; - } - - if(!dyn_debug_decoding) return 0; - if(NULL == format) return -1; - if (log_file == NULL) { - char filename[128]; -#if defined(_OPENMP) - snprintf(filename, 128, "%s-%d.txt", getenv("DYNINST_DEBUG_DECODING"), omp_get_thread_num()); -#else - snprintf(filename, 128, "%s-%d.txt", getenv("DYNINST_DEBUG_DECODING"), 0); -#endif - - log_file = fopen(filename, "w"); - } - - va_list va; - va_start(va,format); - int ret = vfprintf(log_file, format, va); - fflush(log_file); - va_end(va); - - return ret; -} - diff --git a/instructionAPI/src/debug_decode.h b/instructionAPI/src/debug_decode.h deleted file mode 100644 index 770936550d..0000000000 --- a/instructionAPI/src/debug_decode.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - * See the dyninst/COPYRIGHT file for copyright information. - * - * We provide the Paradyn Tools (below described as "Paradyn") - * on an AS IS basis, and do not warrant its validity or performance. - * We reserve the right to update, modify, or discontinue this - * software at any time. We shall have no obligation to supply such - * updates or modifications or any other form of support to you. - * - * By your use of Paradyn, you understand and agree that we (or any - * other person or entity with proprietary rights in Paradyn) are - * under no obligation to provide either maintenance services, - * update services, notices of latent defects, or correction of - * defects for Paradyn. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef _INSTRUCTIONAPI_DEBUG_ -#define _INSTRUCTIONAPI_DEBUG_ - -#include -#include -#include -#include "compiler_annotations.h" - -namespace Dyninst { -namespace InstructionAPI { - extern int INSTRUCTION_EXPORT decoding_printf_int(const char *format, ...) - DYNINST_PRINTF_ANNOTATION(1, 2); - extern int dyn_debug_decoding; - extern int dyn_debug_initialized; - -#define decoding_cerr if (dyn_debug_decoding) cerr - -#define dyn_debug_printf(debug_sys, ...) do { if(!dyn_debug_initialized || dyn_debug_##debug_sys) debug_sys##_printf_int(__VA_ARGS__); } while(0) - -#define decoding_printf(...) dyn_debug_printf(decoding, __VA_ARGS__) -} -} -#endif From 65d163b8528d88d4928e9d88d5c30a3d1f844d5f Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Fri, 21 Oct 2022 15:59:33 -0500 Subject: [PATCH 169/505] compress finalizeOperands.C by combining cases with same decoding logic --- .../src/AMDGPU/gfx908/finalizeOperands.C | 13171 +++------------- 1 file changed, 2084 insertions(+), 11087 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index 21d2ad3ffd..d0b6027fd1 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -1,11463 +1,2460 @@ void InstructionDecoder_amdgpu_gfx908::finalizeENC_DSOperands(){ layout_ENC_DS & layout = insn_layout.ENC_DS; switch(layout.OP){ -case 0:// DS_ADD_U32 +case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 18:case 19:case 21:case 30:case 31:case 84:case 85: +//DS_ADD_U32,DS_SUB_U32,DS_RSUB_U32,DS_INC_U32,DS_DEC_U32,DS_MIN_I32,DS_MAX_I32,DS_MIN_U32,DS_MAX_U32,DS_AND_B32,DS_OR_B32,DS_XOR_B32,DS_WRITE_B32,DS_MIN_F32,DS_MAX_F32,DS_ADD_F32,DS_WRITE_B8,DS_WRITE_B16,DS_WRITE_B8_D16_HI,DS_WRITE_B16_D16_HI insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); break; -case 1:// DS_SUB_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 2:// DS_RSUB_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 3:// DS_INC_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 4:// DS_DEC_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 5:// DS_MIN_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 6:// DS_MAX_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 7:// DS_MIN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 8:// DS_MAX_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 9:// DS_AND_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 10:// DS_OR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 11:// DS_XOR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 12:// DS_MSKOR_B32 +case 12:case 14:case 15:case 16:case 17: +//DS_MSKOR_B32,DS_WRITE2_B32,DS_WRITE2ST64_B32,DS_CMPST_B32,DS_CMPST_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); break; -case 13:// DS_WRITE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +case 20: +//DS_NOP break; -case 14:// DS_WRITE2_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 29:case 153:case 155:case 157: +//DS_WRITE_ADDTID_B32,DS_GWS_INIT,DS_GWS_SEMA_BR,DS_GWS_BARRIER insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 15:// DS_WRITE2ST64_B32 +case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 45:case 50:case 51:case 53:case 62:case 63: +//DS_ADD_RTN_U32,DS_SUB_RTN_U32,DS_RSUB_RTN_U32,DS_INC_RTN_U32,DS_DEC_RTN_U32,DS_MIN_RTN_I32,DS_MAX_RTN_I32,DS_MIN_RTN_U32,DS_MAX_RTN_U32,DS_AND_RTN_B32,DS_OR_RTN_B32,DS_XOR_RTN_B32,DS_WRXCHG_RTN_B32,DS_MIN_RTN_F32,DS_MAX_RTN_F32,DS_ADD_RTN_F32,DS_PERMUTE_B32,DS_BPERMUTE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); break; -case 16:// DS_CMPST_B32 +case 44:case 48:case 49:case 52: +//DS_MSKOR_RTN_B32,DS_CMPST_RTN_B32,DS_CMPST_RTN_F32,DS_WRAP_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); break; -case 17:// DS_CMPST_F32 +case 46:case 47: +//DS_WRXCHG2_RTN_B32,DS_WRXCHG2ST64_RTN_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); break; -case 18:// DS_MIN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 19:// DS_MAX_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 20:// DS_NOP -break; -case 21:// DS_ADD_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 29:// DS_WRITE_ADDTID_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 30:// DS_WRITE_B8 +case 54:case 57:case 58:case 59:case 60:case 61:case 86:case 87:case 88:case 89:case 90:case 91: +//DS_READ_B32,DS_READ_I8,DS_READ_U8,DS_READ_I16,DS_READ_U16,DS_SWIZZLE_B32,DS_READ_U8_D16,DS_READ_U8_D16_HI,DS_READ_I8_D16,DS_READ_I8_D16_HI,DS_READ_U16_D16,DS_READ_U16_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); break; -case 31:// DS_WRITE_B16 +case 55:case 56:case 118: +//DS_READ2_B32,DS_READ2ST64_B32,DS_READ_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); break; -case 32:// DS_ADD_RTN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 77:case 82:case 83: +//DS_ADD_U64,DS_SUB_U64,DS_RSUB_U64,DS_INC_U64,DS_DEC_U64,DS_MIN_I64,DS_MAX_I64,DS_MIN_U64,DS_MAX_U64,DS_AND_B64,DS_OR_B64,DS_XOR_B64,DS_WRITE_B64,DS_MIN_F64,DS_MAX_F64 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); break; -case 33:// DS_SUB_RTN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 76:case 78:case 79:case 80:case 81: +//DS_MSKOR_B64,DS_WRITE2_B64,DS_WRITE2ST64_B64,DS_CMPST_B64,DS_CMPST_F64 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); break; -case 34:// DS_RSUB_RTN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 114:case 115:case 126: +//DS_ADD_RTN_U64,DS_SUB_RTN_U64,DS_RSUB_RTN_U64,DS_INC_RTN_U64,DS_DEC_RTN_U64,DS_MIN_RTN_I64,DS_MAX_RTN_I64,DS_MIN_RTN_U64,DS_MAX_RTN_U64,DS_AND_RTN_B64,DS_OR_RTN_B64,DS_XOR_RTN_B64,DS_WRXCHG_RTN_B64,DS_MIN_RTN_F64,DS_MAX_RTN_F64,DS_CONDXCHG32_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); break; -case 35:// DS_INC_RTN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 108:case 112:case 113: +//DS_MSKOR_RTN_B64,DS_CMPST_RTN_B64,DS_CMPST_RTN_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); break; -case 36:// DS_DEC_RTN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 110:case 111: +//DS_WRXCHG2_RTN_B64,DS_WRXCHG2ST64_RTN_B64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); break; -case 37:// DS_MIN_RTN_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 119:case 120:case 255: +//DS_READ2_B64,DS_READ2ST64_B64,DS_READ_B128 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); break; -case 38:// DS_MAX_RTN_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 141:case 146:case 147:case 149:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 205:case 210:case 211: +//DS_ADD_SRC2_U32,DS_SUB_SRC2_U32,DS_RSUB_SRC2_U32,DS_INC_SRC2_U32,DS_DEC_SRC2_U32,DS_MIN_SRC2_I32,DS_MAX_SRC2_I32,DS_MIN_SRC2_U32,DS_MAX_SRC2_U32,DS_AND_SRC2_B32,DS_OR_SRC2_B32,DS_XOR_SRC2_B32,DS_WRITE_SRC2_B32,DS_MIN_SRC2_F32,DS_MAX_SRC2_F32,DS_ADD_SRC2_F32,DS_ADD_SRC2_U64,DS_SUB_SRC2_U64,DS_RSUB_SRC2_U64,DS_INC_SRC2_U64,DS_DEC_SRC2_U64,DS_MIN_SRC2_I64,DS_MAX_SRC2_I64,DS_MIN_SRC2_U64,DS_MAX_SRC2_U64,DS_AND_SRC2_B64,DS_OR_SRC2_B64,DS_XOR_SRC2_B64,DS_WRITE_SRC2_B64,DS_MIN_SRC2_F64,DS_MAX_SRC2_F64 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); break; -case 39:// DS_MIN_RTN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +case 152:case 154:case 156: +//DS_GWS_SEMA_RELEASE_ALL,DS_GWS_SEMA_V,DS_GWS_SEMA_P +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 40:// DS_MAX_RTN_U32 +case 182:case 189:case 190: +//DS_READ_ADDTID_B32,DS_CONSUME,DS_APPEND insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 41:// DS_AND_RTN_B32 +case 191: +//DS_ORDERED_COUNT insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 42:// DS_OR_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 222: +//DS_WRITE_B96 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); break; -case 43:// DS_XOR_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 223: +//DS_WRITE_B128 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+3,32),true,false); break; -case 44:// DS_MSKOR_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +case 254: +//DS_READ_B96 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); break; -case 45:// DS_WRXCHG_RTN_B32 +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLATOperands(){ +layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; +switch(layout.OP){ +case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: +//FLAT_LOAD_UBYTE,FLAT_LOAD_SBYTE,FLAT_LOAD_USHORT,FLAT_LOAD_SSHORT,FLAT_LOAD_DWORD,FLAT_LOAD_UBYTE_D16,FLAT_LOAD_UBYTE_D16_HI,FLAT_LOAD_SBYTE_D16,FLAT_LOAD_SBYTE_D16_HI,FLAT_LOAD_SHORT_D16,FLAT_LOAD_SHORT_D16_HI insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 46:// DS_WRXCHG2_RTN_B32 +case 21: +//FLAT_LOAD_DWORDX2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 47:// DS_WRXCHG2ST64_RTN_B32 +case 22: +//FLAT_LOAD_DWORDX3 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); -break; -case 48:// DS_CMPST_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 49:// DS_CMPST_RTN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +case 23: +//FLAT_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 50:// DS_MIN_RTN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +case 24:case 25:case 26:case 27:case 28: +//FLAT_STORE_BYTE,FLAT_STORE_BYTE_D16_HI,FLAT_STORE_SHORT,FLAT_STORE_SHORT_D16_HI,FLAT_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 51:// DS_MAX_RTN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +case 29: +//FLAT_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 52:// DS_WRAP_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +case 30: +//FLAT_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 53:// DS_ADD_RTN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +case 31: +//FLAT_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 54:// DS_READ_B32 +case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76: +//FLAT_ATOMIC_SWAP,FLAT_ATOMIC_ADD,FLAT_ATOMIC_SUB,FLAT_ATOMIC_SMIN,FLAT_ATOMIC_UMIN,FLAT_ATOMIC_SMAX,FLAT_ATOMIC_UMAX,FLAT_ATOMIC_AND,FLAT_ATOMIC_OR,FLAT_ATOMIC_XOR,FLAT_ATOMIC_INC,FLAT_ATOMIC_DEC insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 55:// DS_READ2_B32 +case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: +//FLAT_ATOMIC_CMPSWAP,FLAT_ATOMIC_SWAP_X2,FLAT_ATOMIC_ADD_X2,FLAT_ATOMIC_SUB_X2,FLAT_ATOMIC_SMIN_X2,FLAT_ATOMIC_UMIN_X2,FLAT_ATOMIC_SMAX_X2,FLAT_ATOMIC_UMAX_X2,FLAT_ATOMIC_AND_X2,FLAT_ATOMIC_OR_X2,FLAT_ATOMIC_XOR_X2,FLAT_ATOMIC_INC_X2,FLAT_ATOMIC_DEC_X2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 56:// DS_READ2ST64_B32 +case 97: +//FLAT_ATOMIC_CMPSWAP_X2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 57:// DS_READ_I8 +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLAT_GLBLOperands(){ +layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; +switch(layout.OP){ +case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: +//GLOBAL_LOAD_UBYTE,GLOBAL_LOAD_SBYTE,GLOBAL_LOAD_USHORT,GLOBAL_LOAD_SSHORT,GLOBAL_LOAD_DWORD,GLOBAL_LOAD_UBYTE_D16,GLOBAL_LOAD_UBYTE_D16_HI,GLOBAL_LOAD_SBYTE_D16,GLOBAL_LOAD_SBYTE_D16_HI,GLOBAL_LOAD_SHORT_D16,GLOBAL_LOAD_SHORT_D16_HI insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 58:// DS_READ_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 21: +//GLOBAL_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 59:// DS_READ_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 60:// DS_READ_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 61:// DS_SWIZZLE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 62:// DS_PERMUTE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 63:// DS_BPERMUTE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 64:// DS_ADD_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 65:// DS_SUB_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 66:// DS_RSUB_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 67:// DS_INC_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 68:// DS_DEC_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 69:// DS_MIN_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 70:// DS_MAX_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 71:// DS_MIN_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 72:// DS_MAX_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 73:// DS_AND_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 74:// DS_OR_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 75:// DS_XOR_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 76:// DS_MSKOR_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 77:// DS_WRITE_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 78:// DS_WRITE2_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 79:// DS_WRITE2ST64_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 80:// DS_CMPST_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 81:// DS_CMPST_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 82:// DS_MIN_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 83:// DS_MAX_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 84:// DS_WRITE_B8_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -break; -case 85:// DS_WRITE_B16_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +case 22: +//GLOBAL_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 86:// DS_READ_U8_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 23: +//GLOBAL_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 87:// DS_READ_U8_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 24:case 25:case 26:case 27:case 28: +//GLOBAL_STORE_BYTE,GLOBAL_STORE_BYTE_D16_HI,GLOBAL_STORE_SHORT,GLOBAL_STORE_SHORT_D16_HI,GLOBAL_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 88:// DS_READ_I8_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 29: +//GLOBAL_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 89:// DS_READ_I8_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 30: +//GLOBAL_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 90:// DS_READ_U16_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +case 31: +//GLOBAL_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 91:// DS_READ_U16_D16_HI +case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78: +//GLOBAL_ATOMIC_SWAP,GLOBAL_ATOMIC_ADD,GLOBAL_ATOMIC_SUB,GLOBAL_ATOMIC_SMIN,GLOBAL_ATOMIC_UMIN,GLOBAL_ATOMIC_SMAX,GLOBAL_ATOMIC_UMAX,GLOBAL_ATOMIC_AND,GLOBAL_ATOMIC_OR,GLOBAL_ATOMIC_XOR,GLOBAL_ATOMIC_INC,GLOBAL_ATOMIC_DEC,GLOBAL_ATOMIC_ADD_F32,GLOBAL_ATOMIC_PK_ADD_F16 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 96:// DS_ADD_RTN_U64 +case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: +//GLOBAL_ATOMIC_CMPSWAP,GLOBAL_ATOMIC_SWAP_X2,GLOBAL_ATOMIC_ADD_X2,GLOBAL_ATOMIC_SUB_X2,GLOBAL_ATOMIC_SMIN_X2,GLOBAL_ATOMIC_UMIN_X2,GLOBAL_ATOMIC_SMAX_X2,GLOBAL_ATOMIC_UMAX_X2,GLOBAL_ATOMIC_AND_X2,GLOBAL_ATOMIC_OR_X2,GLOBAL_ATOMIC_XOR_X2,GLOBAL_ATOMIC_INC_X2,GLOBAL_ATOMIC_DEC_X2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 97:// DS_SUB_RTN_U64 +case 97: +//GLOBAL_ATOMIC_CMPSWAP_X2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +break; +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLAT_SCRATCHOperands(){ +layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; +switch(layout.OP){ +case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: +//SCRATCH_LOAD_UBYTE,SCRATCH_LOAD_SBYTE,SCRATCH_LOAD_USHORT,SCRATCH_LOAD_SSHORT,SCRATCH_LOAD_DWORD,SCRATCH_LOAD_UBYTE_D16,SCRATCH_LOAD_UBYTE_D16_HI,SCRATCH_LOAD_SBYTE_D16,SCRATCH_LOAD_SBYTE_D16_HI,SCRATCH_LOAD_SHORT_D16,SCRATCH_LOAD_SHORT_D16_HI +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 98:// DS_RSUB_RTN_U64 +case 21: +//SCRATCH_LOAD_DWORDX2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 99:// DS_INC_RTN_U64 +case 22: +//SCRATCH_LOAD_DWORDX3 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 100:// DS_DEC_RTN_U64 +case 23: +//SCRATCH_LOAD_DWORDX4 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 101:// DS_MIN_RTN_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +case 24:case 25:case 26:case 27:case 28: +//SCRATCH_STORE_BYTE,SCRATCH_STORE_BYTE_D16_HI,SCRATCH_STORE_SHORT,SCRATCH_STORE_SHORT_D16_HI,SCRATCH_STORE_DWORD insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 102:// DS_MAX_RTN_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +case 29: +//SCRATCH_STORE_DWORDX2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 103:// DS_MIN_RTN_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +case 30: +//SCRATCH_STORE_DWORDX3 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 104:// DS_MAX_RTN_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +case 31: +//SCRATCH_STORE_DWORDX4 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 105:// DS_AND_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 106:// DS_OR_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 107:// DS_XOR_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 108:// DS_MSKOR_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 109:// DS_WRXCHG_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 110:// DS_WRXCHG2_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 111:// DS_WRXCHG2ST64_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 112:// DS_CMPST_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 113:// DS_CMPST_RTN_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); -break; -case 114:// DS_MIN_RTN_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 115:// DS_MAX_RTN_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 118:// DS_READ_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 119:// DS_READ2_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 120:// DS_READ2ST64_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 126:// DS_CONDXCHG32_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -break; -case 128:// DS_ADD_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 129:// DS_SUB_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 130:// DS_RSUB_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 131:// DS_INC_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 132:// DS_DEC_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 133:// DS_MIN_SRC2_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 134:// DS_MAX_SRC2_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 135:// DS_MIN_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 136:// DS_MAX_SRC2_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 137:// DS_AND_SRC2_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 138:// DS_OR_SRC2_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 139:// DS_XOR_SRC2_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 141:// DS_WRITE_SRC2_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 146:// DS_MIN_SRC2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 147:// DS_MAX_SRC2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 149:// DS_ADD_SRC2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 152:// DS_GWS_SEMA_RELEASE_ALL -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 153:// DS_GWS_INIT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 154:// DS_GWS_SEMA_V -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 155:// DS_GWS_SEMA_BR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 156:// DS_GWS_SEMA_P -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 157:// DS_GWS_BARRIER -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 182:// DS_READ_ADDTID_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 189:// DS_CONSUME -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 190:// DS_APPEND -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 191:// DS_ORDERED_COUNT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 192:// DS_ADD_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 193:// DS_SUB_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 194:// DS_RSUB_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 195:// DS_INC_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 196:// DS_DEC_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 197:// DS_MIN_SRC2_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 198:// DS_MAX_SRC2_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 199:// DS_MIN_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 200:// DS_MAX_SRC2_U64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 201:// DS_AND_SRC2_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 202:// DS_OR_SRC2_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 203:// DS_XOR_SRC2_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 205:// DS_WRITE_SRC2_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 210:// DS_MIN_SRC2_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 211:// DS_MAX_SRC2_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 222:// DS_WRITE_B96 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); -break; -case 223:// DS_WRITE_B128 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+3,32),true,false); -break; -case 254:// DS_READ_B96 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -case 255:// DS_READ_B128 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLATOperands(){ -layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; -switch(layout.OP){ -case 16:// FLAT_LOAD_UBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 17:// FLAT_LOAD_SBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 18:// FLAT_LOAD_USHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 19:// FLAT_LOAD_SSHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 20:// FLAT_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 21:// FLAT_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 22:// FLAT_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 23:// FLAT_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 24:// FLAT_STORE_BYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 25:// FLAT_STORE_BYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 26:// FLAT_STORE_SHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 27:// FLAT_STORE_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 28:// FLAT_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 29:// FLAT_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 30:// FLAT_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 31:// FLAT_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 32:// FLAT_LOAD_UBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 33:// FLAT_LOAD_UBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 34:// FLAT_LOAD_SBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 35:// FLAT_LOAD_SBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 36:// FLAT_LOAD_SHORT_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 37:// FLAT_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 64:// FLAT_ATOMIC_SWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 65:// FLAT_ATOMIC_CMPSWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 66:// FLAT_ATOMIC_ADD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 67:// FLAT_ATOMIC_SUB -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 68:// FLAT_ATOMIC_SMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 69:// FLAT_ATOMIC_UMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 70:// FLAT_ATOMIC_SMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 71:// FLAT_ATOMIC_UMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 72:// FLAT_ATOMIC_AND -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 73:// FLAT_ATOMIC_OR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 74:// FLAT_ATOMIC_XOR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 75:// FLAT_ATOMIC_INC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 76:// FLAT_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 96:// FLAT_ATOMIC_SWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 97:// FLAT_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 98:// FLAT_ATOMIC_ADD_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 99:// FLAT_ATOMIC_SUB_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 100:// FLAT_ATOMIC_SMIN_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 101:// FLAT_ATOMIC_UMIN_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 102:// FLAT_ATOMIC_SMAX_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 103:// FLAT_ATOMIC_UMAX_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 104:// FLAT_ATOMIC_AND_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 105:// FLAT_ATOMIC_OR_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 106:// FLAT_ATOMIC_XOR_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 107:// FLAT_ATOMIC_INC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 108:// FLAT_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLAT_GLBLOperands(){ -layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; -switch(layout.OP){ -case 16:// GLOBAL_LOAD_UBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 17:// GLOBAL_LOAD_SBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 18:// GLOBAL_LOAD_USHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 19:// GLOBAL_LOAD_SSHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 20:// GLOBAL_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 21:// GLOBAL_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 22:// GLOBAL_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 23:// GLOBAL_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 24:// GLOBAL_STORE_BYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 25:// GLOBAL_STORE_BYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 26:// GLOBAL_STORE_SHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 27:// GLOBAL_STORE_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 28:// GLOBAL_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 29:// GLOBAL_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 30:// GLOBAL_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 31:// GLOBAL_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 32:// GLOBAL_LOAD_UBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 33:// GLOBAL_LOAD_UBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 34:// GLOBAL_LOAD_SBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 35:// GLOBAL_LOAD_SBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 36:// GLOBAL_LOAD_SHORT_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 37:// GLOBAL_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 64:// GLOBAL_ATOMIC_SWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 65:// GLOBAL_ATOMIC_CMPSWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 66:// GLOBAL_ATOMIC_ADD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 67:// GLOBAL_ATOMIC_SUB -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 68:// GLOBAL_ATOMIC_SMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 69:// GLOBAL_ATOMIC_UMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 70:// GLOBAL_ATOMIC_SMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 71:// GLOBAL_ATOMIC_UMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 72:// GLOBAL_ATOMIC_AND -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 73:// GLOBAL_ATOMIC_OR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 74:// GLOBAL_ATOMIC_XOR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 75:// GLOBAL_ATOMIC_INC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 76:// GLOBAL_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 77:// GLOBAL_ATOMIC_ADD_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 78:// GLOBAL_ATOMIC_PK_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 96:// GLOBAL_ATOMIC_SWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 97:// GLOBAL_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 98:// GLOBAL_ATOMIC_ADD_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 99:// GLOBAL_ATOMIC_SUB_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 100:// GLOBAL_ATOMIC_SMIN_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 101:// GLOBAL_ATOMIC_UMIN_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 102:// GLOBAL_ATOMIC_SMAX_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 103:// GLOBAL_ATOMIC_UMAX_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 104:// GLOBAL_ATOMIC_AND_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 105:// GLOBAL_ATOMIC_OR_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 106:// GLOBAL_ATOMIC_XOR_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 107:// GLOBAL_ATOMIC_INC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 108:// GLOBAL_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_FLAT_SCRATCHOperands(){ -layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; -switch(layout.OP){ -case 16:// SCRATCH_LOAD_UBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 17:// SCRATCH_LOAD_SBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 18:// SCRATCH_LOAD_USHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 19:// SCRATCH_LOAD_SSHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 20:// SCRATCH_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 21:// SCRATCH_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 22:// SCRATCH_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 23:// SCRATCH_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 24:// SCRATCH_STORE_BYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 25:// SCRATCH_STORE_BYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 26:// SCRATCH_STORE_SHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 27:// SCRATCH_STORE_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 28:// SCRATCH_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 29:// SCRATCH_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 30:// SCRATCH_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 31:// SCRATCH_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 32:// SCRATCH_LOAD_UBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 33:// SCRATCH_LOAD_UBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 34:// SCRATCH_LOAD_SBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 35:// SCRATCH_LOAD_SBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 36:// SCRATCH_LOAD_SHORT_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 37:// SCRATCH_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_MIMGOperands(){ -layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; -switch(layout.OP){ -case 0:// IMAGE_LOAD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 1:// IMAGE_LOAD_MIP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 2:// IMAGE_LOAD_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 3:// IMAGE_LOAD_PCK_SGN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 4:// IMAGE_LOAD_MIP_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 5:// IMAGE_LOAD_MIP_PCK_SGN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 8:// IMAGE_STORE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 9:// IMAGE_STORE_MIP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 10:// IMAGE_STORE_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 11:// IMAGE_STORE_MIP_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 14:// IMAGE_GET_RESINFO -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 16:// IMAGE_ATOMIC_SWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 17:// IMAGE_ATOMIC_CMPSWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 18:// IMAGE_ATOMIC_ADD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 19:// IMAGE_ATOMIC_SUB -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 20:// IMAGE_ATOMIC_SMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 21:// IMAGE_ATOMIC_UMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 22:// IMAGE_ATOMIC_SMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 23:// IMAGE_ATOMIC_UMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 24:// IMAGE_ATOMIC_AND -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 25:// IMAGE_ATOMIC_OR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 26:// IMAGE_ATOMIC_XOR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 27:// IMAGE_ATOMIC_INC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 28:// IMAGE_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -break; -case 32:// IMAGE_SAMPLE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 33:// IMAGE_SAMPLE_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 34:// IMAGE_SAMPLE_D -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 35:// IMAGE_SAMPLE_D_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 36:// IMAGE_SAMPLE_L -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 37:// IMAGE_SAMPLE_B -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 38:// IMAGE_SAMPLE_B_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 39:// IMAGE_SAMPLE_LZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 40:// IMAGE_SAMPLE_C -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 41:// IMAGE_SAMPLE_C_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 42:// IMAGE_SAMPLE_C_D -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 43:// IMAGE_SAMPLE_C_D_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 44:// IMAGE_SAMPLE_C_L -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 45:// IMAGE_SAMPLE_C_B -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 46:// IMAGE_SAMPLE_C_B_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 47:// IMAGE_SAMPLE_C_LZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 48:// IMAGE_SAMPLE_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 49:// IMAGE_SAMPLE_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 50:// IMAGE_SAMPLE_D_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 51:// IMAGE_SAMPLE_D_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 52:// IMAGE_SAMPLE_L_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 53:// IMAGE_SAMPLE_B_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 54:// IMAGE_SAMPLE_B_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 55:// IMAGE_SAMPLE_LZ_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 56:// IMAGE_SAMPLE_C_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 57:// IMAGE_SAMPLE_C_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 58:// IMAGE_SAMPLE_C_D_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 59:// IMAGE_SAMPLE_C_D_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 60:// IMAGE_SAMPLE_C_L_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 61:// IMAGE_SAMPLE_C_B_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 62:// IMAGE_SAMPLE_C_B_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 63:// IMAGE_SAMPLE_C_LZ_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 64:// IMAGE_GATHER4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 65:// IMAGE_GATHER4_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 66:// IMAGE_GATHER4H -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 68:// IMAGE_GATHER4_L -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 69:// IMAGE_GATHER4_B -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 70:// IMAGE_GATHER4_B_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 71:// IMAGE_GATHER4_LZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 72:// IMAGE_GATHER4_C -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 73:// IMAGE_GATHER4_C_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 74:// IMAGE_GATHER4H_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 75:// IMAGE_GATHER8H_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 76:// IMAGE_GATHER4_C_L -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 77:// IMAGE_GATHER4_C_B -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 78:// IMAGE_GATHER4_C_B_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 79:// IMAGE_GATHER4_C_LZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 80:// IMAGE_GATHER4_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 81:// IMAGE_GATHER4_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 84:// IMAGE_GATHER4_L_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 85:// IMAGE_GATHER4_B_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 86:// IMAGE_GATHER4_B_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 87:// IMAGE_GATHER4_LZ_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 88:// IMAGE_GATHER4_C_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 89:// IMAGE_GATHER4_C_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 92:// IMAGE_GATHER4_C_L_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 93:// IMAGE_GATHER4_C_B_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 94:// IMAGE_GATHER4_C_B_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 95:// IMAGE_GATHER4_C_LZ_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 96:// IMAGE_GET_LOD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 104:// IMAGE_SAMPLE_CD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 105:// IMAGE_SAMPLE_CD_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 106:// IMAGE_SAMPLE_C_CD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 107:// IMAGE_SAMPLE_C_CD_CL -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 108:// IMAGE_SAMPLE_CD_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 109:// IMAGE_SAMPLE_CD_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 110:// IMAGE_SAMPLE_C_CD_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -case 111:// IMAGE_SAMPLE_C_CD_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_MTBUFOperands(){ -layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; -switch(layout.OP){ -case 0:// TBUFFER_LOAD_FORMAT_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 1:// TBUFFER_LOAD_FORMAT_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 2:// TBUFFER_LOAD_FORMAT_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 3:// TBUFFER_LOAD_FORMAT_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 4:// TBUFFER_STORE_FORMAT_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 5:// TBUFFER_STORE_FORMAT_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 6:// TBUFFER_STORE_FORMAT_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 7:// TBUFFER_STORE_FORMAT_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 8:// TBUFFER_LOAD_FORMAT_D16_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 9:// TBUFFER_LOAD_FORMAT_D16_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 10:// TBUFFER_LOAD_FORMAT_D16_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 11:// TBUFFER_LOAD_FORMAT_D16_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 12:// TBUFFER_STORE_FORMAT_D16_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 13:// TBUFFER_STORE_FORMAT_D16_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 14:// TBUFFER_STORE_FORMAT_D16_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 15:// TBUFFER_STORE_FORMAT_D16_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_MUBUFOperands(){ -layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; -switch(layout.OP){ -case 0:// BUFFER_LOAD_FORMAT_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 1:// BUFFER_LOAD_FORMAT_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 2:// BUFFER_LOAD_FORMAT_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 3:// BUFFER_LOAD_FORMAT_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 4:// BUFFER_STORE_FORMAT_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 5:// BUFFER_STORE_FORMAT_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 6:// BUFFER_STORE_FORMAT_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 7:// BUFFER_STORE_FORMAT_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 8:// BUFFER_LOAD_FORMAT_D16_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 9:// BUFFER_LOAD_FORMAT_D16_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 10:// BUFFER_LOAD_FORMAT_D16_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 11:// BUFFER_LOAD_FORMAT_D16_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 12:// BUFFER_STORE_FORMAT_D16_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 13:// BUFFER_STORE_FORMAT_D16_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 14:// BUFFER_STORE_FORMAT_D16_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 15:// BUFFER_STORE_FORMAT_D16_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 16:// BUFFER_LOAD_UBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 17:// BUFFER_LOAD_SBYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 18:// BUFFER_LOAD_USHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 19:// BUFFER_LOAD_SSHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 20:// BUFFER_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 21:// BUFFER_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 22:// BUFFER_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 23:// BUFFER_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 24:// BUFFER_STORE_BYTE -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 25:// BUFFER_STORE_BYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 26:// BUFFER_STORE_SHORT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 27:// BUFFER_STORE_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 28:// BUFFER_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 29:// BUFFER_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 30:// BUFFER_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 31:// BUFFER_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 32:// BUFFER_LOAD_UBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 33:// BUFFER_LOAD_UBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 34:// BUFFER_LOAD_SBYTE_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 35:// BUFFER_LOAD_SBYTE_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 36:// BUFFER_LOAD_SHORT_D16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 37:// BUFFER_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 38:// BUFFER_LOAD_FORMAT_D16_HI_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 39:// BUFFER_STORE_FORMAT_D16_HI_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 61:// BUFFER_STORE_LDS_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 62:// BUFFER_WBINVL1 -break; -case 63:// BUFFER_WBINVL1_VOL -break; -case 64:// BUFFER_ATOMIC_SWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 65:// BUFFER_ATOMIC_CMPSWAP -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 66:// BUFFER_ATOMIC_ADD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 67:// BUFFER_ATOMIC_SUB -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 68:// BUFFER_ATOMIC_SMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 69:// BUFFER_ATOMIC_UMIN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 70:// BUFFER_ATOMIC_SMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 71:// BUFFER_ATOMIC_UMAX -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 72:// BUFFER_ATOMIC_AND -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 73:// BUFFER_ATOMIC_OR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 74:// BUFFER_ATOMIC_XOR -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 75:// BUFFER_ATOMIC_INC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 76:// BUFFER_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 77:// BUFFER_ATOMIC_ADD_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 78:// BUFFER_ATOMIC_PK_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 96:// BUFFER_ATOMIC_SWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 97:// BUFFER_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 98:// BUFFER_ATOMIC_ADD_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 99:// BUFFER_ATOMIC_SUB_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 100:// BUFFER_ATOMIC_SMIN_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 101:// BUFFER_ATOMIC_UMIN_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 102:// BUFFER_ATOMIC_SMAX_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 103:// BUFFER_ATOMIC_UMAX_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 104:// BUFFER_ATOMIC_AND_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 105:// BUFFER_ATOMIC_OR_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 106:// BUFFER_ATOMIC_XOR_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 107:// BUFFER_ATOMIC_INC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -case 108:// BUFFER_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_SMEMOperands(){ -layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; -switch(layout.OP){ -case 0:// S_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 1:// S_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 2:// S_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 3:// S_LOAD_DWORDX8 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 4:// S_LOAD_DWORDX16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 5:// S_SCRATCH_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 6:// S_SCRATCH_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 7:// S_SCRATCH_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 8:// S_BUFFER_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 9:// S_BUFFER_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 10:// S_BUFFER_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 11:// S_BUFFER_LOAD_DWORDX8 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 12:// S_BUFFER_LOAD_DWORDX16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 16:// S_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 17:// S_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 18:// S_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 21:// S_SCRATCH_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 22:// S_SCRATCH_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 23:// S_SCRATCH_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 24:// S_BUFFER_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 25:// S_BUFFER_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 26:// S_BUFFER_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 32:// S_DCACHE_INV -break; -case 33:// S_DCACHE_WB -break; -case 34:// S_DCACHE_INV_VOL -break; -case 35:// S_DCACHE_WB_VOL -break; -case 36:// S_MEMTIME -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -break; -case 37:// S_MEMREALTIME -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -break; -case 38:// S_ATC_PROBE -insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 39:// S_ATC_PROBE_BUFFER -insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 40:// S_DCACHE_DISCARD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 41:// S_DCACHE_DISCARD_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 64:// S_BUFFER_ATOMIC_SWAP -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 65:// S_BUFFER_ATOMIC_CMPSWAP -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 66:// S_BUFFER_ATOMIC_ADD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 67:// S_BUFFER_ATOMIC_SUB -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 68:// S_BUFFER_ATOMIC_SMIN -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 69:// S_BUFFER_ATOMIC_UMIN -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 70:// S_BUFFER_ATOMIC_SMAX -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 71:// S_BUFFER_ATOMIC_UMAX -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 72:// S_BUFFER_ATOMIC_AND -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 73:// S_BUFFER_ATOMIC_OR -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 74:// S_BUFFER_ATOMIC_XOR -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 75:// S_BUFFER_ATOMIC_INC -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 76:// S_BUFFER_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 96:// S_BUFFER_ATOMIC_SWAP_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 97:// S_BUFFER_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 98:// S_BUFFER_ATOMIC_ADD_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 99:// S_BUFFER_ATOMIC_SUB_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 100:// S_BUFFER_ATOMIC_SMIN_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 101:// S_BUFFER_ATOMIC_UMIN_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 102:// S_BUFFER_ATOMIC_SMAX_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 103:// S_BUFFER_ATOMIC_UMAX_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 104:// S_BUFFER_ATOMIC_AND_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 105:// S_BUFFER_ATOMIC_OR_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 106:// S_BUFFER_ATOMIC_XOR_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 107:// S_BUFFER_ATOMIC_INC_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 108:// S_BUFFER_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 128:// S_ATOMIC_SWAP -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 129:// S_ATOMIC_CMPSWAP -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 130:// S_ATOMIC_ADD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 131:// S_ATOMIC_SUB -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 132:// S_ATOMIC_SMIN -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 133:// S_ATOMIC_UMIN -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 134:// S_ATOMIC_SMAX -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 135:// S_ATOMIC_UMAX -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 136:// S_ATOMIC_AND -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 137:// S_ATOMIC_OR -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 138:// S_ATOMIC_XOR -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 139:// S_ATOMIC_INC -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 140:// S_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 160:// S_ATOMIC_SWAP_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 161:// S_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 162:// S_ATOMIC_ADD_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 163:// S_ATOMIC_SUB_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 164:// S_ATOMIC_SMIN_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 165:// S_ATOMIC_UMIN_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 166:// S_ATOMIC_SMAX_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 167:// S_ATOMIC_UMAX_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 168:// S_ATOMIC_AND_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 169:// S_ATOMIC_OR_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 170:// S_ATOMIC_XOR_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 171:// S_ATOMIC_INC_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -case 172:// S_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP1Operands(){ -layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; -switch(layout.OP){ -case 0:// S_MOV_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 1:// S_MOV_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 2:// S_CMOV_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 3:// S_CMOV_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 4:// S_NOT_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 5:// S_NOT_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 6:// S_WQM_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 7:// S_WQM_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 8:// S_BREV_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 9:// S_BREV_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 10:// S_BCNT0_I32_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 11:// S_BCNT0_I32_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 12:// S_BCNT1_I32_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 13:// S_BCNT1_I32_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 14:// S_FF0_I32_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 15:// S_FF0_I32_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 16:// S_FF1_I32_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 17:// S_FF1_I32_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 18:// S_FLBIT_I32_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 19:// S_FLBIT_I32_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 20:// S_FLBIT_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 21:// S_FLBIT_I32_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 22:// S_SEXT_I32_I8 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); -break; -case 23:// S_SEXT_I32_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); -break; -case 24:// S_BITSET0_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 25:// S_BITSET0_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 26:// S_BITSET1_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 27:// S_BITSET1_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -case 28:// S_GETPC_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); -break; -case 29:// S_SETPC_B64 -setBranch(); -setModifyPC(); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -break; -case 30:// S_SWAPPC_B64 -setBranch(); -setModifyPC(); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); -break; -case 31:// S_RFE_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -break; -case 32:// S_AND_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 33:// S_OR_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 34:// S_XOR_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 35:// S_ANDN2_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 36:// S_ORN2_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 37:// S_NAND_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 38:// S_NOR_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 39:// S_XNOR_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 40:// S_QUADMASK_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 41:// S_QUADMASK_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 42:// S_MOVRELS_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 43:// S_MOVRELS_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 44:// S_MOVRELD_B32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 45:// S_MOVRELD_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 46:// S_CBRANCH_JOIN -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -break; -case 48:// S_ABS_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 50:// S_SET_GPR_IDX_IDX -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 51:// S_ANDN1_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 52:// S_ORN1_SAVEEXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 53:// S_ANDN1_WREXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 54:// S_ANDN2_WREXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 55:// S_BITREPLICATE_B64_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP2Operands(){ -layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; -switch(layout.OP){ -case 0:// S_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 1:// S_SUB_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 2:// S_ADD_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 3:// S_SUB_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 4:// S_ADDC_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 5:// S_SUBB_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 6:// S_MIN_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 7:// S_MIN_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 8:// S_MAX_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 9:// S_MAX_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 10:// S_CSELECT_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 11:// S_CSELECT_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 12:// S_AND_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 13:// S_AND_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 14:// S_OR_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 15:// S_OR_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 16:// S_XOR_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 17:// S_XOR_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 18:// S_ANDN2_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 19:// S_ANDN2_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 20:// S_ORN2_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 21:// S_ORN2_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 22:// S_NAND_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 23:// S_NAND_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 24:// S_NOR_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 25:// S_NOR_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 26:// S_XNOR_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 27:// S_XNOR_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 28:// S_LSHL_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 29:// S_LSHL_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 30:// S_LSHR_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 31:// S_LSHR_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 32:// S_ASHR_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 33:// S_ASHR_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 34:// S_BFM_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 35:// S_BFM_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 36:// S_MUL_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 37:// S_BFE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 38:// S_BFE_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 39:// S_BFE_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 40:// S_BFE_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 41:// S_CBRANCH_G_FORK -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -break; -case 42:// S_ABSDIFF_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 43:// S_RFE_RESTORE_B64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -break; -case 44:// S_MUL_HI_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 45:// S_MUL_HI_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 46:// S_LSHL1_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 47:// S_LSHL2_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 48:// S_LSHL3_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 49:// S_LSHL4_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 50:// S_PACK_LL_B32_B16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,16),true,false); -break; -case 51:// S_PACK_LH_B32_B16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 52:// S_PACK_HH_B32_B16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPCOperands(){ -layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; -switch(layout.OP){ -case 0:// S_CMP_EQ_I32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 1:// S_CMP_LG_I32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 2:// S_CMP_GT_I32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 3:// S_CMP_GE_I32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 4:// S_CMP_LT_I32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 5:// S_CMP_LE_I32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 6:// S_CMP_EQ_U32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 7:// S_CMP_LG_U32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 8:// S_CMP_GT_U32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 9:// S_CMP_GE_U32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 10:// S_CMP_LT_U32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 11:// S_CMP_LE_U32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 12:// S_BITCMP0_B32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 13:// S_BITCMP1_B32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 14:// S_BITCMP0_B64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 15:// S_BITCMP1_B64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 16:// S_SETVSKIP -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -break; -case 17:// S_SET_GPR_IDX_ON -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM4(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 18:// S_CMP_EQ_U64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 19:// S_CMP_LG_U64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPKOperands(){ -layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; -switch(layout.OP){ -case 0:// S_MOVK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 1:// S_CMOVK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 2:// S_CMPK_EQ_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 3:// S_CMPK_LG_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 4:// S_CMPK_GT_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 5:// S_CMPK_GE_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 6:// S_CMPK_LT_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 7:// S_CMPK_LE_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 8:// S_CMPK_EQ_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 9:// S_CMPK_LG_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 10:// S_CMPK_GT_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 11:// S_CMPK_GE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 12:// S_CMPK_LT_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 13:// S_CMPK_LE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 14:// S_ADDK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 15:// S_MULK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 16:// S_CBRANCH_I_FORK -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -break; -case 17:// S_GETREG_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 18:// S_SETREG_B32 -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); -break; -case 21:// S_CALL_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeSOPK_INST_LITERAL_Operands(){ -layout_SOPK_INST_LITERAL_ & layout = insn_layout.SOPK_INST_LITERAL_; -switch(layout.OP){ -case 20:// S_SETREG_IMM32_B32 -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); -insn_in_progress->appendOperand(decodeOPR_SIMM32(decodeOPR_LITERAL()),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPPOperands(){ -layout_ENC_SOPP & layout = insn_layout.ENC_SOPP; -switch(layout.OP){ -case 0:// S_NOP -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 1:// S_ENDPGM -break; -case 2:// S_BRANCH -setBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -break; -case 3:// S_WAKEUP -break; -case 4:// S_CBRANCH_SCC0 -setBranch(); -setConditionalBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 5:// S_CBRANCH_SCC1 -setBranch(); -setConditionalBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); -break; -case 6:// S_CBRANCH_VCCZ -setBranch(); -setConditionalBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 7:// S_CBRANCH_VCCNZ -setBranch(); -setConditionalBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 8:// S_CBRANCH_EXECZ -setBranch(); -setConditionalBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 9:// S_CBRANCH_EXECNZ -setBranch(); -setConditionalBranch(); -makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); -break; -case 10:// S_BARRIER -break; -case 11:// S_SETKILL -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 12:// S_WAITCNT -insn_in_progress->appendOperand(decodeOPR_WAITCNT(layout.SIMM16),true,false); -break; -case 13:// S_SETHALT -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 14:// S_SLEEP -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 15:// S_SETPRIO -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 16:// S_SENDMSG -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 17:// S_SENDMSGHALT -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 18:// S_TRAP -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 19:// S_ICACHE_INV -break; -case 20:// S_INCPERFLEVEL -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 21:// S_DECPERFLEVEL -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -break; -case 22:// S_TTRACEDATA -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 23:// S_CBRANCH_CDBGSYS -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -break; -case 24:// S_CBRANCH_CDBGUSER -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -break; -case 25:// S_CBRANCH_CDBGSYS_OR_USER -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -break; -case 26:// S_CBRANCH_CDBGSYS_AND_USER -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -break; -case 27:// S_ENDPGM_SAVED -break; -case 28:// S_SET_GPR_IDX_OFF -break; -case 29:// S_SET_GPR_IDX_MODE -insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 30:// S_ENDPGM_ORDERED_PS_DONE -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VINTRPOperands(){ -layout_ENC_VINTRP & layout = insn_layout.ENC_VINTRP; -switch(layout.OP){ -case 0:// V_INTERP_P1_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 1:// V_INTERP_P2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 2:// V_INTERP_MOV_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_PARAM(layout.VSRC,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3Operands(){ -layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; -switch(layout.OP){ -case 624:// V_INTERP_P1_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 625:// V_INTERP_P2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 626:// V_INTERP_MOV_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_PARAM(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); -break; -case 320:// V_NOP -break; -case 321:// V_MOV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 322:// V_READFIRSTLANE_B32 -insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); -break; -case 323:// V_CVT_I32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 324:// V_CVT_F64_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 325:// V_CVT_F32_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 326:// V_CVT_F32_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 327:// V_CVT_U32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 328:// V_CVT_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 330:// V_CVT_F16_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 331:// V_CVT_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 332:// V_CVT_RPI_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 333:// V_CVT_FLR_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 334:// V_CVT_OFF_F32_I4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 335:// V_CVT_F32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 336:// V_CVT_F64_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 337:// V_CVT_F32_UBYTE0 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 338:// V_CVT_F32_UBYTE1 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 339:// V_CVT_F32_UBYTE2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 340:// V_CVT_F32_UBYTE3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 341:// V_CVT_U32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 342:// V_CVT_F64_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 343:// V_TRUNC_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 344:// V_CEIL_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 345:// V_RNDNE_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 346:// V_FLOOR_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 347:// V_FRACT_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 348:// V_TRUNC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 349:// V_CEIL_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 350:// V_RNDNE_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 351:// V_FLOOR_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 352:// V_EXP_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 353:// V_LOG_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 354:// V_RCP_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 355:// V_RCP_IFLAG_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 356:// V_RSQ_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 357:// V_RCP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 358:// V_RSQ_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 359:// V_SQRT_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 360:// V_SQRT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 361:// V_SIN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 362:// V_COS_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 363:// V_NOT_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 364:// V_BFREV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 365:// V_FFBH_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 366:// V_FFBL_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 367:// V_FFBH_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 368:// V_FREXP_EXP_I32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 369:// V_FREXP_MANT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 370:// V_FRACT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 371:// V_FREXP_EXP_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 372:// V_FREXP_MANT_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 373:// V_CLREXCP -break; -case 375:// V_SCREEN_PARTITION_4SE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 377:// V_CVT_F16_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 378:// V_CVT_F16_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 379:// V_CVT_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 380:// V_CVT_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 381:// V_RCP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 382:// V_SQRT_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 383:// V_RSQ_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 384:// V_LOG_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 385:// V_EXP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 386:// V_FREXP_MANT_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 387:// V_FREXP_EXP_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 388:// V_FLOOR_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 389:// V_CEIL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 390:// V_TRUNC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 391:// V_RNDNE_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 392:// V_FRACT_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 393:// V_SIN_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 394:// V_COS_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 395:// V_EXP_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 396:// V_LOG_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 397:// V_CVT_NORM_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 398:// V_CVT_NORM_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -break; -case 399:// V_SAT_PK_U8_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 401:// V_SWAP_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); -break; -case 256:// V_CNDMASK_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); -break; -case 257:// V_ADD_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 258:// V_SUB_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 259:// V_SUBREV_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 260:// V_MUL_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 261:// V_MUL_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 262:// V_MUL_I32_I24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 263:// V_MUL_HI_I32_I24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 264:// V_MUL_U32_U24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 265:// V_MUL_HI_U32_U24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 266:// V_MIN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 267:// V_MAX_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 268:// V_MIN_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 269:// V_MAX_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 270:// V_MIN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 271:// V_MAX_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 272:// V_LSHRREV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 273:// V_ASHRREV_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 274:// V_LSHLREV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 275:// V_AND_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 276:// V_OR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 277:// V_XOR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 278:// V_MAC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 287:// V_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 288:// V_SUB_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 289:// V_SUBREV_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 290:// V_MUL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 291:// V_MAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 294:// V_ADD_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 295:// V_SUB_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 296:// V_SUBREV_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 297:// V_MUL_LO_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 298:// V_LSHLREV_B16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 299:// V_LSHRREV_B16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 300:// V_ASHRREV_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 301:// V_MAX_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 302:// V_MIN_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 303:// V_MAX_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 304:// V_MAX_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 305:// V_MIN_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 306:// V_MIN_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 307:// V_LDEXP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 308:// V_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 309:// V_SUB_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 310:// V_SUBREV_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 311:// V_DOT2C_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 312:// V_DOT2C_I32_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 313:// V_DOT4C_I32_I8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 314:// V_DOT8C_I32_I4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 315:// V_FMAC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 316:// V_PK_FMAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 317:// V_XNOR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 448:// V_MAD_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 449:// V_MAD_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 450:// V_MAD_I32_I24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 451:// V_MAD_U32_U24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 452:// V_CUBEID_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 453:// V_CUBESC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 454:// V_CUBETC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 455:// V_CUBEMA_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 456:// V_BFE_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 457:// V_BFE_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 458:// V_BFI_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 459:// V_FMA_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 460:// V_FMA_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -break; -case 461:// V_LERP_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 462:// V_ALIGNBIT_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 463:// V_ALIGNBYTE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 464:// V_MIN3_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 465:// V_MIN3_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 466:// V_MIN3_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 467:// V_MAX3_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 468:// V_MAX3_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 469:// V_MAX3_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 470:// V_MED3_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 471:// V_MED3_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 472:// V_MED3_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 473:// V_SAD_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 474:// V_SAD_HI_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 475:// V_SAD_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 476:// V_SAD_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 477:// V_CVT_PK_U8_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 478:// V_DIV_FIXUP_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 479:// V_DIV_FIXUP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -break; -case 482:// V_DIV_FMAS_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 483:// V_DIV_FMAS_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 484:// V_MSAD_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 485:// V_QSAD_PK_U16_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -break; -case 486:// V_MQSAD_PK_U16_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -break; -case 487:// V_MQSAD_U32_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+3,32),true,false); -break; -case 490:// V_MAD_LEGACY_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 491:// V_MAD_LEGACY_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 492:// V_MAD_LEGACY_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 493:// V_PERM_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 494:// V_FMA_LEGACY_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 495:// V_DIV_FIXUP_LEGACY_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 496:// V_CVT_PKACCUM_U8_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 497:// V_MAD_U32_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 498:// V_MAD_I32_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 499:// V_XAD_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 500:// V_MIN3_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 501:// V_MIN3_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 502:// V_MIN3_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 503:// V_MAX3_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 504:// V_MAX3_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 505:// V_MAX3_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 506:// V_MED3_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 507:// V_MED3_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 508:// V_MED3_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 509:// V_LSHL_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 510:// V_ADD_LSHL_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 511:// V_ADD3_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 512:// V_LSHL_OR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 513:// V_AND_OR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 514:// V_OR3_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 515:// V_MAD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 516:// V_MAD_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 517:// V_MAD_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 518:// V_FMA_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 519:// V_DIV_FIXUP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 628:// V_INTERP_P1LL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -break; -case 629:// V_INTERP_P1LV_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); -break; -case 630:// V_INTERP_P2_LEGACY_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); -break; -case 631:// V_INTERP_P2_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); -break; -case 640:// V_ADD_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 641:// V_MUL_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 642:// V_MIN_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 643:// V_MAX_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 644:// V_LDEXP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 645:// V_MUL_LO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 646:// V_MUL_HI_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 647:// V_MUL_HI_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 648:// V_LDEXP_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 649:// V_READLANE_B32 -insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); -break; -case 650:// V_WRITELANE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); -break; -case 651:// V_BCNT_U32_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 652:// V_MBCNT_LO_U32_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 653:// V_MBCNT_HI_U32_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 655:// V_LSHLREV_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 656:// V_LSHRREV_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 657:// V_ASHRREV_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 658:// V_TRIG_PREOP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 659:// V_BFM_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 660:// V_CVT_PKNORM_I16_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 661:// V_CVT_PKNORM_U16_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 662:// V_CVT_PKRTZ_F16_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 663:// V_CVT_PK_U16_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 664:// V_CVT_PK_I16_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 665:// V_CVT_PKNORM_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 666:// V_CVT_PKNORM_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 668:// V_ADD_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 669:// V_SUB_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 670:// V_ADD_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 671:// V_SUB_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 672:// V_PACK_B32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 16:// V_CMP_CLASS_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 17:// V_CMPX_CLASS_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 18:// V_CMP_CLASS_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 19:// V_CMPX_CLASS_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 20:// V_CMP_CLASS_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 21:// V_CMPX_CLASS_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 32:// V_CMP_F_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 33:// V_CMP_LT_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 34:// V_CMP_EQ_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 35:// V_CMP_LE_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 36:// V_CMP_GT_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 37:// V_CMP_LG_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 38:// V_CMP_GE_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 39:// V_CMP_O_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 40:// V_CMP_U_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 41:// V_CMP_NGE_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 42:// V_CMP_NLG_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 43:// V_CMP_NGT_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 44:// V_CMP_NLE_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 45:// V_CMP_NEQ_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 46:// V_CMP_NLT_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 47:// V_CMP_TRU_F16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 48:// V_CMPX_F_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 49:// V_CMPX_LT_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 50:// V_CMPX_EQ_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 51:// V_CMPX_LE_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 52:// V_CMPX_GT_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 53:// V_CMPX_LG_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 54:// V_CMPX_GE_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 55:// V_CMPX_O_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 56:// V_CMPX_U_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 57:// V_CMPX_NGE_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 58:// V_CMPX_NLG_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 59:// V_CMPX_NGT_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 60:// V_CMPX_NLE_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 61:// V_CMPX_NEQ_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 62:// V_CMPX_NLT_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 63:// V_CMPX_TRU_F16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 64:// V_CMP_F_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 65:// V_CMP_LT_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 66:// V_CMP_EQ_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 67:// V_CMP_LE_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 68:// V_CMP_GT_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 69:// V_CMP_LG_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 70:// V_CMP_GE_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 71:// V_CMP_O_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 72:// V_CMP_U_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 73:// V_CMP_NGE_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 74:// V_CMP_NLG_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 75:// V_CMP_NGT_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 76:// V_CMP_NLE_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 77:// V_CMP_NEQ_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 78:// V_CMP_NLT_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 79:// V_CMP_TRU_F32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 80:// V_CMPX_F_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 81:// V_CMPX_LT_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 82:// V_CMPX_EQ_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 83:// V_CMPX_LE_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 84:// V_CMPX_GT_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 85:// V_CMPX_LG_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 86:// V_CMPX_GE_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 87:// V_CMPX_O_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 88:// V_CMPX_U_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 89:// V_CMPX_NGE_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 90:// V_CMPX_NLG_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 91:// V_CMPX_NGT_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 92:// V_CMPX_NLE_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 93:// V_CMPX_NEQ_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 94:// V_CMPX_NLT_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 95:// V_CMPX_TRU_F32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 96:// V_CMP_F_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 97:// V_CMP_LT_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 98:// V_CMP_EQ_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 99:// V_CMP_LE_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 100:// V_CMP_GT_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 101:// V_CMP_LG_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 102:// V_CMP_GE_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 103:// V_CMP_O_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 104:// V_CMP_U_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 105:// V_CMP_NGE_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 106:// V_CMP_NLG_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 107:// V_CMP_NGT_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 108:// V_CMP_NLE_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 109:// V_CMP_NEQ_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 110:// V_CMP_NLT_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 111:// V_CMP_TRU_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 112:// V_CMPX_F_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 113:// V_CMPX_LT_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 114:// V_CMPX_EQ_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 115:// V_CMPX_LE_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 116:// V_CMPX_GT_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 117:// V_CMPX_LG_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 118:// V_CMPX_GE_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 119:// V_CMPX_O_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 120:// V_CMPX_U_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 121:// V_CMPX_NGE_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 122:// V_CMPX_NLG_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 123:// V_CMPX_NGT_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 124:// V_CMPX_NLE_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 125:// V_CMPX_NEQ_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 126:// V_CMPX_NLT_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 127:// V_CMPX_TRU_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 160:// V_CMP_F_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 161:// V_CMP_LT_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 162:// V_CMP_EQ_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 163:// V_CMP_LE_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 164:// V_CMP_GT_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 165:// V_CMP_NE_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 166:// V_CMP_GE_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 167:// V_CMP_T_I16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 168:// V_CMP_F_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 169:// V_CMP_LT_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 170:// V_CMP_EQ_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 171:// V_CMP_LE_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 172:// V_CMP_GT_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 173:// V_CMP_NE_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 174:// V_CMP_GE_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 175:// V_CMP_T_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 176:// V_CMPX_F_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 177:// V_CMPX_LT_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 178:// V_CMPX_EQ_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 179:// V_CMPX_LE_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 180:// V_CMPX_GT_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 181:// V_CMPX_NE_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 182:// V_CMPX_GE_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 183:// V_CMPX_T_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 184:// V_CMPX_F_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 185:// V_CMPX_LT_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 186:// V_CMPX_EQ_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 187:// V_CMPX_LE_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 188:// V_CMPX_GT_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 189:// V_CMPX_NE_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 190:// V_CMPX_GE_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 191:// V_CMPX_T_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 192:// V_CMP_F_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 193:// V_CMP_LT_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 194:// V_CMP_EQ_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 195:// V_CMP_LE_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 196:// V_CMP_GT_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 197:// V_CMP_NE_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 198:// V_CMP_GE_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 199:// V_CMP_T_I32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 200:// V_CMP_F_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 201:// V_CMP_LT_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 202:// V_CMP_EQ_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 203:// V_CMP_LE_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 204:// V_CMP_GT_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 205:// V_CMP_NE_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 206:// V_CMP_GE_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 207:// V_CMP_T_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 208:// V_CMPX_F_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 209:// V_CMPX_LT_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 210:// V_CMPX_EQ_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 211:// V_CMPX_LE_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 212:// V_CMPX_GT_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 213:// V_CMPX_NE_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 214:// V_CMPX_GE_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 215:// V_CMPX_T_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 216:// V_CMPX_F_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 217:// V_CMPX_LT_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 218:// V_CMPX_EQ_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 219:// V_CMPX_LE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 220:// V_CMPX_GT_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 221:// V_CMPX_NE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 222:// V_CMPX_GE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 223:// V_CMPX_T_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 224:// V_CMP_F_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 225:// V_CMP_LT_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 226:// V_CMP_EQ_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 227:// V_CMP_LE_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 228:// V_CMP_GT_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 229:// V_CMP_NE_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 230:// V_CMP_GE_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 231:// V_CMP_T_I64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 232:// V_CMP_F_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 233:// V_CMP_LT_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 234:// V_CMP_EQ_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 235:// V_CMP_LE_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 236:// V_CMP_GT_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 237:// V_CMP_NE_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 238:// V_CMP_GE_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 239:// V_CMP_T_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 240:// V_CMPX_F_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 241:// V_CMPX_LT_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 242:// V_CMPX_EQ_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 243:// V_CMPX_LE_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 244:// V_CMPX_GT_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 245:// V_CMPX_NE_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 246:// V_CMPX_GE_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 247:// V_CMPX_T_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 248:// V_CMPX_F_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 249:// V_CMPX_LT_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 250:// V_CMPX_EQ_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 251:// V_CMPX_LE_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 252:// V_CMPX_GT_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 253:// V_CMPX_NE_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 254:// V_CMPX_GE_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 255:// V_CMPX_T_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP1Operands(){ -layout_ENC_VOP1 & layout = insn_layout.ENC_VOP1; -switch(layout.OP){ -case 0:// V_NOP -break; -case 1:// V_MOV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 2:// V_READFIRSTLANE_B32 -insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); -break; -case 3:// V_CVT_I32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 4:// V_CVT_F64_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 5:// V_CVT_F32_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 6:// V_CVT_F32_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 7:// V_CVT_U32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 8:// V_CVT_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 10:// V_CVT_F16_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 11:// V_CVT_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 12:// V_CVT_RPI_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 13:// V_CVT_FLR_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 14:// V_CVT_OFF_F32_I4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 15:// V_CVT_F32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 16:// V_CVT_F64_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 17:// V_CVT_F32_UBYTE0 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 18:// V_CVT_F32_UBYTE1 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 19:// V_CVT_F32_UBYTE2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 20:// V_CVT_F32_UBYTE3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 21:// V_CVT_U32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 22:// V_CVT_F64_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 23:// V_TRUNC_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 24:// V_CEIL_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 25:// V_RNDNE_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 26:// V_FLOOR_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 27:// V_FRACT_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 28:// V_TRUNC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 29:// V_CEIL_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 30:// V_RNDNE_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 31:// V_FLOOR_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 32:// V_EXP_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 33:// V_LOG_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 34:// V_RCP_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 35:// V_RCP_IFLAG_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 36:// V_RSQ_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 37:// V_RCP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 38:// V_RSQ_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 39:// V_SQRT_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 40:// V_SQRT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 41:// V_SIN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 42:// V_COS_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 43:// V_NOT_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 44:// V_BFREV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 45:// V_FFBH_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 46:// V_FFBL_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 47:// V_FFBH_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 48:// V_FREXP_EXP_I32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 49:// V_FREXP_MANT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 50:// V_FRACT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 51:// V_FREXP_EXP_I32_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 52:// V_FREXP_MANT_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 53:// V_CLREXCP -break; -case 55:// V_SCREEN_PARTITION_4SE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 57:// V_CVT_F16_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 58:// V_CVT_F16_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 59:// V_CVT_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 60:// V_CVT_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 61:// V_RCP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 62:// V_SQRT_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 63:// V_RSQ_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 64:// V_LOG_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 65:// V_EXP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 66:// V_FREXP_MANT_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 67:// V_FREXP_EXP_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 68:// V_FLOOR_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 69:// V_CEIL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 70:// V_TRUNC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 71:// V_RNDNE_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 72:// V_FRACT_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 73:// V_SIN_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 74:// V_COS_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 75:// V_EXP_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 76:// V_LOG_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 77:// V_CVT_NORM_I16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 78:// V_CVT_NORM_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -break; -case 79:// V_SAT_PK_U8_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 81:// V_SWAP_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2Operands(){ -layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; -switch(layout.OP){ -case 0:// V_CNDMASK_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 1:// V_ADD_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 2:// V_SUB_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 3:// V_SUBREV_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 4:// V_MUL_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 5:// V_MUL_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 6:// V_MUL_I32_I24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 7:// V_MUL_HI_I32_I24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 8:// V_MUL_U32_U24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 9:// V_MUL_HI_U32_U24 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 10:// V_MIN_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 11:// V_MAX_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 12:// V_MIN_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 13:// V_MAX_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 14:// V_MIN_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 15:// V_MAX_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 16:// V_LSHRREV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 17:// V_ASHRREV_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 18:// V_LSHLREV_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 19:// V_AND_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 20:// V_OR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 21:// V_XOR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 22:// V_MAC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 25:// V_ADD_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 26:// V_SUB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 27:// V_SUBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 28:// V_ADDC_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 29:// V_SUBB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 30:// V_SUBBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); -break; -case 31:// V_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 32:// V_SUB_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 33:// V_SUBREV_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 34:// V_MUL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 35:// V_MAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 38:// V_ADD_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 39:// V_SUB_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 40:// V_SUBREV_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 41:// V_MUL_LO_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 42:// V_LSHLREV_B16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 43:// V_LSHRREV_B16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 44:// V_ASHRREV_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 45:// V_MAX_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 46:// V_MIN_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 47:// V_MAX_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 48:// V_MAX_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 49:// V_MIN_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 50:// V_MIN_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 51:// V_LDEXP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 52:// V_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 53:// V_SUB_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 54:// V_SUBREV_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 55:// V_DOT2C_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 56:// V_DOT2C_I32_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 57:// V_DOT4C_I32_I8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 58:// V_DOT8C_I32_I4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 59:// V_FMAC_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 60:// V_PK_FMAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 61:// V_XNOR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2_LITERALOperands(){ -layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; -switch(layout.OP){ -case 23:// V_MADMK_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 24:// V_MADAK_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); -break; -case 36:// V_MADMK_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 37:// V_MADAK_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); -break; -} -} -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3BOperands(){ -layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; -switch(layout.OP){ -case 281:// V_ADD_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 282:// V_SUB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 283:// V_SUBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 284:// V_ADDC_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); -break; -case 285:// V_SUBB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); -break; -case 286:// V_SUBBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); -break; -case 480:// V_DIV_SCALE_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 481:// V_DIV_SCALE_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -break; -case 488:// V_MAD_U64_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -break; -case 489:// V_MAD_I64_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; } } -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3POperands(){ -layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; +void InstructionDecoder_amdgpu_gfx908::finalizeENC_MIMGOperands(){ +layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; switch(layout.OP){ -case 0:// V_PK_MAD_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 1:// V_PK_MUL_LO_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 2:// V_PK_ADD_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 3:// V_PK_SUB_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 4:// V_PK_LSHLREV_B16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 5:// V_PK_LSHRREV_B16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 6:// V_PK_ASHRREV_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 7:// V_PK_MAX_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 8:// V_PK_MIN_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 9:// V_PK_MAD_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 10:// V_PK_ADD_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 11:// V_PK_SUB_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 12:// V_PK_MAX_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 13:// V_PK_MIN_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 14:// V_PK_FMA_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 15:// V_PK_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 16:// V_PK_MUL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 17:// V_PK_MIN_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 18:// V_PK_MAX_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +case 0:case 1:case 2:case 3:case 4:case 5: +//IMAGE_LOAD,IMAGE_LOAD_MIP,IMAGE_LOAD_PCK,IMAGE_LOAD_PCK_SGN,IMAGE_LOAD_MIP_PCK,IMAGE_LOAD_MIP_PCK_SGN +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); break; -case 32:// V_MAD_MIX_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 8:case 9:case 10:case 11: +//IMAGE_STORE,IMAGE_STORE_MIP,IMAGE_STORE_PCK,IMAGE_STORE_MIP_PCK +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); break; -case 33:// V_MAD_MIXLO_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 14: +//IMAGE_GET_RESINFO +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); break; -case 34:// V_MAD_MIXHI_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28: +//IMAGE_ATOMIC_SWAP,IMAGE_ATOMIC_CMPSWAP,IMAGE_ATOMIC_ADD,IMAGE_ATOMIC_SUB,IMAGE_ATOMIC_SMIN,IMAGE_ATOMIC_UMIN,IMAGE_ATOMIC_SMAX,IMAGE_ATOMIC_UMAX,IMAGE_ATOMIC_AND,IMAGE_ATOMIC_OR,IMAGE_ATOMIC_XOR,IMAGE_ATOMIC_INC,IMAGE_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); break; -case 35:// V_DOT2_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 32:case 39:case 64:case 66:case 71:case 74:case 75:case 96: +//IMAGE_SAMPLE,IMAGE_SAMPLE_LZ,IMAGE_GATHER4,IMAGE_GATHER4H,IMAGE_GATHER4_LZ,IMAGE_GATHER4H_PCK,IMAGE_GATHER8H_PCK,IMAGE_GET_LOD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 38:// V_DOT2_I32_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 33:case 36:case 37:case 40:case 47:case 48:case 55:case 65:case 68:case 69:case 72:case 79:case 80:case 87: +//IMAGE_SAMPLE_CL,IMAGE_SAMPLE_L,IMAGE_SAMPLE_B,IMAGE_SAMPLE_C,IMAGE_SAMPLE_C_LZ,IMAGE_SAMPLE_O,IMAGE_SAMPLE_LZ_O,IMAGE_GATHER4_CL,IMAGE_GATHER4_L,IMAGE_GATHER4_B,IMAGE_GATHER4_C,IMAGE_GATHER4_C_LZ,IMAGE_GATHER4_O,IMAGE_GATHER4_LZ_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 39:// V_DOT2_U32_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 34:case 104: +//IMAGE_SAMPLE_D,IMAGE_SAMPLE_CD +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 40:// V_DOT4_I32_I8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 35:case 42:case 50:case 105:case 106:case 108: +//IMAGE_SAMPLE_D_CL,IMAGE_SAMPLE_C_D,IMAGE_SAMPLE_D_O,IMAGE_SAMPLE_CD_CL,IMAGE_SAMPLE_C_CD,IMAGE_SAMPLE_CD_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 41:// V_DOT4_U32_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 38:case 41:case 44:case 45:case 49:case 52:case 53:case 56:case 63:case 70:case 73:case 76:case 77:case 81:case 84:case 85:case 88:case 95: +//IMAGE_SAMPLE_B_CL,IMAGE_SAMPLE_C_CL,IMAGE_SAMPLE_C_L,IMAGE_SAMPLE_C_B,IMAGE_SAMPLE_CL_O,IMAGE_SAMPLE_L_O,IMAGE_SAMPLE_B_O,IMAGE_SAMPLE_C_O,IMAGE_SAMPLE_C_LZ_O,IMAGE_GATHER4_B_CL,IMAGE_GATHER4_C_CL,IMAGE_GATHER4_C_L,IMAGE_GATHER4_C_B,IMAGE_GATHER4_CL_O,IMAGE_GATHER4_L_O,IMAGE_GATHER4_B_O,IMAGE_GATHER4_C_O,IMAGE_GATHER4_C_LZ_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 42:// V_DOT8_I32_I4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 43:case 51:case 58:case 107:case 109:case 110: +//IMAGE_SAMPLE_C_D_CL,IMAGE_SAMPLE_D_CL_O,IMAGE_SAMPLE_C_D_O,IMAGE_SAMPLE_C_CD_CL,IMAGE_SAMPLE_CD_CL_O,IMAGE_SAMPLE_C_CD_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 43:// V_DOT8_U32_U4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +case 46:case 54:case 57:case 60:case 61:case 78:case 86:case 89:case 92:case 93: +//IMAGE_SAMPLE_C_B_CL,IMAGE_SAMPLE_B_CL_O,IMAGE_SAMPLE_C_CL_O,IMAGE_SAMPLE_C_L_O,IMAGE_SAMPLE_C_B_O,IMAGE_GATHER4_C_B_CL,IMAGE_GATHER4_B_CL_O,IMAGE_GATHER4_C_CL_O,IMAGE_GATHER4_C_L_O,IMAGE_GATHER4_C_B_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 88:// V_ACCVGPR_READ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); +case 59:case 111: +//IMAGE_SAMPLE_C_D_CL_O,IMAGE_SAMPLE_C_CD_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; -case 89:// V_ACCVGPR_WRITE -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +case 62:case 94: +//IMAGE_SAMPLE_C_B_CL_O,IMAGE_GATHER4_C_B_CL_O +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); break; } } -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3P_MFMAOperands(){ -layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; +void InstructionDecoder_amdgpu_gfx908::finalizeENC_MTBUFOperands(){ +layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; switch(layout.OP){ -case 64:// V_MFMA_F32_32X32X1F32 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 65:// V_MFMA_F32_16X16X1F32 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 66:// V_MFMA_F32_4X4X1F32 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 68:// V_MFMA_F32_32X32X2F32 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 69:// V_MFMA_F32_16X16X4F32 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 72:// V_MFMA_F32_32X32X4F16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 73:// V_MFMA_F32_16X16X4F16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 74:// V_MFMA_F32_4X4X4F16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 76:// V_MFMA_F32_32X32X8F16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 77:// V_MFMA_F32_16X16X16F16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 80:// V_MFMA_I32_32X32X4I8 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 81:// V_MFMA_I32_16X16X4I8 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 82:// V_MFMA_I32_4X4X4I8 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); -break; -case 84:// V_MFMA_I32_32X32X8I8 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 0:case 8:case 9: +//TBUFFER_LOAD_FORMAT_X,TBUFFER_LOAD_FORMAT_D16_X,TBUFFER_LOAD_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 85:// V_MFMA_I32_16X16X16I8 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 1:case 10:case 11: +//TBUFFER_LOAD_FORMAT_XY,TBUFFER_LOAD_FORMAT_D16_XYZ,TBUFFER_LOAD_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 104:// V_MFMA_F32_32X32X2BF16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 2: +//TBUFFER_LOAD_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 105:// V_MFMA_F32_16X16X2BF16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 3: +//TBUFFER_LOAD_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 107:// V_MFMA_F32_4X4X2BF16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 4:case 12:case 13: +//TBUFFER_STORE_FORMAT_X,TBUFFER_STORE_FORMAT_D16_X,TBUFFER_STORE_FORMAT_D16_XY +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 108:// V_MFMA_F32_32X32X4BF16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 5:case 14:case 15: +//TBUFFER_STORE_FORMAT_XY,TBUFFER_STORE_FORMAT_D16_XYZ,TBUFFER_STORE_FORMAT_D16_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 109:// V_MFMA_F32_16X16X8BF16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +case 6: +//TBUFFER_STORE_FORMAT_XYZ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +break; +case 7: +//TBUFFER_STORE_FORMAT_XYZW +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; } } -void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOPCOperands(){ -layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; +void InstructionDecoder_amdgpu_gfx908::finalizeENC_MUBUFOperands(){ +layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; switch(layout.OP){ -case 16:// V_CMP_CLASS_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 17:// V_CMPX_CLASS_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 18:// V_CMP_CLASS_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 19:// V_CMPX_CLASS_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 20:// V_CMP_CLASS_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 21:// V_CMPX_CLASS_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 0:case 8:case 9:case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38: +//BUFFER_LOAD_FORMAT_X,BUFFER_LOAD_FORMAT_D16_X,BUFFER_LOAD_FORMAT_D16_XY,BUFFER_LOAD_UBYTE,BUFFER_LOAD_SBYTE,BUFFER_LOAD_USHORT,BUFFER_LOAD_SSHORT,BUFFER_LOAD_DWORD,BUFFER_LOAD_UBYTE_D16,BUFFER_LOAD_UBYTE_D16_HI,BUFFER_LOAD_SBYTE_D16,BUFFER_LOAD_SBYTE_D16_HI,BUFFER_LOAD_SHORT_D16,BUFFER_LOAD_SHORT_D16_HI,BUFFER_LOAD_FORMAT_D16_HI_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 32:// V_CMP_F_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 1:case 10:case 11:case 21: +//BUFFER_LOAD_FORMAT_XY,BUFFER_LOAD_FORMAT_D16_XYZ,BUFFER_LOAD_FORMAT_D16_XYZW,BUFFER_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 33:// V_CMP_LT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 2:case 22: +//BUFFER_LOAD_FORMAT_XYZ,BUFFER_LOAD_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 34:// V_CMP_EQ_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 3:case 23: +//BUFFER_LOAD_FORMAT_XYZW,BUFFER_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 35:// V_CMP_LE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 4:case 12:case 13:case 24:case 25:case 26:case 27:case 28:case 39: +//BUFFER_STORE_FORMAT_X,BUFFER_STORE_FORMAT_D16_X,BUFFER_STORE_FORMAT_D16_XY,BUFFER_STORE_BYTE,BUFFER_STORE_BYTE_D16_HI,BUFFER_STORE_SHORT,BUFFER_STORE_SHORT_D16_HI,BUFFER_STORE_DWORD,BUFFER_STORE_FORMAT_D16_HI_X +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 36:// V_CMP_GT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 5:case 14:case 15:case 29: +//BUFFER_STORE_FORMAT_XY,BUFFER_STORE_FORMAT_D16_XYZ,BUFFER_STORE_FORMAT_D16_XYZW,BUFFER_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 37:// V_CMP_LG_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 6:case 30: +//BUFFER_STORE_FORMAT_XYZ,BUFFER_STORE_DWORDX3 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 38:// V_CMP_GE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 7:case 31: +//BUFFER_STORE_FORMAT_XYZW,BUFFER_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 39:// V_CMP_O_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 61: +//BUFFER_STORE_LDS_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 40:// V_CMP_U_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 62:case 63: +//BUFFER_WBINVL1,BUFFER_WBINVL1_VOL break; -case 41:// V_CMP_NGE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78: +//BUFFER_ATOMIC_SWAP,BUFFER_ATOMIC_ADD,BUFFER_ATOMIC_SUB,BUFFER_ATOMIC_SMIN,BUFFER_ATOMIC_UMIN,BUFFER_ATOMIC_SMAX,BUFFER_ATOMIC_UMAX,BUFFER_ATOMIC_AND,BUFFER_ATOMIC_OR,BUFFER_ATOMIC_XOR,BUFFER_ATOMIC_INC,BUFFER_ATOMIC_DEC,BUFFER_ATOMIC_ADD_F32,BUFFER_ATOMIC_PK_ADD_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 42:// V_CMP_NLG_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: +//BUFFER_ATOMIC_CMPSWAP,BUFFER_ATOMIC_SWAP_X2,BUFFER_ATOMIC_ADD_X2,BUFFER_ATOMIC_SUB_X2,BUFFER_ATOMIC_SMIN_X2,BUFFER_ATOMIC_UMIN_X2,BUFFER_ATOMIC_SMAX_X2,BUFFER_ATOMIC_UMAX_X2,BUFFER_ATOMIC_AND_X2,BUFFER_ATOMIC_OR_X2,BUFFER_ATOMIC_XOR_X2,BUFFER_ATOMIC_INC_X2,BUFFER_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 43:// V_CMP_NGT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 97: +//BUFFER_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); break; -case 44:// V_CMP_NLE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SMEMOperands(){ +layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; +switch(layout.OP){ +case 0:case 5: +//S_LOAD_DWORD,S_SCRATCH_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 45:// V_CMP_NEQ_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 1:case 6: +//S_LOAD_DWORDX2,S_SCRATCH_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 46:// V_CMP_NLT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 2:case 7: +//S_LOAD_DWORDX4,S_SCRATCH_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 47:// V_CMP_TRU_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 3: +//S_LOAD_DWORDX8 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 48:// V_CMPX_F_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 4: +//S_LOAD_DWORDX16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 49:// V_CMPX_LT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 8: +//S_BUFFER_LOAD_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 50:// V_CMPX_EQ_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 9: +//S_BUFFER_LOAD_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 51:// V_CMPX_LE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 10: +//S_BUFFER_LOAD_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 52:// V_CMPX_GT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 11: +//S_BUFFER_LOAD_DWORDX8 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 53:// V_CMPX_LG_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 12: +//S_BUFFER_LOAD_DWORDX16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 54:// V_CMPX_GE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 16:case 21: +//S_STORE_DWORD,S_SCRATCH_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 55:// V_CMPX_O_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 17:case 22: +//S_STORE_DWORDX2,S_SCRATCH_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 56:// V_CMPX_U_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 18:case 23: +//S_STORE_DWORDX4,S_SCRATCH_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 57:// V_CMPX_NGE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 24: +//S_BUFFER_STORE_DWORD +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 58:// V_CMPX_NLG_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 25: +//S_BUFFER_STORE_DWORDX2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 59:// V_CMPX_NGT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 26: +//S_BUFFER_STORE_DWORDX4 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 60:// V_CMPX_NLE_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 32:case 33:case 34:case 35: +//S_DCACHE_INV,S_DCACHE_WB,S_DCACHE_INV_VOL,S_DCACHE_WB_VOL break; -case 61:// V_CMPX_NEQ_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 36:case 37: +//S_MEMTIME,S_MEMREALTIME +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); break; -case 62:// V_CMPX_NLT_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 38: +//S_ATC_PROBE +insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 63:// V_CMPX_TRU_F16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 39: +//S_ATC_PROBE_BUFFER +insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 64:// V_CMP_F_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 40:case 41: +//S_DCACHE_DISCARD,S_DCACHE_DISCARD_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 65:// V_CMP_LT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76: +//S_BUFFER_ATOMIC_SWAP,S_BUFFER_ATOMIC_ADD,S_BUFFER_ATOMIC_SUB,S_BUFFER_ATOMIC_SMIN,S_BUFFER_ATOMIC_UMIN,S_BUFFER_ATOMIC_SMAX,S_BUFFER_ATOMIC_UMAX,S_BUFFER_ATOMIC_AND,S_BUFFER_ATOMIC_OR,S_BUFFER_ATOMIC_XOR,S_BUFFER_ATOMIC_INC,S_BUFFER_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 66:// V_CMP_EQ_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: +//S_BUFFER_ATOMIC_CMPSWAP,S_BUFFER_ATOMIC_SWAP_X2,S_BUFFER_ATOMIC_ADD_X2,S_BUFFER_ATOMIC_SUB_X2,S_BUFFER_ATOMIC_SMIN_X2,S_BUFFER_ATOMIC_UMIN_X2,S_BUFFER_ATOMIC_SMAX_X2,S_BUFFER_ATOMIC_UMAX_X2,S_BUFFER_ATOMIC_AND_X2,S_BUFFER_ATOMIC_OR_X2,S_BUFFER_ATOMIC_XOR_X2,S_BUFFER_ATOMIC_INC_X2,S_BUFFER_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +break; +case 97: +//S_BUFFER_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 67:// V_CMP_LE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 128:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 140: +//S_ATOMIC_SWAP,S_ATOMIC_ADD,S_ATOMIC_SUB,S_ATOMIC_SMIN,S_ATOMIC_UMIN,S_ATOMIC_SMAX,S_ATOMIC_UMAX,S_ATOMIC_AND,S_ATOMIC_OR,S_ATOMIC_XOR,S_ATOMIC_INC,S_ATOMIC_DEC +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 68:// V_CMP_GT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 129:case 160:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172: +//S_ATOMIC_CMPSWAP,S_ATOMIC_SWAP_X2,S_ATOMIC_ADD_X2,S_ATOMIC_SUB_X2,S_ATOMIC_SMIN_X2,S_ATOMIC_UMIN_X2,S_ATOMIC_SMAX_X2,S_ATOMIC_UMAX_X2,S_ATOMIC_AND_X2,S_ATOMIC_OR_X2,S_ATOMIC_XOR_X2,S_ATOMIC_INC_X2,S_ATOMIC_DEC_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 69:// V_CMP_LG_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 161: +//S_ATOMIC_CMPSWAP_X2 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); break; -case 70:// V_CMP_GE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP1Operands(){ +layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; +switch(layout.OP){ +case 0:case 8:case 14:case 16:case 18:case 20: +//S_MOV_B32,S_BREV_B32,S_FF0_I32_B32,S_FF1_I32_B32,S_FLBIT_I32_B32,S_FLBIT_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); break; -case 71:// V_CMP_O_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 1:case 9: +//S_MOV_B64,S_BREV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); break; -case 72:// V_CMP_U_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 2: +//S_CMOV_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 73:// V_CMP_NGE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 3: +//S_CMOV_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 74:// V_CMP_NLG_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 4:case 6:case 10:case 12:case 40:case 48: +//S_NOT_B32,S_WQM_B32,S_BCNT0_I32_B32,S_BCNT1_I32_B32,S_QUADMASK_B32,S_ABS_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 75:// V_CMP_NGT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 5:case 7:case 41: +//S_NOT_B64,S_WQM_B64,S_QUADMASK_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 76:// V_CMP_NLE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 11:case 13: +//S_BCNT0_I32_B64,S_BCNT1_I32_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 77:// V_CMP_NEQ_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 15:case 17:case 19:case 21: +//S_FF0_I32_B64,S_FF1_I32_B64,S_FLBIT_I32_B64,S_FLBIT_I32_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); break; -case 78:// V_CMP_NLT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 22:case 23: +//S_SEXT_I32_I8,S_SEXT_I32_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); break; -case 79:// V_CMP_TRU_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 24:case 26: +//S_BITSET0_B32,S_BITSET1_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); break; -case 80:// V_CMPX_F_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 25:case 27: +//S_BITSET0_B64,S_BITSET1_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); break; -case 81:// V_CMPX_LT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 28: +//S_GETPC_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); break; -case 82:// V_CMPX_EQ_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 29: +//S_SETPC_B64 +setBranch(); +setModifyPC(); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); break; -case 83:// V_CMPX_LE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 30: +//S_SWAPPC_B64 +setBranch(); +setModifyPC(); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); break; -case 84:// V_CMPX_GT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 31: +//S_RFE_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); break; -case 85:// V_CMPX_LG_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 51:case 52:case 53:case 54: +//S_AND_SAVEEXEC_B64,S_OR_SAVEEXEC_B64,S_XOR_SAVEEXEC_B64,S_ANDN2_SAVEEXEC_B64,S_ORN2_SAVEEXEC_B64,S_NAND_SAVEEXEC_B64,S_NOR_SAVEEXEC_B64,S_XNOR_SAVEEXEC_B64,S_ANDN1_SAVEEXEC_B64,S_ORN1_SAVEEXEC_B64,S_ANDN1_WREXEC_B64,S_ANDN2_WREXEC_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); break; -case 86:// V_CMPX_GE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 42: +//S_MOVRELS_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 87:// V_CMPX_O_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 43: +//S_MOVRELS_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 88:// V_CMPX_U_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 44: +//S_MOVRELD_B32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 89:// V_CMPX_NGE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 45: +//S_MOVRELD_B64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 90:// V_CMPX_NLG_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 46: +//S_CBRANCH_JOIN +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); break; -case 91:// V_CMPX_NGT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 50: +//S_SET_GPR_IDX_IDX +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 92:// V_CMPX_NLE_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 55: +//S_BITREPLICATE_B64_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); break; -case 93:// V_CMPX_NEQ_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP2Operands(){ +layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; +switch(layout.OP){ +case 0:case 1:case 2:case 3:case 6:case 7:case 8:case 9:case 12:case 14:case 16:case 18:case 20:case 22:case 24:case 26:case 28:case 30:case 32:case 37:case 38:case 42:case 46:case 47:case 48:case 49: +//S_ADD_U32,S_SUB_U32,S_ADD_I32,S_SUB_I32,S_MIN_I32,S_MIN_U32,S_MAX_I32,S_MAX_U32,S_AND_B32,S_OR_B32,S_XOR_B32,S_ANDN2_B32,S_ORN2_B32,S_NAND_B32,S_NOR_B32,S_XNOR_B32,S_LSHL_B32,S_LSHR_B32,S_ASHR_I32,S_BFE_U32,S_BFE_I32,S_ABSDIFF_I32,S_LSHL1_ADD_U32,S_LSHL2_ADD_U32,S_LSHL3_ADD_U32,S_LSHL4_ADD_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 94:// V_CMPX_NLT_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 4:case 5: +//S_ADDC_U32,S_SUBB_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 95:// V_CMPX_TRU_F32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 10: +//S_CSELECT_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 96:// V_CMP_F_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 11: +//S_CSELECT_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 97:// V_CMP_LT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 13:case 15:case 17:case 19:case 21:case 23:case 25:case 27: +//S_AND_B64,S_OR_B64,S_XOR_B64,S_ANDN2_B64,S_ORN2_B64,S_NAND_B64,S_NOR_B64,S_XNOR_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +break; +case 29:case 31:case 33:case 39:case 40: +//S_LSHL_B64,S_LSHR_B64,S_ASHR_I64,S_BFE_U64,S_BFE_I64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 98:// V_CMP_EQ_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 34:case 36:case 44:case 45:case 52: +//S_BFM_B32,S_MUL_I32,S_MUL_HI_U32,S_MUL_HI_I32,S_PACK_HH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); break; -case 99:// V_CMP_LE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 35: +//S_BFM_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); break; -case 100:// V_CMP_GT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 41: +//S_CBRANCH_G_FORK +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); break; -case 101:// V_CMP_LG_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 43: +//S_RFE_RESTORE_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); break; -case 102:// V_CMP_GE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 50: +//S_PACK_LL_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,16),true,false); break; -case 103:// V_CMP_O_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 51: +//S_PACK_LH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); break; -case 104:// V_CMP_U_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPCOperands(){ +layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; +switch(layout.OP){ +case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13: +//S_CMP_EQ_I32,S_CMP_LG_I32,S_CMP_GT_I32,S_CMP_GE_I32,S_CMP_LT_I32,S_CMP_LE_I32,S_CMP_EQ_U32,S_CMP_LG_U32,S_CMP_GT_U32,S_CMP_GE_U32,S_CMP_LT_U32,S_CMP_LE_U32,S_BITCMP0_B32,S_BITCMP1_B32 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 105:// V_CMP_NGE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 14:case 15: +//S_BITCMP0_B64,S_BITCMP1_B64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 106:// V_CMP_NLG_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 16: +//S_SETVSKIP +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); break; -case 107:// V_CMP_NGT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 17: +//S_SET_GPR_IDX_ON +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM4(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 108:// V_CMP_NLE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 18:case 19: +//S_CMP_EQ_U64,S_CMP_LG_U64 +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 109:// V_CMP_NEQ_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPKOperands(){ +layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; +switch(layout.OP){ +case 0:case 17: +//S_MOVK_I32,S_GETREG_B32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); break; -case 110:// V_CMP_NLT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 1: +//S_CMOVK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 111:// V_CMP_TRU_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13: +//S_CMPK_EQ_I32,S_CMPK_LG_I32,S_CMPK_GT_I32,S_CMPK_GE_I32,S_CMPK_LT_I32,S_CMPK_LE_I32,S_CMPK_EQ_U32,S_CMPK_LG_U32,S_CMPK_GT_U32,S_CMPK_GE_U32,S_CMPK_LT_U32,S_CMPK_LE_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 112:// V_CMPX_F_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 14: +//S_ADDK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); break; -case 113:// V_CMPX_LT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 15: +//S_MULK_I32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); break; -case 114:// V_CMPX_EQ_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 16: +//S_CBRANCH_I_FORK +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); break; -case 115:// V_CMPX_LE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 18: +//S_SETREG_B32 +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); break; -case 116:// V_CMPX_GT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 21: +//S_CALL_B64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); break; -case 117:// V_CMPX_LG_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeSOPK_INST_LITERAL_Operands(){ +layout_SOPK_INST_LITERAL_ & layout = insn_layout.SOPK_INST_LITERAL_; +switch(layout.OP){ +case 20: +//S_SETREG_IMM32_B32 +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); +insn_in_progress->appendOperand(decodeOPR_SIMM32(decodeOPR_LITERAL()),true,false); break; -case 118:// V_CMPX_GE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOPPOperands(){ +layout_ENC_SOPP & layout = insn_layout.ENC_SOPP; +switch(layout.OP){ +case 0:case 11:case 13:case 14:case 15:case 18:case 20:case 21: +//S_NOP,S_SETKILL,S_SETHALT,S_SLEEP,S_SETPRIO,S_TRAP,S_INCPERFLEVEL,S_DECPERFLEVEL +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); break; -case 119:// V_CMPX_O_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 1:case 3:case 10:case 19:case 27:case 28:case 30: +//S_ENDPGM,S_WAKEUP,S_BARRIER,S_ICACHE_INV,S_ENDPGM_SAVED,S_SET_GPR_IDX_OFF,S_ENDPGM_ORDERED_PS_DONE break; -case 120:// V_CMPX_U_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 2: +//S_BRANCH +setBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); break; -case 121:// V_CMPX_NGE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 4:case 5: +//S_CBRANCH_SCC0,S_CBRANCH_SCC1 +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); break; -case 122:// V_CMPX_NLG_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 6:case 7: +//S_CBRANCH_VCCZ,S_CBRANCH_VCCNZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 123:// V_CMPX_NGT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 8:case 9: +//S_CBRANCH_EXECZ,S_CBRANCH_EXECNZ +setBranch(); +setConditionalBranch(); +makeBranchTarget(isCall,isConditional,layout.SIMM16); +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); break; -case 124:// V_CMPX_NLE_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 12: +//S_WAITCNT +insn_in_progress->appendOperand(decodeOPR_WAITCNT(layout.SIMM16),true,false); +break; +case 16:case 17: +//S_SENDMSG,S_SENDMSGHALT +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 125:// V_CMPX_NEQ_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 22: +//S_TTRACEDATA +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 126:// V_CMPX_NLT_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 23:case 24:case 25:case 26: +//S_CBRANCH_CDBGSYS,S_CBRANCH_CDBGUSER,S_CBRANCH_CDBGSYS_OR_USER,S_CBRANCH_CDBGSYS_AND_USER +insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); break; -case 127:// V_CMPX_TRU_F64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 29: +//S_SET_GPR_IDX_MODE +insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 160:// V_CMP_F_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VINTRPOperands(){ +layout_ENC_VINTRP & layout = insn_layout.ENC_VINTRP; +switch(layout.OP){ +case 0: +//V_INTERP_P1_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 161:// V_CMP_LT_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 1: +//V_INTERP_P2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 162:// V_CMP_EQ_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 2: +//V_INTERP_MOV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PARAM(layout.VSRC,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 163:// V_CMP_LE_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3Operands(){ +layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; +switch(layout.OP){ +case 624: +//V_INTERP_P1_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 164:// V_CMP_GT_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 625: +//V_INTERP_P2_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 165:// V_CMP_NE_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 626: +//V_INTERP_MOV_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_PARAM(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); break; -case 166:// V_CMP_GE_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 320:case 373: +//V_NOP,V_CLREXCP break; -case 167:// V_CMP_T_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 321:case 325:case 326:case 327:case 328:case 332:case 333:case 334:case 337:case 338:case 339:case 340:case 347:case 348:case 349:case 350:case 351:case 352:case 353:case 354:case 355:case 356:case 359:case 361:case 362:case 363:case 364:case 365:case 366:case 367:case 371:case 372:case 375:case 395:case 396: +//V_MOV_B32,V_CVT_F32_I32,V_CVT_F32_U32,V_CVT_U32_F32,V_CVT_I32_F32,V_CVT_RPI_I32_F32,V_CVT_FLR_I32_F32,V_CVT_OFF_F32_I4,V_CVT_F32_UBYTE0,V_CVT_F32_UBYTE1,V_CVT_F32_UBYTE2,V_CVT_F32_UBYTE3,V_FRACT_F32,V_TRUNC_F32,V_CEIL_F32,V_RNDNE_F32,V_FLOOR_F32,V_EXP_F32,V_LOG_F32,V_RCP_F32,V_RCP_IFLAG_F32,V_RSQ_F32,V_SQRT_F32,V_SIN_F32,V_COS_F32,V_NOT_B32,V_BFREV_B32,V_FFBH_U32,V_FFBL_B32,V_FFBH_I32,V_FREXP_EXP_I32_F32,V_FREXP_MANT_F32,V_SCREEN_PARTITION_4SE_B32,V_EXP_LEGACY_F32,V_LOG_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); break; -case 168:// V_CMP_F_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 322: +//V_READFIRSTLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); break; -case 169:// V_CMP_LT_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 323:case 335:case 341:case 368: +//V_CVT_I32_F64,V_CVT_F32_F64,V_CVT_U32_F64,V_FREXP_EXP_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); break; -case 170:// V_CMP_EQ_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 324:case 336:case 342: +//V_CVT_F64_I32,V_CVT_F64_F32,V_CVT_F64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); break; -case 171:// V_CMP_LE_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 330:case 399: +//V_CVT_F16_F32,V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); break; -case 172:// V_CMP_GT_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 331: +//V_CVT_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); break; -case 173:// V_CMP_NE_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 343:case 344:case 345:case 346:case 357:case 358:case 360:case 369:case 370: +//V_TRUNC_F64,V_CEIL_F64,V_RNDNE_F64,V_FLOOR_F64,V_RCP_F64,V_RSQ_F64,V_SQRT_F64,V_FREXP_MANT_F64,V_FRACT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); break; -case 174:// V_CMP_GE_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 377:case 378:case 379:case 380:case 381:case 382:case 383:case 384:case 385:case 386:case 387:case 388:case 389:case 390:case 391:case 392:case 393:case 394:case 397:case 398: +//V_CVT_F16_U16,V_CVT_F16_I16,V_CVT_U16_F16,V_CVT_I16_F16,V_RCP_F16,V_SQRT_F16,V_RSQ_F16,V_LOG_F16,V_EXP_F16,V_FREXP_MANT_F16,V_FREXP_EXP_I16_F16,V_FLOOR_F16,V_CEIL_F16,V_TRUNC_F16,V_RNDNE_F16,V_FRACT_F16,V_SIN_F16,V_COS_F16,V_CVT_NORM_I16_F16,V_CVT_NORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); break; -case 175:// V_CMP_T_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 401: +//V_SWAP_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); break; -case 176:// V_CMPX_F_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 256: +//V_CNDMASK_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); break; -case 177:// V_CMPX_LT_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 257:case 258:case 259:case 260:case 261:case 262:case 263:case 264:case 265:case 266:case 267:case 268:case 269:case 270:case 271:case 275:case 276:case 277:case 308:case 309:case 317:case 645:case 646:case 647:case 648:case 651:case 652:case 653:case 659:case 660:case 661:case 662:case 663:case 664:case 668:case 669: +//V_ADD_F32,V_SUB_F32,V_SUBREV_F32,V_MUL_LEGACY_F32,V_MUL_F32,V_MUL_I32_I24,V_MUL_HI_I32_I24,V_MUL_U32_U24,V_MUL_HI_U32_U24,V_MIN_F32,V_MAX_F32,V_MIN_I32,V_MAX_I32,V_MIN_U32,V_MAX_U32,V_AND_B32,V_OR_B32,V_XOR_B32,V_ADD_U32,V_SUB_U32,V_XNOR_B32,V_MUL_LO_U32,V_MUL_HI_U32,V_MUL_HI_I32,V_LDEXP_F32,V_BCNT_U32_B32,V_MBCNT_LO_U32_B32,V_MBCNT_HI_U32_B32,V_BFM_B32,V_CVT_PKNORM_I16_F32,V_CVT_PKNORM_U16_F32,V_CVT_PKRTZ_F16_F32,V_CVT_PK_U16_U32,V_CVT_PK_I16_I32,V_ADD_I32,V_SUB_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 178:// V_CMPX_EQ_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 272:case 273:case 274:case 310: +//V_LSHRREV_B32,V_ASHRREV_I32,V_LSHLREV_B32,V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 179:// V_CMPX_LE_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 278:case 311:case 312:case 313:case 314:case 315:case 316:case 496: +//V_MAC_F32,V_DOT2C_F32_F16,V_DOT2C_I32_I16,V_DOT4C_I32_I8,V_DOT8C_I32_I4,V_FMAC_F32,V_PK_FMAC_F16,V_CVT_PKACCUM_U8_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 180:// V_CMPX_GT_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 287:case 288:case 290:case 294:case 295:case 297:case 301:case 302:case 303:case 304:case 305:case 306:case 307:case 670:case 671: +//V_ADD_F16,V_SUB_F16,V_MUL_F16,V_ADD_U16,V_SUB_U16,V_MUL_LO_U16,V_MAX_F16,V_MIN_F16,V_MAX_U16,V_MAX_I16,V_MIN_U16,V_MIN_I16,V_LDEXP_F16,V_ADD_I16,V_SUB_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); break; -case 181:// V_CMPX_NE_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 289:case 296:case 298:case 299:case 300: +//V_SUBREV_F16,V_SUBREV_U16,V_LSHLREV_B16,V_LSHRREV_B16,V_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); break; -case 182:// V_CMPX_GE_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 291: +//V_MAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); break; -case 183:// V_CMPX_T_I16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 448:case 449:case 450:case 451:case 452:case 453:case 454:case 455:case 456:case 457:case 458:case 459:case 461:case 462:case 463:case 464:case 465:case 466:case 467:case 468:case 469:case 470:case 471:case 472:case 473:case 474:case 475:case 476:case 477:case 478:case 484:case 493:case 499:case 509:case 510:case 511:case 512:case 513:case 514: +//V_MAD_LEGACY_F32,V_MAD_F32,V_MAD_I32_I24,V_MAD_U32_U24,V_CUBEID_F32,V_CUBESC_F32,V_CUBETC_F32,V_CUBEMA_F32,V_BFE_U32,V_BFE_I32,V_BFI_B32,V_FMA_F32,V_LERP_U8,V_ALIGNBIT_B32,V_ALIGNBYTE_B32,V_MIN3_F32,V_MIN3_I32,V_MIN3_U32,V_MAX3_F32,V_MAX3_I32,V_MAX3_U32,V_MED3_F32,V_MED3_I32,V_MED3_U32,V_SAD_U8,V_SAD_HI_U8,V_SAD_U16,V_SAD_U32,V_CVT_PK_U8_F32,V_DIV_FIXUP_F32,V_MSAD_U8,V_PERM_B32,V_XAD_U32,V_LSHL_ADD_U32,V_ADD_LSHL_U32,V_ADD3_U32,V_LSHL_OR_B32,V_AND_OR_B32,V_OR3_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); break; -case 184:// V_CMPX_F_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 460:case 479: +//V_FMA_F64,V_DIV_FIXUP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); break; -case 185:// V_CMPX_LT_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 482: +//V_DIV_FMAS_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 186:// V_CMPX_EQ_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 483: +//V_DIV_FMAS_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 187:// V_CMPX_LE_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 485:case 486: +//V_QSAD_PK_U16_U8,V_MQSAD_PK_U16_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); break; -case 188:// V_CMPX_GT_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 487: +//V_MQSAD_U32_U8 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+3,32),true,false); break; -case 189:// V_CMPX_NE_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 490:case 491:case 492:case 494:case 495:case 500:case 501:case 502:case 503:case 504:case 505:case 506:case 507:case 508:case 515:case 516:case 517:case 518:case 519: +//V_MAD_LEGACY_F16,V_MAD_LEGACY_U16,V_MAD_LEGACY_I16,V_FMA_LEGACY_F16,V_DIV_FIXUP_LEGACY_F16,V_MIN3_F16,V_MIN3_I16,V_MIN3_U16,V_MAX3_F16,V_MAX3_I16,V_MAX3_U16,V_MED3_F16,V_MED3_I16,V_MED3_U16,V_MAD_F16,V_MAD_U16,V_MAD_I16,V_FMA_F16,V_DIV_FIXUP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +break; +case 497:case 498: +//V_MAD_U32_U16,V_MAD_I32_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); break; -case 190:// V_CMPX_GE_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 628: +//V_INTERP_P1LL_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); break; -case 191:// V_CMPX_T_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 629:case 630:case 631: +//V_INTERP_P1LV_F16,V_INTERP_P2_LEGACY_F16,V_INTERP_P2_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); break; -case 192:// V_CMP_F_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 640:case 641:case 642:case 643: +//V_ADD_F64,V_MUL_F64,V_MIN_F64,V_MAX_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); break; -case 193:// V_CMP_LT_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 644:case 658: +//V_LDEXP_F64,V_TRIG_PREOP_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 194:// V_CMP_EQ_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 649: +//V_READLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); break; -case 195:// V_CMP_LE_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 650: +//V_WRITELANE_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); break; -case 196:// V_CMP_GT_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 655:case 656:case 657: +//V_LSHLREV_B64,V_LSHRREV_B64,V_ASHRREV_I64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); break; -case 197:// V_CMP_NE_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 665:case 666:case 672: +//V_CVT_PKNORM_I16_F16,V_CVT_PKNORM_U16_F16,V_PACK_B32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); break; -case 198:// V_CMP_GE_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 16:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: +//V_CMP_CLASS_F32,V_CMP_F_F32,V_CMP_LT_F32,V_CMP_EQ_F32,V_CMP_LE_F32,V_CMP_GT_F32,V_CMP_LG_F32,V_CMP_GE_F32,V_CMP_O_F32,V_CMP_U_F32,V_CMP_NGE_F32,V_CMP_NLG_F32,V_CMP_NGT_F32,V_CMP_NLE_F32,V_CMP_NEQ_F32,V_CMP_NLT_F32,V_CMP_TRU_F32,V_CMP_F_I32,V_CMP_LT_I32,V_CMP_EQ_I32,V_CMP_LE_I32,V_CMP_GT_I32,V_CMP_NE_I32,V_CMP_GE_I32,V_CMP_T_I32,V_CMP_F_U32,V_CMP_LT_U32,V_CMP_EQ_U32,V_CMP_LE_U32,V_CMP_GT_U32,V_CMP_NE_U32,V_CMP_GE_U32,V_CMP_T_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 199:// V_CMP_T_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 17:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:case 223: +//V_CMPX_CLASS_F32,V_CMPX_F_F32,V_CMPX_LT_F32,V_CMPX_EQ_F32,V_CMPX_LE_F32,V_CMPX_GT_F32,V_CMPX_LG_F32,V_CMPX_GE_F32,V_CMPX_O_F32,V_CMPX_U_F32,V_CMPX_NGE_F32,V_CMPX_NLG_F32,V_CMPX_NGT_F32,V_CMPX_NLE_F32,V_CMPX_NEQ_F32,V_CMPX_NLT_F32,V_CMPX_TRU_F32,V_CMPX_F_I32,V_CMPX_LT_I32,V_CMPX_EQ_I32,V_CMPX_LE_I32,V_CMPX_GT_I32,V_CMPX_NE_I32,V_CMPX_GE_I32,V_CMPX_T_I32,V_CMPX_F_U32,V_CMPX_LT_U32,V_CMPX_EQ_U32,V_CMPX_LE_U32,V_CMPX_GT_U32,V_CMPX_NE_U32,V_CMPX_GE_U32,V_CMPX_T_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 200:// V_CMP_F_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 18: +//V_CMP_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 201:// V_CMP_LT_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 19: +//V_CMPX_CLASS_F64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 202:// V_CMP_EQ_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175: +//V_CMP_CLASS_F16,V_CMP_F_F16,V_CMP_LT_F16,V_CMP_EQ_F16,V_CMP_LE_F16,V_CMP_GT_F16,V_CMP_LG_F16,V_CMP_GE_F16,V_CMP_O_F16,V_CMP_U_F16,V_CMP_NGE_F16,V_CMP_NLG_F16,V_CMP_NGT_F16,V_CMP_NLE_F16,V_CMP_NEQ_F16,V_CMP_NLT_F16,V_CMP_TRU_F16,V_CMP_F_I16,V_CMP_LT_I16,V_CMP_EQ_I16,V_CMP_LE_I16,V_CMP_GT_I16,V_CMP_NE_I16,V_CMP_GE_I16,V_CMP_T_I16,V_CMP_F_U16,V_CMP_LT_U16,V_CMP_EQ_U16,V_CMP_LE_U16,V_CMP_GT_U16,V_CMP_NE_U16,V_CMP_GE_U16,V_CMP_T_U16 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); break; -case 203:// V_CMP_LE_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191: +//V_CMPX_CLASS_F16,V_CMPX_F_F16,V_CMPX_LT_F16,V_CMPX_EQ_F16,V_CMPX_LE_F16,V_CMPX_GT_F16,V_CMPX_LG_F16,V_CMPX_GE_F16,V_CMPX_O_F16,V_CMPX_U_F16,V_CMPX_NGE_F16,V_CMPX_NLG_F16,V_CMPX_NGT_F16,V_CMPX_NLE_F16,V_CMPX_NEQ_F16,V_CMPX_NLT_F16,V_CMPX_TRU_F16,V_CMPX_F_I16,V_CMPX_LT_I16,V_CMPX_EQ_I16,V_CMPX_LE_I16,V_CMPX_GT_I16,V_CMPX_NE_I16,V_CMPX_GE_I16,V_CMPX_T_I16,V_CMPX_F_U16,V_CMPX_LT_U16,V_CMPX_EQ_U16,V_CMPX_LE_U16,V_CMPX_GT_U16,V_CMPX_NE_U16,V_CMPX_GE_U16,V_CMPX_T_U16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 204:// V_CMP_GT_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239: +//V_CMP_F_F64,V_CMP_LT_F64,V_CMP_EQ_F64,V_CMP_LE_F64,V_CMP_GT_F64,V_CMP_LG_F64,V_CMP_GE_F64,V_CMP_O_F64,V_CMP_U_F64,V_CMP_NGE_F64,V_CMP_NLG_F64,V_CMP_NGT_F64,V_CMP_NLE_F64,V_CMP_NEQ_F64,V_CMP_NLT_F64,V_CMP_TRU_F64,V_CMP_F_I64,V_CMP_LT_I64,V_CMP_EQ_I64,V_CMP_LE_I64,V_CMP_GT_I64,V_CMP_NE_I64,V_CMP_GE_I64,V_CMP_T_I64,V_CMP_F_U64,V_CMP_LT_U64,V_CMP_EQ_U64,V_CMP_LE_U64,V_CMP_GT_U64,V_CMP_NE_U64,V_CMP_GE_U64,V_CMP_T_U64 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); break; -case 205:// V_CMP_NE_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:case 255: +//V_CMPX_F_F64,V_CMPX_LT_F64,V_CMPX_EQ_F64,V_CMPX_LE_F64,V_CMPX_GT_F64,V_CMPX_LG_F64,V_CMPX_GE_F64,V_CMPX_O_F64,V_CMPX_U_F64,V_CMPX_NGE_F64,V_CMPX_NLG_F64,V_CMPX_NGT_F64,V_CMPX_NLE_F64,V_CMPX_NEQ_F64,V_CMPX_NLT_F64,V_CMPX_TRU_F64,V_CMPX_F_I64,V_CMPX_LT_I64,V_CMPX_EQ_I64,V_CMPX_LE_I64,V_CMPX_GT_I64,V_CMPX_NE_I64,V_CMPX_GE_I64,V_CMPX_T_I64,V_CMPX_F_U64,V_CMPX_LT_U64,V_CMPX_EQ_U64,V_CMPX_LE_U64,V_CMPX_GT_U64,V_CMPX_NE_U64,V_CMPX_GE_U64,V_CMPX_T_U64 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 206:// V_CMP_GE_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP1Operands(){ +layout_ENC_VOP1 & layout = insn_layout.ENC_VOP1; +switch(layout.OP){ +case 0:case 53: +//V_NOP,V_CLREXCP break; -case 207:// V_CMP_T_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +case 1:case 5:case 6:case 7:case 8:case 12:case 13:case 14:case 17:case 18:case 19:case 20:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 39:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 51:case 52:case 55:case 75:case 76: +//V_MOV_B32,V_CVT_F32_I32,V_CVT_F32_U32,V_CVT_U32_F32,V_CVT_I32_F32,V_CVT_RPI_I32_F32,V_CVT_FLR_I32_F32,V_CVT_OFF_F32_I4,V_CVT_F32_UBYTE0,V_CVT_F32_UBYTE1,V_CVT_F32_UBYTE2,V_CVT_F32_UBYTE3,V_FRACT_F32,V_TRUNC_F32,V_CEIL_F32,V_RNDNE_F32,V_FLOOR_F32,V_EXP_F32,V_LOG_F32,V_RCP_F32,V_RCP_IFLAG_F32,V_RSQ_F32,V_SQRT_F32,V_SIN_F32,V_COS_F32,V_NOT_B32,V_BFREV_B32,V_FFBH_U32,V_FFBL_B32,V_FFBH_I32,V_FREXP_EXP_I32_F32,V_FREXP_MANT_F32,V_SCREEN_PARTITION_4SE_B32,V_EXP_LEGACY_F32,V_LOG_LEGACY_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); break; -case 208:// V_CMPX_F_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 2: +//V_READFIRSTLANE_B32 +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); break; -case 209:// V_CMPX_LT_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 3:case 15:case 21:case 48: +//V_CVT_I32_F64,V_CVT_F32_F64,V_CVT_U32_F64,V_FREXP_EXP_I32_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); break; -case 210:// V_CMPX_EQ_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +case 4:case 16:case 22: +//V_CVT_F64_I32,V_CVT_F64_F32,V_CVT_F64_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 211:// V_CMPX_LE_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +case 10:case 79: +//V_CVT_F16_F32,V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 212:// V_CMPX_GT_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 11: +//V_CVT_F32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); break; -case 213:// V_CMPX_NE_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 23:case 24:case 25:case 26:case 37:case 38:case 40:case 49:case 50: +//V_TRUNC_F64,V_CEIL_F64,V_RNDNE_F64,V_FLOOR_F64,V_RCP_F64,V_RSQ_F64,V_SQRT_F64,V_FREXP_MANT_F64,V_FRACT_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); break; -case 214:// V_CMPX_GE_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 77:case 78: +//V_CVT_F16_U16,V_CVT_F16_I16,V_CVT_U16_F16,V_CVT_I16_F16,V_RCP_F16,V_SQRT_F16,V_RSQ_F16,V_LOG_F16,V_EXP_F16,V_FREXP_MANT_F16,V_FREXP_EXP_I16_F16,V_FLOOR_F16,V_CEIL_F16,V_TRUNC_F16,V_RNDNE_F16,V_FRACT_F16,V_SIN_F16,V_COS_F16,V_CVT_NORM_I16_F16,V_CVT_NORM_U16_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); break; -case 215:// V_CMPX_T_I32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 81: +//V_SWAP_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); break; -case 216:// V_CMPX_F_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2Operands(){ +layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; +switch(layout.OP){ +case 0: +//V_CNDMASK_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 217:// V_CMPX_LT_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 19:case 20:case 21:case 52:case 53:case 61: +//V_ADD_F32,V_SUB_F32,V_SUBREV_F32,V_MUL_LEGACY_F32,V_MUL_F32,V_MUL_I32_I24,V_MUL_HI_I32_I24,V_MUL_U32_U24,V_MUL_HI_U32_U24,V_MIN_F32,V_MAX_F32,V_MIN_I32,V_MAX_I32,V_MIN_U32,V_MAX_U32,V_AND_B32,V_OR_B32,V_XOR_B32,V_ADD_U32,V_SUB_U32,V_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 218:// V_CMPX_EQ_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +case 16:case 17:case 18:case 54: +//V_LSHRREV_B32,V_ASHRREV_I32,V_LSHLREV_B32,V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 219:// V_CMPX_LE_U32 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); +case 22:case 55:case 56:case 57:case 58:case 59:case 60: +//V_MAC_F32,V_DOT2C_F32_F16,V_DOT2C_I32_I16,V_DOT4C_I32_I8,V_DOT8C_I32_I4,V_FMAC_F32,V_PK_FMAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 220:// V_CMPX_GT_U32 +case 25:case 26: +//V_ADD_CO_U32,V_SUB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 221:// V_CMPX_NE_U32 +case 27: +//V_SUBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 222:// V_CMPX_GE_U32 +case 28:case 29: +//V_ADDC_CO_U32,V_SUBB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 223:// V_CMPX_T_U32 +case 30: +//V_SUBBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 224:// V_CMP_F_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 225:// V_CMP_LT_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 31:case 32:case 34:case 38:case 39:case 41:case 45:case 46:case 47:case 48:case 49:case 50:case 51: +//V_ADD_F16,V_SUB_F16,V_MUL_F16,V_ADD_U16,V_SUB_U16,V_MUL_LO_U16,V_MAX_F16,V_MIN_F16,V_MAX_U16,V_MAX_I16,V_MIN_U16,V_MIN_I16,V_LDEXP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); break; -case 226:// V_CMP_EQ_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 33:case 40:case 42:case 43:case 44: +//V_SUBREV_F16,V_SUBREV_U16,V_LSHLREV_B16,V_LSHRREV_B16,V_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); break; -case 227:// V_CMP_LE_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 35: +//V_MAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); break; -case 228:// V_CMP_GT_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2_LITERALOperands(){ +layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; +switch(layout.OP){ +case 23: +//V_MADMK_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); break; -case 229:// V_CMP_NE_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 24: +//V_MADAK_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); break; -case 230:// V_CMP_GE_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 36: +//V_MADMK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); break; -case 231:// V_CMP_T_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 37: +//V_MADAK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); break; -case 232:// V_CMP_F_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3BOperands(){ +layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; +switch(layout.OP){ +case 281:case 282: +//V_ADD_CO_U32,V_SUB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 233:// V_CMP_LT_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 283: +//V_SUBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 234:// V_CMP_EQ_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 284:case 285: +//V_ADDC_CO_U32,V_SUBB_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); break; -case 235:// V_CMP_LE_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 286: +//V_SUBBREV_CO_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); break; -case 236:// V_CMP_GT_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 480: +//V_DIV_SCALE_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); break; -case 237:// V_CMP_NE_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 481: +//V_DIV_SCALE_F64 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); break; -case 238:// V_CMP_GE_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +case 488:case 489: +//V_MAD_U64_U32,V_MAD_I64_I32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); break; -case 239:// V_CMP_T_U64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3POperands(){ +layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; +switch(layout.OP){ +case 0:case 9:case 14: +//V_PK_MAD_I16,V_PK_MAD_U16,V_PK_FMA_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); break; -case 240:// V_CMPX_F_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 1:case 2:case 3:case 7:case 8:case 10:case 11:case 12:case 13:case 15:case 16:case 17:case 18: +//V_PK_MUL_LO_U16,V_PK_ADD_I16,V_PK_SUB_I16,V_PK_MAX_I16,V_PK_MIN_I16,V_PK_ADD_U16,V_PK_SUB_U16,V_PK_MAX_U16,V_PK_MIN_U16,V_PK_ADD_F16,V_PK_MUL_F16,V_PK_MIN_F16,V_PK_MAX_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); break; -case 241:// V_CMPX_LT_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 4:case 5:case 6: +//V_PK_LSHLREV_B16,V_PK_LSHRREV_B16,V_PK_ASHRREV_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); break; -case 242:// V_CMPX_EQ_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 32:case 40:case 41:case 42:case 43: +//V_MAD_MIX_F32,V_DOT4_I32_I8,V_DOT4_U32_U8,V_DOT8_I32_I4,V_DOT8_U32_U4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); break; -case 243:// V_CMPX_LE_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 33:case 34: +//V_MAD_MIXLO_F16,V_MAD_MIXHI_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); break; -case 244:// V_CMPX_GT_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 35:case 38:case 39: +//V_DOT2_F32_F16,V_DOT2_I32_I16,V_DOT2_U32_U16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); break; -case 245:// V_CMPX_NE_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 88: +//V_ACCVGPR_READ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); break; -case 246:// V_CMPX_GE_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +case 89: +//V_ACCVGPR_WRITE +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); break; -case 247:// V_CMPX_T_I64 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3P_MFMAOperands(){ +layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; +switch(layout.OP){ +case 64:case 65:case 66:case 68:case 69:case 72:case 73:case 74:case 76:case 77:case 80:case 81:case 82:case 84:case 85:case 104:case 105:case 107:case 108:case 109: +//V_MFMA_F32_32X32X1F32,V_MFMA_F32_16X16X1F32,V_MFMA_F32_4X4X1F32,V_MFMA_F32_32X32X2F32,V_MFMA_F32_16X16X4F32,V_MFMA_F32_32X32X4F16,V_MFMA_F32_16X16X4F16,V_MFMA_F32_4X4X4F16,V_MFMA_F32_32X32X8F16,V_MFMA_F32_16X16X16F16,V_MFMA_I32_32X32X4I8,V_MFMA_I32_16X16X4I8,V_MFMA_I32_4X4X4I8,V_MFMA_I32_32X32X8I8,V_MFMA_I32_16X16X16I8,V_MFMA_F32_32X32X2BF16,V_MFMA_F32_16X16X2BF16,V_MFMA_F32_4X4X2BF16,V_MFMA_F32_32X32X4BF16,V_MFMA_F32_16X16X8BF16 +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); break; -case 248:// V_CMPX_F_U64 +} +} +void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOPCOperands(){ +layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; +switch(layout.OP){ +case 16:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: +//V_CMP_CLASS_F32,V_CMP_F_F32,V_CMP_LT_F32,V_CMP_EQ_F32,V_CMP_LE_F32,V_CMP_GT_F32,V_CMP_LG_F32,V_CMP_GE_F32,V_CMP_O_F32,V_CMP_U_F32,V_CMP_NGE_F32,V_CMP_NLG_F32,V_CMP_NGT_F32,V_CMP_NLE_F32,V_CMP_NEQ_F32,V_CMP_NLT_F32,V_CMP_TRU_F32,V_CMP_F_I32,V_CMP_LT_I32,V_CMP_EQ_I32,V_CMP_LE_I32,V_CMP_GT_I32,V_CMP_NE_I32,V_CMP_GE_I32,V_CMP_T_I32,V_CMP_F_U32,V_CMP_LT_U32,V_CMP_EQ_U32,V_CMP_LE_U32,V_CMP_GT_U32,V_CMP_NE_U32,V_CMP_GE_U32,V_CMP_T_U32 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); break; -case 249:// V_CMPX_LT_U64 +case 17:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:case 223: +//V_CMPX_CLASS_F32,V_CMPX_F_F32,V_CMPX_LT_F32,V_CMPX_EQ_F32,V_CMPX_LE_F32,V_CMPX_GT_F32,V_CMPX_LG_F32,V_CMPX_GE_F32,V_CMPX_O_F32,V_CMPX_U_F32,V_CMPX_NGE_F32,V_CMPX_NLG_F32,V_CMPX_NGT_F32,V_CMPX_NLE_F32,V_CMPX_NEQ_F32,V_CMPX_NLT_F32,V_CMPX_TRU_F32,V_CMPX_F_I32,V_CMPX_LT_I32,V_CMPX_EQ_I32,V_CMPX_LE_I32,V_CMPX_GT_I32,V_CMPX_NE_I32,V_CMPX_GE_I32,V_CMPX_T_I32,V_CMPX_F_U32,V_CMPX_LT_U32,V_CMPX_EQ_U32,V_CMPX_LE_U32,V_CMPX_GT_U32,V_CMPX_NE_U32,V_CMPX_GE_U32,V_CMPX_T_U32 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 250:// V_CMPX_EQ_U64 +case 18: +//V_CMP_CLASS_F64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); break; -case 251:// V_CMPX_LE_U64 +case 19: +//V_CMPX_CLASS_F64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 252:// V_CMPX_GT_U64 +case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175: +//V_CMP_CLASS_F16,V_CMP_F_F16,V_CMP_LT_F16,V_CMP_EQ_F16,V_CMP_LE_F16,V_CMP_GT_F16,V_CMP_LG_F16,V_CMP_GE_F16,V_CMP_O_F16,V_CMP_U_F16,V_CMP_NGE_F16,V_CMP_NLG_F16,V_CMP_NGT_F16,V_CMP_NLE_F16,V_CMP_NEQ_F16,V_CMP_NLT_F16,V_CMP_TRU_F16,V_CMP_F_I16,V_CMP_LT_I16,V_CMP_EQ_I16,V_CMP_LE_I16,V_CMP_GT_I16,V_CMP_NE_I16,V_CMP_GE_I16,V_CMP_T_I16,V_CMP_F_U16,V_CMP_LT_U16,V_CMP_EQ_U16,V_CMP_LE_U16,V_CMP_GT_U16,V_CMP_NE_U16,V_CMP_GE_U16,V_CMP_T_U16 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); break; -case 253:// V_CMPX_NE_U64 +case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191: +//V_CMPX_CLASS_F16,V_CMPX_F_F16,V_CMPX_LT_F16,V_CMPX_EQ_F16,V_CMPX_LE_F16,V_CMPX_GT_F16,V_CMPX_LG_F16,V_CMPX_GE_F16,V_CMPX_O_F16,V_CMPX_U_F16,V_CMPX_NGE_F16,V_CMPX_NLG_F16,V_CMPX_NGT_F16,V_CMPX_NLE_F16,V_CMPX_NEQ_F16,V_CMPX_NLT_F16,V_CMPX_TRU_F16,V_CMPX_F_I16,V_CMPX_LT_I16,V_CMPX_EQ_I16,V_CMPX_LE_I16,V_CMPX_GT_I16,V_CMPX_NE_I16,V_CMPX_GE_I16,V_CMPX_T_I16,V_CMPX_F_U16,V_CMPX_LT_U16,V_CMPX_EQ_U16,V_CMPX_LE_U16,V_CMPX_GT_U16,V_CMPX_NE_U16,V_CMPX_GE_U16,V_CMPX_T_U16 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 254:// V_CMPX_GE_U64 +case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239: +//V_CMP_F_F64,V_CMP_LT_F64,V_CMP_EQ_F64,V_CMP_LE_F64,V_CMP_GT_F64,V_CMP_LG_F64,V_CMP_GE_F64,V_CMP_O_F64,V_CMP_U_F64,V_CMP_NGE_F64,V_CMP_NLG_F64,V_CMP_NGT_F64,V_CMP_NLE_F64,V_CMP_NEQ_F64,V_CMP_NLT_F64,V_CMP_TRU_F64,V_CMP_F_I64,V_CMP_LT_I64,V_CMP_EQ_I64,V_CMP_LE_I64,V_CMP_GT_I64,V_CMP_NE_I64,V_CMP_GE_I64,V_CMP_T_I64,V_CMP_F_U64,V_CMP_LT_U64,V_CMP_EQ_U64,V_CMP_LE_U64,V_CMP_GT_U64,V_CMP_NE_U64,V_CMP_GE_U64,V_CMP_T_U64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); break; -case 255:// V_CMPX_T_U64 +case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:case 255: +//V_CMPX_F_F64,V_CMPX_LT_F64,V_CMPX_EQ_F64,V_CMPX_LE_F64,V_CMPX_GT_F64,V_CMPX_LG_F64,V_CMPX_GE_F64,V_CMPX_O_F64,V_CMPX_U_F64,V_CMPX_NGE_F64,V_CMPX_NLG_F64,V_CMPX_NGT_F64,V_CMPX_NLE_F64,V_CMPX_NEQ_F64,V_CMPX_NLT_F64,V_CMPX_TRU_F64,V_CMPX_F_I64,V_CMPX_LT_I64,V_CMPX_EQ_I64,V_CMPX_LE_I64,V_CMPX_GT_I64,V_CMPX_NE_I64,V_CMPX_GE_I64,V_CMPX_T_I64,V_CMPX_F_U64,V_CMPX_LT_U64,V_CMPX_EQ_U64,V_CMPX_LE_U64,V_CMPX_GT_U64,V_CMPX_NE_U64,V_CMPX_GE_U64,V_CMPX_T_U64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); From f1144bbb8e2a81eee963ca0c47abda6306942670 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Mon, 24 Oct 2022 16:32:19 -0500 Subject: [PATCH 170/505] add in support for decoding smem_offset operand type, which is still lacking from the ISA spec --- .../gfx908/InstructionDecoder-amdgpu-gfx908.C | 16 +++ .../src/AMDGPU/gfx908/decodeOperands.C | 130 ------------------ .../src/AMDGPU/gfx908/decodeOperands.h | 2 +- .../src/AMDGPU/gfx908/finalizeOperands.C | 50 +++---- instructionAPI/src/ArchSpecificFormatters.C | 2 + 5 files changed, 44 insertions(+), 156 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C index cc2d971629..441bf4f3bc 100644 --- a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C @@ -124,6 +124,22 @@ namespace Dyninst { return {}; } + void InstructionDecoder_amdgpu_gfx908::processOPR_SMEM_OFFSET(layout_ENC_SMEM & layout){ + if (layout.IMM ==0 ){ + if( layout.SOFFSET_EN ==0 ) { + insn_in_progress-> appendOperand( decodeSGPRorM0(layout.OFFSET), true , false ); + }else{ + insn_in_progress-> appendOperand( decodeSGPRorM0(layout.SOFFSET), true , false ); + } + }else{ + if( layout.SOFFSET_EN ==0 ) { + insn_in_progress->appendOperand(Immediate::makeImmediate(Result(s64,layout.OFFSET)),false ,false); + }else{ + insn_in_progress->appendOperand(Immediate::makeImmediate(Result(s64,layout.OFFSET)),false,false); + insn_in_progress-> appendOperand( decodeSGPRorM0(layout.SOFFSET),true ,false); + } + } + } uint32_t InstructionDecoder_amdgpu_gfx908::decodeOPR_LITERAL(){ if (!useImm){ diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C index 46eae153ae..25fbef0cdc 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C @@ -576,136 +576,6 @@ case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SMEM_OFFSET(uint64_t input, uint32_t opr_size){ -switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -default: return makeRegisterExpression(amdgpu_gfx908::invalid); -} -} Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC(uint64_t input, uint32_t opr_size){ switch(input){ case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h index 82faf3a7cc..810717a586 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h @@ -8,7 +8,7 @@ Expression::Ptr decodeOPR_SDST(uint64_t input, uint32_t opr_size ); Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size ); Expression::Ptr decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size ); Expression::Ptr decodeOPR_SGPR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SMEM_OFFSET(uint64_t input, uint32_t opr_size ); +void processOPR_SMEM_OFFSET(layout_ENC_SMEM & layout ); Expression::Ptr decodeOPR_SRC(uint64_t input, uint32_t opr_size ); Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size ); Expression::Ptr decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size ); diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index d0b6027fd1..d141a8e453 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -1053,7 +1053,7 @@ case 0:case 5: insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 1:case 6: //S_LOAD_DWORDX2,S_SCRATCH_LOAD_DWORDX2 @@ -1061,7 +1061,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 2:case 7: //S_LOAD_DWORDX4,S_SCRATCH_LOAD_DWORDX4 @@ -1071,7 +1071,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 3: //S_LOAD_DWORDX8 @@ -1085,7 +1085,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 4: //S_LOAD_DWORDX16 @@ -1107,7 +1107,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 8: //S_BUFFER_LOAD_DWORD @@ -1116,7 +1116,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 9: //S_BUFFER_LOAD_DWORDX2 @@ -1126,7 +1126,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 10: //S_BUFFER_LOAD_DWORDX4 @@ -1138,7 +1138,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 11: //S_BUFFER_LOAD_DWORDX8 @@ -1154,7 +1154,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 12: //S_BUFFER_LOAD_DWORDX16 @@ -1178,14 +1178,14 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 16:case 21: //S_STORE_DWORD,S_SCRATCH_STORE_DWORD insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 17:case 22: //S_STORE_DWORDX2,S_SCRATCH_STORE_DWORDX2 @@ -1193,7 +1193,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 18:case 23: //S_STORE_DWORDX4,S_SCRATCH_STORE_DWORDX4 @@ -1203,7 +1203,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 24: //S_BUFFER_STORE_DWORD @@ -1212,7 +1212,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 25: //S_BUFFER_STORE_DWORDX2 @@ -1222,7 +1222,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 26: //S_BUFFER_STORE_DWORDX4 @@ -1234,7 +1234,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 32:case 33:case 34:case 35: //S_DCACHE_INV,S_DCACHE_WB,S_DCACHE_INV_VOL,S_DCACHE_WB_VOL @@ -1249,7 +1249,7 @@ case 38: insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 39: //S_ATC_PROBE_BUFFER @@ -1258,13 +1258,13 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 40:case 41: //S_DCACHE_DISCARD,S_DCACHE_DISCARD_X2 insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76: //S_BUFFER_ATOMIC_SWAP,S_BUFFER_ATOMIC_ADD,S_BUFFER_ATOMIC_SUB,S_BUFFER_ATOMIC_SMIN,S_BUFFER_ATOMIC_UMIN,S_BUFFER_ATOMIC_SMAX,S_BUFFER_ATOMIC_UMAX,S_BUFFER_ATOMIC_AND,S_BUFFER_ATOMIC_OR,S_BUFFER_ATOMIC_XOR,S_BUFFER_ATOMIC_INC,S_BUFFER_ATOMIC_DEC @@ -1273,7 +1273,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: //S_BUFFER_ATOMIC_CMPSWAP,S_BUFFER_ATOMIC_SWAP_X2,S_BUFFER_ATOMIC_ADD_X2,S_BUFFER_ATOMIC_SUB_X2,S_BUFFER_ATOMIC_SMIN_X2,S_BUFFER_ATOMIC_UMIN_X2,S_BUFFER_ATOMIC_SMAX_X2,S_BUFFER_ATOMIC_UMAX_X2,S_BUFFER_ATOMIC_AND_X2,S_BUFFER_ATOMIC_OR_X2,S_BUFFER_ATOMIC_XOR_X2,S_BUFFER_ATOMIC_INC_X2,S_BUFFER_ATOMIC_DEC_X2 @@ -1283,7 +1283,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 97: //S_BUFFER_ATOMIC_CMPSWAP_X2 @@ -1295,14 +1295,14 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 128:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 140: //S_ATOMIC_SWAP,S_ATOMIC_ADD,S_ATOMIC_SUB,S_ATOMIC_SMIN,S_ATOMIC_UMIN,S_ATOMIC_SMAX,S_ATOMIC_UMAX,S_ATOMIC_AND,S_ATOMIC_OR,S_ATOMIC_XOR,S_ATOMIC_INC,S_ATOMIC_DEC insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 129:case 160:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172: //S_ATOMIC_CMPSWAP,S_ATOMIC_SWAP_X2,S_ATOMIC_ADD_X2,S_ATOMIC_SUB_X2,S_ATOMIC_SMIN_X2,S_ATOMIC_UMIN_X2,S_ATOMIC_SMAX_X2,S_ATOMIC_UMAX_X2,S_ATOMIC_AND_X2,S_ATOMIC_OR_X2,S_ATOMIC_XOR_X2,S_ATOMIC_INC_X2,S_ATOMIC_DEC_X2 @@ -1310,7 +1310,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; case 161: //S_ATOMIC_CMPSWAP_X2 @@ -1320,7 +1320,7 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SMEM_OFFSET(layout.SOFFSET,32),true,false); +processOPR_SMEM_OFFSET(layout); break; } } diff --git a/instructionAPI/src/ArchSpecificFormatters.C b/instructionAPI/src/ArchSpecificFormatters.C index 5f1fe1ec81..5409142f3c 100644 --- a/instructionAPI/src/ArchSpecificFormatters.C +++ b/instructionAPI/src/ArchSpecificFormatters.C @@ -385,6 +385,8 @@ ArchSpecificFormatter& ArchSpecificFormatter::getFormatter(Architecture a) if(found != theFormatters.end()) return *found->second; switch(a) { case Arch_amdgpu_vega: + case Arch_amdgpu_gfx908: + case Arch_amdgpu_cdna2: theFormatters[a] = boost::shared_ptr(new AmdgpuFormatter()); break; case Arch_aarch32: From 9d12f3aa05e9dcef2daab166a1a397058c388be8 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 25 Oct 2022 16:48:18 -0500 Subject: [PATCH 171/505] add definition for waitcnt counters --- common/h/dyn_regs.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/h/dyn_regs.h b/common/h/dyn_regs.h index 9bbdf5fc3d..d83bc2b2ad 100644 --- a/common/h/dyn_regs.h +++ b/common/h/dyn_regs.h @@ -1708,6 +1708,10 @@ namespace Dyninst DEF_REGISTER(xnack_mask_hi, Arch_amdgpu_gfx908| HWR | BITS_32 | 18, "amdgpu_gfx908"); DEF_REGISTER(src_lds_direct, Arch_amdgpu_gfx908| HWR | BITS_32 | 19 , "amdgpu_gfx908"); + DEF_REGISTER(vmcnt, Arch_amdgpu_gfx908| HWR | BITS_32 | 20 , "amdgpu_gfx908"); + DEF_REGISTER(expcnt, Arch_amdgpu_gfx908| HWR | BITS_32 | 21 , "amdgpu_gfx908"); + DEF_REGISTER(lgkmcnt, Arch_amdgpu_gfx908| HWR | BITS_32 | 22 , "amdgpu_gfx908"); + DEF_REGISTER(ttmp0, Arch_amdgpu_gfx908| TTMP_SGPR | BITS_32 | 0 , "amdgpu_gfx908"); From 496f217a96f09022497bf39ee0b1a724508a2348 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 25 Oct 2022 16:50:56 -0500 Subject: [PATCH 172/505] Add support for formatting consecutive registers as a single operand str --- instructionAPI/h/Register.h | 7 +- .../gfx908/InstructionDecoder-amdgpu-gfx908.C | 1 - .../gfx908/InstructionDecoder-amdgpu-gfx908.h | 7 - .../src/AMDGPU/gfx908/decodeOperands.C | 9300 ++++++++--------- .../src/AMDGPU/gfx908/decodeOperands.h | 80 +- .../src/AMDGPU/gfx908/finalizeOperands.C | 3196 +++--- instructionAPI/src/ArchSpecificFormatters.C | 3 + instructionAPI/src/InstructionDecoderImpl.C | 5 +- instructionAPI/src/InstructionDecoderImpl.h | 5 +- instructionAPI/src/Register.C | 45 +- 10 files changed, 6342 insertions(+), 6307 deletions(-) diff --git a/instructionAPI/h/Register.h b/instructionAPI/h/Register.h index 4b2bc7806c..5c60ce2f7f 100644 --- a/instructionAPI/h/Register.h +++ b/instructionAPI/h/Register.h @@ -55,9 +55,9 @@ namespace Dyninst typedef boost::shared_ptr Ptr; /// Construct a register, assigning it the ID \c id. - RegisterAST(MachRegister r); - RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit); - RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit, Result_Type regType); + RegisterAST(MachRegister r, uint32_t num_elements = 1 ); + RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit, uint32_t num_elements = 1); + RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit, Result_Type regType, uint32_t num_elements = 1); virtual ~RegisterAST(); @@ -113,6 +113,7 @@ namespace Dyninst MachRegister m_Reg; unsigned int m_Low; unsigned int m_High; + unsigned int m_num_elements; }; /** diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C index 441bf4f3bc..20be07ad32 100644 --- a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C @@ -206,7 +206,6 @@ namespace Dyninst { void InstructionDecoder_amdgpu_gfx908::reset(){ immLen = 0; insn_size = 0; - num_elements =1; isBranch = false; isConditional = false; isModifyPC =false; diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h index d05c2971ef..7826af0d24 100644 --- a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.h @@ -211,7 +211,6 @@ namespace Dyninst { #define IS_LD_ST() (isLoad || isStore ) - unsigned int num_elements{1}; // the number of elements that will be load or store by each instruction bool isSMEM{}; // this is set when using smem instruction bool isLoad{}; // this is set when a smem instruction is load, will set number of elements that are loaded at the same time bool isStore{}; // similar to isLoad, but for store instructions @@ -266,12 +265,6 @@ namespace Dyninst { - template - void setLoad(){isLoad = true; this->num_elements = num_elements; } - - template - void setStore() {isStore = true;this->num_elements = num_elements;} - void setScratch() {isScratch = true;} void setBuffer() {isBuffer = true;} diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C index 25fbef0cdc..ada3322561 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C @@ -1,320 +1,320 @@ -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ACCVGPR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ACCVGPR(uint64_t input, uint32_t num_elements){ switch(input){ -case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); -case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); -case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); -case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); -case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); -case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); -case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); -case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); -case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); -case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); -case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); -case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); -case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); -case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); -case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); -case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); -case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); -case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); -case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); -case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); -case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); -case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); -case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); -case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); -case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); -case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); -case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); -case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); -case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); -case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); -case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); -case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); -case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); -case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); -case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); -case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); -case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); -case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); -case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); -case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); -case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); -case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); -case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); -case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); -case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); -case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); -case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); -case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); -case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); -case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); -case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); -case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); -case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); -case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); -case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); -case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); -case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); -case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); -case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); -case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); -case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); -case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); -case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); -case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); -case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); -case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); -case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); -case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); -case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); -case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); -case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); -case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); -case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); -case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); -case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); -case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); -case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); -case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); -case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); -case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); -case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); -case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); -case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); -case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); -case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); -case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); -case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); -case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); -case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); -case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); -case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); -case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); -case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); -case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); -case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); -case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); -case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); -case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); -case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); -case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); -case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); -case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); -case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); -case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); -case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); -case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); -case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); -case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); -case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); -case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); -case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); -case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); -case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); -case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); -case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); -case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); -case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); -case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); -case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); -case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); -case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); -case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); -case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); -case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); -case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); -case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); -case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); -case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); -case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); -case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); -case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); -case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); -case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); -case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); -case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); -case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); -case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); -case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); -case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); -case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); -case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); -case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); -case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); -case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); -case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); -case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); -case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); -case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); -case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); -case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); -case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); -case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); -case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); -case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); -case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); -case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); -case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); -case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); -case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); -case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); -case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); -case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); -case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); -case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); -case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); -case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); -case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); -case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); -case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); -case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); -case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); -case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); -case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); -case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); -case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); -case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); -case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); -case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); -case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); -case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); -case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); -case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); -case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); -case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); -case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); -case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); -case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); -case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); -case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); -case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); -case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); -case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); -case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); -case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); -case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); -case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); -case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); -case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); -case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); -case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); -case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); -case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); -case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); -case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); -case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); -case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); -case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); -case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); -case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); -case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); -case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); -case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); -case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); -case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); -case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); -case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); -case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); -case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); -case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); -case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); -case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); -case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); -case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); -case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); -case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); -case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); -case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); -case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); -case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); -case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); -case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); -case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); -case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); -case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); -case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); -case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); -case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); -case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); -case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); -case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); -case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); -case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); -case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); -case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); -case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); -case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); -case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); -case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); -case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); -case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); -case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); -case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); -case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); -case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); -case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); -case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0, num_elements ); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1, num_elements ); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2, num_elements ); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3, num_elements ); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4, num_elements ); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5, num_elements ); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6, num_elements ); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7, num_elements ); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8, num_elements ); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9, num_elements ); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10, num_elements ); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11, num_elements ); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12, num_elements ); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13, num_elements ); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14, num_elements ); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15, num_elements ); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16, num_elements ); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17, num_elements ); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18, num_elements ); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19, num_elements ); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20, num_elements ); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21, num_elements ); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22, num_elements ); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23, num_elements ); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24, num_elements ); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25, num_elements ); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26, num_elements ); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27, num_elements ); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28, num_elements ); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29, num_elements ); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30, num_elements ); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31, num_elements ); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32, num_elements ); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33, num_elements ); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34, num_elements ); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35, num_elements ); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36, num_elements ); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37, num_elements ); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38, num_elements ); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39, num_elements ); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40, num_elements ); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41, num_elements ); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42, num_elements ); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43, num_elements ); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44, num_elements ); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45, num_elements ); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46, num_elements ); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47, num_elements ); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48, num_elements ); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49, num_elements ); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50, num_elements ); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51, num_elements ); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52, num_elements ); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53, num_elements ); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54, num_elements ); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55, num_elements ); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56, num_elements ); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57, num_elements ); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58, num_elements ); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59, num_elements ); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60, num_elements ); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61, num_elements ); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62, num_elements ); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63, num_elements ); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64, num_elements ); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65, num_elements ); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66, num_elements ); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67, num_elements ); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68, num_elements ); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69, num_elements ); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70, num_elements ); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71, num_elements ); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72, num_elements ); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73, num_elements ); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74, num_elements ); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75, num_elements ); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76, num_elements ); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77, num_elements ); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78, num_elements ); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79, num_elements ); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80, num_elements ); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81, num_elements ); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82, num_elements ); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83, num_elements ); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84, num_elements ); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85, num_elements ); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86, num_elements ); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87, num_elements ); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88, num_elements ); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89, num_elements ); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90, num_elements ); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91, num_elements ); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92, num_elements ); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93, num_elements ); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94, num_elements ); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95, num_elements ); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96, num_elements ); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97, num_elements ); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98, num_elements ); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99, num_elements ); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100, num_elements ); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101, num_elements ); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102, num_elements ); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103, num_elements ); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104, num_elements ); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105, num_elements ); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106, num_elements ); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107, num_elements ); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108, num_elements ); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109, num_elements ); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110, num_elements ); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111, num_elements ); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112, num_elements ); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113, num_elements ); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114, num_elements ); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115, num_elements ); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116, num_elements ); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117, num_elements ); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118, num_elements ); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119, num_elements ); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120, num_elements ); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121, num_elements ); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122, num_elements ); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123, num_elements ); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124, num_elements ); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125, num_elements ); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126, num_elements ); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127, num_elements ); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128, num_elements ); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129, num_elements ); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130, num_elements ); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131, num_elements ); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132, num_elements ); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133, num_elements ); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134, num_elements ); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135, num_elements ); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136, num_elements ); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137, num_elements ); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138, num_elements ); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139, num_elements ); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140, num_elements ); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141, num_elements ); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142, num_elements ); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143, num_elements ); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144, num_elements ); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145, num_elements ); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146, num_elements ); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147, num_elements ); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148, num_elements ); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149, num_elements ); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150, num_elements ); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151, num_elements ); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152, num_elements ); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153, num_elements ); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154, num_elements ); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155, num_elements ); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156, num_elements ); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157, num_elements ); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158, num_elements ); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159, num_elements ); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160, num_elements ); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161, num_elements ); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162, num_elements ); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163, num_elements ); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164, num_elements ); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165, num_elements ); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166, num_elements ); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167, num_elements ); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168, num_elements ); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169, num_elements ); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170, num_elements ); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171, num_elements ); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172, num_elements ); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173, num_elements ); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174, num_elements ); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175, num_elements ); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176, num_elements ); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177, num_elements ); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178, num_elements ); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179, num_elements ); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180, num_elements ); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181, num_elements ); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182, num_elements ); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183, num_elements ); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184, num_elements ); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185, num_elements ); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186, num_elements ); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187, num_elements ); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188, num_elements ); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189, num_elements ); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190, num_elements ); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191, num_elements ); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192, num_elements ); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193, num_elements ); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194, num_elements ); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195, num_elements ); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196, num_elements ); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197, num_elements ); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198, num_elements ); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199, num_elements ); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200, num_elements ); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201, num_elements ); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202, num_elements ); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203, num_elements ); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204, num_elements ); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205, num_elements ); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206, num_elements ); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207, num_elements ); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208, num_elements ); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209, num_elements ); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210, num_elements ); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211, num_elements ); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212, num_elements ); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213, num_elements ); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214, num_elements ); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215, num_elements ); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216, num_elements ); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217, num_elements ); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218, num_elements ); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219, num_elements ); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220, num_elements ); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221, num_elements ); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222, num_elements ); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223, num_elements ); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224, num_elements ); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225, num_elements ); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226, num_elements ); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227, num_elements ); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228, num_elements ); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229, num_elements ); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230, num_elements ); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231, num_elements ); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232, num_elements ); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233, num_elements ); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234, num_elements ); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235, num_elements ); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236, num_elements ); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237, num_elements ); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238, num_elements ); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239, num_elements ); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240, num_elements ); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241, num_elements ); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242, num_elements ); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243, num_elements ); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244, num_elements ); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245, num_elements ); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246, num_elements ); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247, num_elements ); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248, num_elements ); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249, num_elements ); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250, num_elements ); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251, num_elements ); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252, num_elements ); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253, num_elements ); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254, num_elements ); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ATTR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_ATTR(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::attr0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::attr1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::attr2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::attr3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::attr4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::attr5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::attr6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::attr7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::attr8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::attr9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::attr10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::attr11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::attr12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::attr13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::attr14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::attr15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::attr16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::attr17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::attr18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::attr19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::attr20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::attr21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::attr22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::attr23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::attr24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::attr25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::attr26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::attr27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::attr28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::attr29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::attr30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::attr31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::attr32,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::attr0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::attr1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::attr2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::attr3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::attr4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::attr5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::attr6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::attr7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::attr8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::attr9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::attr10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::attr11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::attr12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::attr13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::attr14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::attr15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::attr16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::attr17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::attr18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::attr19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::attr20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::attr21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::attr22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::attr23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::attr24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::attr25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::attr26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::attr27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::attr28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::attr29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::attr30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::attr31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::attr32, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_all,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_all, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t num_elements){ switch(input){ -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PARAM(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_PARAM(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::p10,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::p20,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::p0,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::p10, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::p20, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::p0, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } @@ -324,387 +324,387 @@ case 0 : return makeRegisterExpression(amdgpu_gfx908::pc_all); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_EXEC(uint64_t input, uint32_t num_elements){ switch(input){ -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SDST_M0(uint64_t input, uint32_t num_elements){ switch(input){ -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SGPR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SGPR(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -795,794 +795,794 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); -case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct, num_elements ); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t num_elements){ switch(input){ -case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); -case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); -case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); -case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); -case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); -case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); -case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); -case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); -case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); -case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); -case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); -case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); -case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); -case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); -case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); -case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); -case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); -case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); -case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); -case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); -case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); -case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); -case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); -case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); -case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); -case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); -case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); -case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); -case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); -case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); -case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); -case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); -case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); -case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); -case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); -case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); -case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); -case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); -case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); -case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); -case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); -case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); -case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); -case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); -case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); -case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); -case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); -case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); -case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); -case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); -case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); -case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); -case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); -case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); -case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); -case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); -case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); -case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); -case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); -case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); -case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); -case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); -case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); -case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); -case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); -case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); -case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); -case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); -case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); -case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); -case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); -case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); -case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); -case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); -case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); -case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); -case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); -case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); -case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); -case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); -case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); -case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); -case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); -case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); -case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); -case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); -case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); -case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); -case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); -case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); -case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); -case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); -case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); -case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); -case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); -case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); -case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); -case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); -case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); -case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); -case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); -case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); -case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); -case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); -case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); -case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); -case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); -case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); -case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); -case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); -case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); -case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); -case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); -case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); -case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); -case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); -case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); -case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); -case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); -case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); -case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); -case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); -case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); -case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); -case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); -case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); -case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); -case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); -case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); -case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); -case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); -case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); -case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); -case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); -case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); -case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); -case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); -case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); -case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); -case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); -case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); -case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); -case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); -case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); -case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); -case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); -case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); -case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); -case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); -case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); -case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); -case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); -case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); -case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); -case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); -case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); -case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); -case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); -case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); -case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); -case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); -case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); -case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); -case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); -case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); -case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); -case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); -case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); -case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); -case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); -case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); -case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); -case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); -case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); -case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); -case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); -case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); -case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); -case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); -case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); -case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); -case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); -case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); -case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); -case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); -case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); -case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); -case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); -case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); -case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); -case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); -case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); -case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); -case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); -case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); -case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); -case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); -case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); -case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); -case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); -case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); -case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); -case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); -case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); -case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); -case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); -case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); -case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); -case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); -case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); -case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); -case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); -case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); -case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); -case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); -case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); -case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); -case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); -case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); -case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); -case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); -case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); -case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); -case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); -case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); -case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); -case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); -case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); -case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); -case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); -case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); -case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); -case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); -case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); -case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); -case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); -case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); -case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); -case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); -case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); -case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); -case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); -case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); -case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); -case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); -case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); -case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); -case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); -case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); -case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); -case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); -case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); -case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); -case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); -case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); -case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0, num_elements ); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1, num_elements ); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2, num_elements ); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3, num_elements ); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4, num_elements ); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5, num_elements ); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6, num_elements ); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7, num_elements ); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8, num_elements ); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9, num_elements ); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10, num_elements ); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11, num_elements ); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12, num_elements ); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13, num_elements ); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14, num_elements ); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15, num_elements ); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16, num_elements ); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17, num_elements ); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18, num_elements ); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19, num_elements ); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20, num_elements ); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21, num_elements ); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22, num_elements ); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23, num_elements ); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24, num_elements ); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25, num_elements ); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26, num_elements ); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27, num_elements ); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28, num_elements ); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29, num_elements ); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30, num_elements ); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31, num_elements ); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32, num_elements ); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33, num_elements ); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34, num_elements ); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35, num_elements ); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36, num_elements ); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37, num_elements ); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38, num_elements ); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39, num_elements ); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40, num_elements ); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41, num_elements ); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42, num_elements ); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43, num_elements ); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44, num_elements ); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45, num_elements ); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46, num_elements ); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47, num_elements ); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48, num_elements ); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49, num_elements ); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50, num_elements ); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51, num_elements ); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52, num_elements ); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53, num_elements ); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54, num_elements ); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55, num_elements ); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56, num_elements ); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57, num_elements ); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58, num_elements ); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59, num_elements ); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60, num_elements ); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61, num_elements ); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62, num_elements ); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63, num_elements ); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64, num_elements ); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65, num_elements ); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66, num_elements ); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67, num_elements ); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68, num_elements ); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69, num_elements ); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70, num_elements ); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71, num_elements ); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72, num_elements ); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73, num_elements ); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74, num_elements ); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75, num_elements ); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76, num_elements ); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77, num_elements ); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78, num_elements ); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79, num_elements ); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80, num_elements ); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81, num_elements ); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82, num_elements ); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83, num_elements ); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84, num_elements ); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85, num_elements ); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86, num_elements ); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87, num_elements ); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88, num_elements ); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89, num_elements ); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90, num_elements ); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91, num_elements ); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92, num_elements ); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93, num_elements ); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94, num_elements ); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95, num_elements ); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96, num_elements ); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97, num_elements ); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98, num_elements ); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99, num_elements ); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100, num_elements ); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101, num_elements ); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102, num_elements ); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103, num_elements ); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104, num_elements ); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105, num_elements ); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106, num_elements ); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107, num_elements ); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108, num_elements ); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109, num_elements ); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110, num_elements ); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111, num_elements ); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112, num_elements ); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113, num_elements ); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114, num_elements ); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115, num_elements ); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116, num_elements ); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117, num_elements ); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118, num_elements ); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119, num_elements ); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120, num_elements ); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121, num_elements ); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122, num_elements ); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123, num_elements ); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124, num_elements ); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125, num_elements ); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126, num_elements ); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127, num_elements ); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128, num_elements ); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129, num_elements ); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130, num_elements ); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131, num_elements ); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132, num_elements ); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133, num_elements ); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134, num_elements ); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135, num_elements ); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136, num_elements ); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137, num_elements ); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138, num_elements ); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139, num_elements ); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140, num_elements ); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141, num_elements ); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142, num_elements ); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143, num_elements ); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144, num_elements ); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145, num_elements ); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146, num_elements ); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147, num_elements ); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148, num_elements ); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149, num_elements ); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150, num_elements ); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151, num_elements ); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152, num_elements ); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153, num_elements ); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154, num_elements ); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155, num_elements ); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156, num_elements ); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157, num_elements ); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158, num_elements ); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159, num_elements ); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160, num_elements ); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161, num_elements ); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162, num_elements ); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163, num_elements ); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164, num_elements ); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165, num_elements ); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166, num_elements ); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167, num_elements ); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168, num_elements ); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169, num_elements ); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170, num_elements ); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171, num_elements ); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172, num_elements ); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173, num_elements ); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174, num_elements ); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175, num_elements ); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176, num_elements ); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177, num_elements ); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178, num_elements ); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179, num_elements ); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180, num_elements ); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181, num_elements ); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182, num_elements ); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183, num_elements ); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184, num_elements ); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185, num_elements ); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186, num_elements ); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187, num_elements ); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188, num_elements ); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189, num_elements ); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190, num_elements ); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191, num_elements ); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192, num_elements ); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193, num_elements ); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194, num_elements ); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195, num_elements ); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196, num_elements ); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197, num_elements ); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198, num_elements ); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199, num_elements ); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200, num_elements ); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201, num_elements ); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202, num_elements ); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203, num_elements ); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204, num_elements ); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205, num_elements ); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206, num_elements ); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207, num_elements ); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208, num_elements ); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209, num_elements ); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210, num_elements ); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211, num_elements ); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212, num_elements ); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213, num_elements ); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214, num_elements ); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215, num_elements ); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216, num_elements ); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217, num_elements ); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218, num_elements ); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219, num_elements ); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220, num_elements ); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221, num_elements ); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222, num_elements ); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223, num_elements ); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224, num_elements ); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225, num_elements ); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226, num_elements ); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227, num_elements ); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228, num_elements ); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229, num_elements ); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230, num_elements ); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231, num_elements ); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232, num_elements ); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233, num_elements ); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234, num_elements ); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235, num_elements ); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236, num_elements ); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237, num_elements ); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238, num_elements ); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239, num_elements ); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240, num_elements ); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241, num_elements ); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242, num_elements ); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243, num_elements ); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244, num_elements ); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245, num_elements ); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246, num_elements ); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247, num_elements ); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248, num_elements ); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249, num_elements ); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250, num_elements ); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251, num_elements ); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252, num_elements ); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253, num_elements ); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254, num_elements ); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t num_elements){ switch(input){ -case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); -case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); -case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); -case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); -case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); -case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); -case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); -case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); -case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); -case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); -case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); -case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); -case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); -case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); -case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); -case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); -case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); -case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); -case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); -case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); -case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); -case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); -case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); -case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); -case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); -case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); -case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); -case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); -case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); -case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); -case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); -case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); -case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); -case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); -case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); -case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); -case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); -case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); -case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); -case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); -case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); -case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); -case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); -case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); -case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); -case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); -case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); -case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); -case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); -case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); -case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); -case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); -case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); -case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); -case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); -case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); -case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); -case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); -case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); -case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); -case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); -case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); -case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); -case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); -case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); -case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); -case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); -case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); -case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); -case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); -case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); -case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); -case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); -case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); -case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); -case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); -case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); -case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); -case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); -case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); -case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); -case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); -case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); -case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); -case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); -case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); -case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); -case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); -case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); -case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); -case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); -case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); -case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); -case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); -case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); -case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); -case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); -case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); -case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); -case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); -case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); -case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); -case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); -case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); -case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); -case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); -case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); -case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); -case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); -case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); -case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); -case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); -case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); -case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); -case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); -case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); -case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); -case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); -case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); -case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); -case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); -case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); -case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); -case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); -case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); -case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); -case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); -case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); -case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); -case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); -case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); -case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); -case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); -case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); -case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); -case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); -case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); -case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); -case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); -case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); -case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); -case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); -case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); -case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); -case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); -case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); -case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); -case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); -case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); -case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); -case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); -case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); -case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); -case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); -case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); -case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); -case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); -case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); -case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); -case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); -case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); -case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); -case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); -case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); -case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); -case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); -case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); -case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); -case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); -case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); -case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); -case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); -case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); -case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); -case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); -case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); -case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); -case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); -case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); -case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); -case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); -case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); -case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); -case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); -case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); -case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); -case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); -case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); -case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); -case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); -case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); -case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); -case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); -case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); -case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); -case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); -case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); -case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); -case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); -case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); -case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); -case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); -case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); -case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); -case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); -case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); -case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); -case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); -case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); -case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); -case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); -case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); -case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); -case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); -case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); -case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); -case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); -case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); -case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); -case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); -case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); -case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); -case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); -case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); -case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); -case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); -case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); -case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); -case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); -case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); -case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); -case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); -case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); -case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); -case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); -case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); -case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); -case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); -case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); -case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); -case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); -case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); -case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); -case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); -case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); -case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); -case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); -case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); -case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); -case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); -case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); -case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); -case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); -case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); -case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); -case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0, num_elements ); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1, num_elements ); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2, num_elements ); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3, num_elements ); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4, num_elements ); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5, num_elements ); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6, num_elements ); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7, num_elements ); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8, num_elements ); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9, num_elements ); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10, num_elements ); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11, num_elements ); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12, num_elements ); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13, num_elements ); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14, num_elements ); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15, num_elements ); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16, num_elements ); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17, num_elements ); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18, num_elements ); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19, num_elements ); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20, num_elements ); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21, num_elements ); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22, num_elements ); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23, num_elements ); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24, num_elements ); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25, num_elements ); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26, num_elements ); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27, num_elements ); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28, num_elements ); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29, num_elements ); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30, num_elements ); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31, num_elements ); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32, num_elements ); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33, num_elements ); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34, num_elements ); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35, num_elements ); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36, num_elements ); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37, num_elements ); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38, num_elements ); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39, num_elements ); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40, num_elements ); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41, num_elements ); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42, num_elements ); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43, num_elements ); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44, num_elements ); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45, num_elements ); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46, num_elements ); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47, num_elements ); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48, num_elements ); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49, num_elements ); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50, num_elements ); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51, num_elements ); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52, num_elements ); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53, num_elements ); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54, num_elements ); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55, num_elements ); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56, num_elements ); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57, num_elements ); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58, num_elements ); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59, num_elements ); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60, num_elements ); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61, num_elements ); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62, num_elements ); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63, num_elements ); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64, num_elements ); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65, num_elements ); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66, num_elements ); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67, num_elements ); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68, num_elements ); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69, num_elements ); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70, num_elements ); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71, num_elements ); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72, num_elements ); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73, num_elements ); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74, num_elements ); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75, num_elements ); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76, num_elements ); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77, num_elements ); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78, num_elements ); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79, num_elements ); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80, num_elements ); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81, num_elements ); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82, num_elements ); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83, num_elements ); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84, num_elements ); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85, num_elements ); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86, num_elements ); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87, num_elements ); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88, num_elements ); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89, num_elements ); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90, num_elements ); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91, num_elements ); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92, num_elements ); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93, num_elements ); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94, num_elements ); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95, num_elements ); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96, num_elements ); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97, num_elements ); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98, num_elements ); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99, num_elements ); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100, num_elements ); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101, num_elements ); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102, num_elements ); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103, num_elements ); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104, num_elements ); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105, num_elements ); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106, num_elements ); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107, num_elements ); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108, num_elements ); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109, num_elements ); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110, num_elements ); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111, num_elements ); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112, num_elements ); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113, num_elements ); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114, num_elements ); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115, num_elements ); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116, num_elements ); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117, num_elements ); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118, num_elements ); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119, num_elements ); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120, num_elements ); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121, num_elements ); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122, num_elements ); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123, num_elements ); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124, num_elements ); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125, num_elements ); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126, num_elements ); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127, num_elements ); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128, num_elements ); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129, num_elements ); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130, num_elements ); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131, num_elements ); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132, num_elements ); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133, num_elements ); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134, num_elements ); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135, num_elements ); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136, num_elements ); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137, num_elements ); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138, num_elements ); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139, num_elements ); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140, num_elements ); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141, num_elements ); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142, num_elements ); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143, num_elements ); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144, num_elements ); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145, num_elements ); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146, num_elements ); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147, num_elements ); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148, num_elements ); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149, num_elements ); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150, num_elements ); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151, num_elements ); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152, num_elements ); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153, num_elements ); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154, num_elements ); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155, num_elements ); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156, num_elements ); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157, num_elements ); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158, num_elements ); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159, num_elements ); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160, num_elements ); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161, num_elements ); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162, num_elements ); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163, num_elements ); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164, num_elements ); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165, num_elements ); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166, num_elements ); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167, num_elements ); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168, num_elements ); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169, num_elements ); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170, num_elements ); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171, num_elements ); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172, num_elements ); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173, num_elements ); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174, num_elements ); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175, num_elements ); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176, num_elements ); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177, num_elements ); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178, num_elements ); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179, num_elements ); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180, num_elements ); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181, num_elements ); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182, num_elements ); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183, num_elements ); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184, num_elements ); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185, num_elements ); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186, num_elements ); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187, num_elements ); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188, num_elements ); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189, num_elements ); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190, num_elements ); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191, num_elements ); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192, num_elements ); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193, num_elements ); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194, num_elements ); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195, num_elements ); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196, num_elements ); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197, num_elements ); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198, num_elements ); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199, num_elements ); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200, num_elements ); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201, num_elements ); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202, num_elements ); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203, num_elements ); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204, num_elements ); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205, num_elements ); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206, num_elements ); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207, num_elements ); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208, num_elements ); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209, num_elements ); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210, num_elements ); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211, num_elements ); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212, num_elements ); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213, num_elements ); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214, num_elements ); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215, num_elements ); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216, num_elements ); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217, num_elements ); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218, num_elements ); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219, num_elements ); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220, num_elements ); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221, num_elements ); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222, num_elements ); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223, num_elements ); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224, num_elements ); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225, num_elements ); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226, num_elements ); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227, num_elements ); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228, num_elements ); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229, num_elements ); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230, num_elements ); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231, num_elements ); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232, num_elements ); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233, num_elements ); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234, num_elements ); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235, num_elements ); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236, num_elements ); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237, num_elements ); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238, num_elements ); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239, num_elements ); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240, num_elements ); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241, num_elements ); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242, num_elements ); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243, num_elements ); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244, num_elements ); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245, num_elements ); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246, num_elements ); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247, num_elements ); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248, num_elements ); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249, num_elements ); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250, num_elements ); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251, num_elements ); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252, num_elements ); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253, num_elements ); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254, num_elements ); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -1676,135 +1676,135 @@ case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLDS(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLDS(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -1895,403 +1895,403 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLIT(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_NOLIT(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -2382,403 +2382,403 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); -case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -2869,1436 +2869,1436 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR(uint64_t input, uint32_t num_elements){ switch(input){ -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t num_elements){ switch(input){ -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); -case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0,0,opr_size); -case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1,0,opr_size); -case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2,0,opr_size); -case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3,0,opr_size); -case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4,0,opr_size); -case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5,0,opr_size); -case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6,0,opr_size); -case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7,0,opr_size); -case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8,0,opr_size); -case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9,0,opr_size); -case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10,0,opr_size); -case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11,0,opr_size); -case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12,0,opr_size); -case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13,0,opr_size); -case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14,0,opr_size); -case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15,0,opr_size); -case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16,0,opr_size); -case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17,0,opr_size); -case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18,0,opr_size); -case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19,0,opr_size); -case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20,0,opr_size); -case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21,0,opr_size); -case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22,0,opr_size); -case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23,0,opr_size); -case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24,0,opr_size); -case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25,0,opr_size); -case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26,0,opr_size); -case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27,0,opr_size); -case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28,0,opr_size); -case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29,0,opr_size); -case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30,0,opr_size); -case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31,0,opr_size); -case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32,0,opr_size); -case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33,0,opr_size); -case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34,0,opr_size); -case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35,0,opr_size); -case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36,0,opr_size); -case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37,0,opr_size); -case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38,0,opr_size); -case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39,0,opr_size); -case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40,0,opr_size); -case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41,0,opr_size); -case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42,0,opr_size); -case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43,0,opr_size); -case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44,0,opr_size); -case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45,0,opr_size); -case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46,0,opr_size); -case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47,0,opr_size); -case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48,0,opr_size); -case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49,0,opr_size); -case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50,0,opr_size); -case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51,0,opr_size); -case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52,0,opr_size); -case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53,0,opr_size); -case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54,0,opr_size); -case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55,0,opr_size); -case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56,0,opr_size); -case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57,0,opr_size); -case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58,0,opr_size); -case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59,0,opr_size); -case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60,0,opr_size); -case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61,0,opr_size); -case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62,0,opr_size); -case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63,0,opr_size); -case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64,0,opr_size); -case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65,0,opr_size); -case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66,0,opr_size); -case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67,0,opr_size); -case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68,0,opr_size); -case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69,0,opr_size); -case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70,0,opr_size); -case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71,0,opr_size); -case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72,0,opr_size); -case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73,0,opr_size); -case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74,0,opr_size); -case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75,0,opr_size); -case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76,0,opr_size); -case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77,0,opr_size); -case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78,0,opr_size); -case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79,0,opr_size); -case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80,0,opr_size); -case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81,0,opr_size); -case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82,0,opr_size); -case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83,0,opr_size); -case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84,0,opr_size); -case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85,0,opr_size); -case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86,0,opr_size); -case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87,0,opr_size); -case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88,0,opr_size); -case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89,0,opr_size); -case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90,0,opr_size); -case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91,0,opr_size); -case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92,0,opr_size); -case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93,0,opr_size); -case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94,0,opr_size); -case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95,0,opr_size); -case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96,0,opr_size); -case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97,0,opr_size); -case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98,0,opr_size); -case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99,0,opr_size); -case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100,0,opr_size); -case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101,0,opr_size); -case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102,0,opr_size); -case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103,0,opr_size); -case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104,0,opr_size); -case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105,0,opr_size); -case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106,0,opr_size); -case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107,0,opr_size); -case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108,0,opr_size); -case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109,0,opr_size); -case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110,0,opr_size); -case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111,0,opr_size); -case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112,0,opr_size); -case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113,0,opr_size); -case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114,0,opr_size); -case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115,0,opr_size); -case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116,0,opr_size); -case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117,0,opr_size); -case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118,0,opr_size); -case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119,0,opr_size); -case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120,0,opr_size); -case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121,0,opr_size); -case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122,0,opr_size); -case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123,0,opr_size); -case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124,0,opr_size); -case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125,0,opr_size); -case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126,0,opr_size); -case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127,0,opr_size); -case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128,0,opr_size); -case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129,0,opr_size); -case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130,0,opr_size); -case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131,0,opr_size); -case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132,0,opr_size); -case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133,0,opr_size); -case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134,0,opr_size); -case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135,0,opr_size); -case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136,0,opr_size); -case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137,0,opr_size); -case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138,0,opr_size); -case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139,0,opr_size); -case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140,0,opr_size); -case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141,0,opr_size); -case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142,0,opr_size); -case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143,0,opr_size); -case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144,0,opr_size); -case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145,0,opr_size); -case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146,0,opr_size); -case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147,0,opr_size); -case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148,0,opr_size); -case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149,0,opr_size); -case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150,0,opr_size); -case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151,0,opr_size); -case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152,0,opr_size); -case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153,0,opr_size); -case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154,0,opr_size); -case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155,0,opr_size); -case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156,0,opr_size); -case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157,0,opr_size); -case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158,0,opr_size); -case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159,0,opr_size); -case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160,0,opr_size); -case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161,0,opr_size); -case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162,0,opr_size); -case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163,0,opr_size); -case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164,0,opr_size); -case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165,0,opr_size); -case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166,0,opr_size); -case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167,0,opr_size); -case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168,0,opr_size); -case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169,0,opr_size); -case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170,0,opr_size); -case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171,0,opr_size); -case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172,0,opr_size); -case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173,0,opr_size); -case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174,0,opr_size); -case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175,0,opr_size); -case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176,0,opr_size); -case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177,0,opr_size); -case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178,0,opr_size); -case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179,0,opr_size); -case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180,0,opr_size); -case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181,0,opr_size); -case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182,0,opr_size); -case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183,0,opr_size); -case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184,0,opr_size); -case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185,0,opr_size); -case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186,0,opr_size); -case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187,0,opr_size); -case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188,0,opr_size); -case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189,0,opr_size); -case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190,0,opr_size); -case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191,0,opr_size); -case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192,0,opr_size); -case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193,0,opr_size); -case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194,0,opr_size); -case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195,0,opr_size); -case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196,0,opr_size); -case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197,0,opr_size); -case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198,0,opr_size); -case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199,0,opr_size); -case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200,0,opr_size); -case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201,0,opr_size); -case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202,0,opr_size); -case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203,0,opr_size); -case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204,0,opr_size); -case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205,0,opr_size); -case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206,0,opr_size); -case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207,0,opr_size); -case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208,0,opr_size); -case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209,0,opr_size); -case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210,0,opr_size); -case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211,0,opr_size); -case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212,0,opr_size); -case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213,0,opr_size); -case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214,0,opr_size); -case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215,0,opr_size); -case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216,0,opr_size); -case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217,0,opr_size); -case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218,0,opr_size); -case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219,0,opr_size); -case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220,0,opr_size); -case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221,0,opr_size); -case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222,0,opr_size); -case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223,0,opr_size); -case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224,0,opr_size); -case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225,0,opr_size); -case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226,0,opr_size); -case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227,0,opr_size); -case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228,0,opr_size); -case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229,0,opr_size); -case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230,0,opr_size); -case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231,0,opr_size); -case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232,0,opr_size); -case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233,0,opr_size); -case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234,0,opr_size); -case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235,0,opr_size); -case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236,0,opr_size); -case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237,0,opr_size); -case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238,0,opr_size); -case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239,0,opr_size); -case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240,0,opr_size); -case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241,0,opr_size); -case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242,0,opr_size); -case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243,0,opr_size); -case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244,0,opr_size); -case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245,0,opr_size); -case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246,0,opr_size); -case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247,0,opr_size); -case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248,0,opr_size); -case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249,0,opr_size); -case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250,0,opr_size); -case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251,0,opr_size); -case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252,0,opr_size); -case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253,0,opr_size); -case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254,0,opr_size); -case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255,0,opr_size); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); +case 768 : return makeRegisterExpression(amdgpu_gfx908::acc0, num_elements ); +case 769 : return makeRegisterExpression(amdgpu_gfx908::acc1, num_elements ); +case 770 : return makeRegisterExpression(amdgpu_gfx908::acc2, num_elements ); +case 771 : return makeRegisterExpression(amdgpu_gfx908::acc3, num_elements ); +case 772 : return makeRegisterExpression(amdgpu_gfx908::acc4, num_elements ); +case 773 : return makeRegisterExpression(amdgpu_gfx908::acc5, num_elements ); +case 774 : return makeRegisterExpression(amdgpu_gfx908::acc6, num_elements ); +case 775 : return makeRegisterExpression(amdgpu_gfx908::acc7, num_elements ); +case 776 : return makeRegisterExpression(amdgpu_gfx908::acc8, num_elements ); +case 777 : return makeRegisterExpression(amdgpu_gfx908::acc9, num_elements ); +case 778 : return makeRegisterExpression(amdgpu_gfx908::acc10, num_elements ); +case 779 : return makeRegisterExpression(amdgpu_gfx908::acc11, num_elements ); +case 780 : return makeRegisterExpression(amdgpu_gfx908::acc12, num_elements ); +case 781 : return makeRegisterExpression(amdgpu_gfx908::acc13, num_elements ); +case 782 : return makeRegisterExpression(amdgpu_gfx908::acc14, num_elements ); +case 783 : return makeRegisterExpression(amdgpu_gfx908::acc15, num_elements ); +case 784 : return makeRegisterExpression(amdgpu_gfx908::acc16, num_elements ); +case 785 : return makeRegisterExpression(amdgpu_gfx908::acc17, num_elements ); +case 786 : return makeRegisterExpression(amdgpu_gfx908::acc18, num_elements ); +case 787 : return makeRegisterExpression(amdgpu_gfx908::acc19, num_elements ); +case 788 : return makeRegisterExpression(amdgpu_gfx908::acc20, num_elements ); +case 789 : return makeRegisterExpression(amdgpu_gfx908::acc21, num_elements ); +case 790 : return makeRegisterExpression(amdgpu_gfx908::acc22, num_elements ); +case 791 : return makeRegisterExpression(amdgpu_gfx908::acc23, num_elements ); +case 792 : return makeRegisterExpression(amdgpu_gfx908::acc24, num_elements ); +case 793 : return makeRegisterExpression(amdgpu_gfx908::acc25, num_elements ); +case 794 : return makeRegisterExpression(amdgpu_gfx908::acc26, num_elements ); +case 795 : return makeRegisterExpression(amdgpu_gfx908::acc27, num_elements ); +case 796 : return makeRegisterExpression(amdgpu_gfx908::acc28, num_elements ); +case 797 : return makeRegisterExpression(amdgpu_gfx908::acc29, num_elements ); +case 798 : return makeRegisterExpression(amdgpu_gfx908::acc30, num_elements ); +case 799 : return makeRegisterExpression(amdgpu_gfx908::acc31, num_elements ); +case 800 : return makeRegisterExpression(amdgpu_gfx908::acc32, num_elements ); +case 801 : return makeRegisterExpression(amdgpu_gfx908::acc33, num_elements ); +case 802 : return makeRegisterExpression(amdgpu_gfx908::acc34, num_elements ); +case 803 : return makeRegisterExpression(amdgpu_gfx908::acc35, num_elements ); +case 804 : return makeRegisterExpression(amdgpu_gfx908::acc36, num_elements ); +case 805 : return makeRegisterExpression(amdgpu_gfx908::acc37, num_elements ); +case 806 : return makeRegisterExpression(amdgpu_gfx908::acc38, num_elements ); +case 807 : return makeRegisterExpression(amdgpu_gfx908::acc39, num_elements ); +case 808 : return makeRegisterExpression(amdgpu_gfx908::acc40, num_elements ); +case 809 : return makeRegisterExpression(amdgpu_gfx908::acc41, num_elements ); +case 810 : return makeRegisterExpression(amdgpu_gfx908::acc42, num_elements ); +case 811 : return makeRegisterExpression(amdgpu_gfx908::acc43, num_elements ); +case 812 : return makeRegisterExpression(amdgpu_gfx908::acc44, num_elements ); +case 813 : return makeRegisterExpression(amdgpu_gfx908::acc45, num_elements ); +case 814 : return makeRegisterExpression(amdgpu_gfx908::acc46, num_elements ); +case 815 : return makeRegisterExpression(amdgpu_gfx908::acc47, num_elements ); +case 816 : return makeRegisterExpression(amdgpu_gfx908::acc48, num_elements ); +case 817 : return makeRegisterExpression(amdgpu_gfx908::acc49, num_elements ); +case 818 : return makeRegisterExpression(amdgpu_gfx908::acc50, num_elements ); +case 819 : return makeRegisterExpression(amdgpu_gfx908::acc51, num_elements ); +case 820 : return makeRegisterExpression(amdgpu_gfx908::acc52, num_elements ); +case 821 : return makeRegisterExpression(amdgpu_gfx908::acc53, num_elements ); +case 822 : return makeRegisterExpression(amdgpu_gfx908::acc54, num_elements ); +case 823 : return makeRegisterExpression(amdgpu_gfx908::acc55, num_elements ); +case 824 : return makeRegisterExpression(amdgpu_gfx908::acc56, num_elements ); +case 825 : return makeRegisterExpression(amdgpu_gfx908::acc57, num_elements ); +case 826 : return makeRegisterExpression(amdgpu_gfx908::acc58, num_elements ); +case 827 : return makeRegisterExpression(amdgpu_gfx908::acc59, num_elements ); +case 828 : return makeRegisterExpression(amdgpu_gfx908::acc60, num_elements ); +case 829 : return makeRegisterExpression(amdgpu_gfx908::acc61, num_elements ); +case 830 : return makeRegisterExpression(amdgpu_gfx908::acc62, num_elements ); +case 831 : return makeRegisterExpression(amdgpu_gfx908::acc63, num_elements ); +case 832 : return makeRegisterExpression(amdgpu_gfx908::acc64, num_elements ); +case 833 : return makeRegisterExpression(amdgpu_gfx908::acc65, num_elements ); +case 834 : return makeRegisterExpression(amdgpu_gfx908::acc66, num_elements ); +case 835 : return makeRegisterExpression(amdgpu_gfx908::acc67, num_elements ); +case 836 : return makeRegisterExpression(amdgpu_gfx908::acc68, num_elements ); +case 837 : return makeRegisterExpression(amdgpu_gfx908::acc69, num_elements ); +case 838 : return makeRegisterExpression(amdgpu_gfx908::acc70, num_elements ); +case 839 : return makeRegisterExpression(amdgpu_gfx908::acc71, num_elements ); +case 840 : return makeRegisterExpression(amdgpu_gfx908::acc72, num_elements ); +case 841 : return makeRegisterExpression(amdgpu_gfx908::acc73, num_elements ); +case 842 : return makeRegisterExpression(amdgpu_gfx908::acc74, num_elements ); +case 843 : return makeRegisterExpression(amdgpu_gfx908::acc75, num_elements ); +case 844 : return makeRegisterExpression(amdgpu_gfx908::acc76, num_elements ); +case 845 : return makeRegisterExpression(amdgpu_gfx908::acc77, num_elements ); +case 846 : return makeRegisterExpression(amdgpu_gfx908::acc78, num_elements ); +case 847 : return makeRegisterExpression(amdgpu_gfx908::acc79, num_elements ); +case 848 : return makeRegisterExpression(amdgpu_gfx908::acc80, num_elements ); +case 849 : return makeRegisterExpression(amdgpu_gfx908::acc81, num_elements ); +case 850 : return makeRegisterExpression(amdgpu_gfx908::acc82, num_elements ); +case 851 : return makeRegisterExpression(amdgpu_gfx908::acc83, num_elements ); +case 852 : return makeRegisterExpression(amdgpu_gfx908::acc84, num_elements ); +case 853 : return makeRegisterExpression(amdgpu_gfx908::acc85, num_elements ); +case 854 : return makeRegisterExpression(amdgpu_gfx908::acc86, num_elements ); +case 855 : return makeRegisterExpression(amdgpu_gfx908::acc87, num_elements ); +case 856 : return makeRegisterExpression(amdgpu_gfx908::acc88, num_elements ); +case 857 : return makeRegisterExpression(amdgpu_gfx908::acc89, num_elements ); +case 858 : return makeRegisterExpression(amdgpu_gfx908::acc90, num_elements ); +case 859 : return makeRegisterExpression(amdgpu_gfx908::acc91, num_elements ); +case 860 : return makeRegisterExpression(amdgpu_gfx908::acc92, num_elements ); +case 861 : return makeRegisterExpression(amdgpu_gfx908::acc93, num_elements ); +case 862 : return makeRegisterExpression(amdgpu_gfx908::acc94, num_elements ); +case 863 : return makeRegisterExpression(amdgpu_gfx908::acc95, num_elements ); +case 864 : return makeRegisterExpression(amdgpu_gfx908::acc96, num_elements ); +case 865 : return makeRegisterExpression(amdgpu_gfx908::acc97, num_elements ); +case 866 : return makeRegisterExpression(amdgpu_gfx908::acc98, num_elements ); +case 867 : return makeRegisterExpression(amdgpu_gfx908::acc99, num_elements ); +case 868 : return makeRegisterExpression(amdgpu_gfx908::acc100, num_elements ); +case 869 : return makeRegisterExpression(amdgpu_gfx908::acc101, num_elements ); +case 870 : return makeRegisterExpression(amdgpu_gfx908::acc102, num_elements ); +case 871 : return makeRegisterExpression(amdgpu_gfx908::acc103, num_elements ); +case 872 : return makeRegisterExpression(amdgpu_gfx908::acc104, num_elements ); +case 873 : return makeRegisterExpression(amdgpu_gfx908::acc105, num_elements ); +case 874 : return makeRegisterExpression(amdgpu_gfx908::acc106, num_elements ); +case 875 : return makeRegisterExpression(amdgpu_gfx908::acc107, num_elements ); +case 876 : return makeRegisterExpression(amdgpu_gfx908::acc108, num_elements ); +case 877 : return makeRegisterExpression(amdgpu_gfx908::acc109, num_elements ); +case 878 : return makeRegisterExpression(amdgpu_gfx908::acc110, num_elements ); +case 879 : return makeRegisterExpression(amdgpu_gfx908::acc111, num_elements ); +case 880 : return makeRegisterExpression(amdgpu_gfx908::acc112, num_elements ); +case 881 : return makeRegisterExpression(amdgpu_gfx908::acc113, num_elements ); +case 882 : return makeRegisterExpression(amdgpu_gfx908::acc114, num_elements ); +case 883 : return makeRegisterExpression(amdgpu_gfx908::acc115, num_elements ); +case 884 : return makeRegisterExpression(amdgpu_gfx908::acc116, num_elements ); +case 885 : return makeRegisterExpression(amdgpu_gfx908::acc117, num_elements ); +case 886 : return makeRegisterExpression(amdgpu_gfx908::acc118, num_elements ); +case 887 : return makeRegisterExpression(amdgpu_gfx908::acc119, num_elements ); +case 888 : return makeRegisterExpression(amdgpu_gfx908::acc120, num_elements ); +case 889 : return makeRegisterExpression(amdgpu_gfx908::acc121, num_elements ); +case 890 : return makeRegisterExpression(amdgpu_gfx908::acc122, num_elements ); +case 891 : return makeRegisterExpression(amdgpu_gfx908::acc123, num_elements ); +case 892 : return makeRegisterExpression(amdgpu_gfx908::acc124, num_elements ); +case 893 : return makeRegisterExpression(amdgpu_gfx908::acc125, num_elements ); +case 894 : return makeRegisterExpression(amdgpu_gfx908::acc126, num_elements ); +case 895 : return makeRegisterExpression(amdgpu_gfx908::acc127, num_elements ); +case 896 : return makeRegisterExpression(amdgpu_gfx908::acc128, num_elements ); +case 897 : return makeRegisterExpression(amdgpu_gfx908::acc129, num_elements ); +case 898 : return makeRegisterExpression(amdgpu_gfx908::acc130, num_elements ); +case 899 : return makeRegisterExpression(amdgpu_gfx908::acc131, num_elements ); +case 900 : return makeRegisterExpression(amdgpu_gfx908::acc132, num_elements ); +case 901 : return makeRegisterExpression(amdgpu_gfx908::acc133, num_elements ); +case 902 : return makeRegisterExpression(amdgpu_gfx908::acc134, num_elements ); +case 903 : return makeRegisterExpression(amdgpu_gfx908::acc135, num_elements ); +case 904 : return makeRegisterExpression(amdgpu_gfx908::acc136, num_elements ); +case 905 : return makeRegisterExpression(amdgpu_gfx908::acc137, num_elements ); +case 906 : return makeRegisterExpression(amdgpu_gfx908::acc138, num_elements ); +case 907 : return makeRegisterExpression(amdgpu_gfx908::acc139, num_elements ); +case 908 : return makeRegisterExpression(amdgpu_gfx908::acc140, num_elements ); +case 909 : return makeRegisterExpression(amdgpu_gfx908::acc141, num_elements ); +case 910 : return makeRegisterExpression(amdgpu_gfx908::acc142, num_elements ); +case 911 : return makeRegisterExpression(amdgpu_gfx908::acc143, num_elements ); +case 912 : return makeRegisterExpression(amdgpu_gfx908::acc144, num_elements ); +case 913 : return makeRegisterExpression(amdgpu_gfx908::acc145, num_elements ); +case 914 : return makeRegisterExpression(amdgpu_gfx908::acc146, num_elements ); +case 915 : return makeRegisterExpression(amdgpu_gfx908::acc147, num_elements ); +case 916 : return makeRegisterExpression(amdgpu_gfx908::acc148, num_elements ); +case 917 : return makeRegisterExpression(amdgpu_gfx908::acc149, num_elements ); +case 918 : return makeRegisterExpression(amdgpu_gfx908::acc150, num_elements ); +case 919 : return makeRegisterExpression(amdgpu_gfx908::acc151, num_elements ); +case 920 : return makeRegisterExpression(amdgpu_gfx908::acc152, num_elements ); +case 921 : return makeRegisterExpression(amdgpu_gfx908::acc153, num_elements ); +case 922 : return makeRegisterExpression(amdgpu_gfx908::acc154, num_elements ); +case 923 : return makeRegisterExpression(amdgpu_gfx908::acc155, num_elements ); +case 924 : return makeRegisterExpression(amdgpu_gfx908::acc156, num_elements ); +case 925 : return makeRegisterExpression(amdgpu_gfx908::acc157, num_elements ); +case 926 : return makeRegisterExpression(amdgpu_gfx908::acc158, num_elements ); +case 927 : return makeRegisterExpression(amdgpu_gfx908::acc159, num_elements ); +case 928 : return makeRegisterExpression(amdgpu_gfx908::acc160, num_elements ); +case 929 : return makeRegisterExpression(amdgpu_gfx908::acc161, num_elements ); +case 930 : return makeRegisterExpression(amdgpu_gfx908::acc162, num_elements ); +case 931 : return makeRegisterExpression(amdgpu_gfx908::acc163, num_elements ); +case 932 : return makeRegisterExpression(amdgpu_gfx908::acc164, num_elements ); +case 933 : return makeRegisterExpression(amdgpu_gfx908::acc165, num_elements ); +case 934 : return makeRegisterExpression(amdgpu_gfx908::acc166, num_elements ); +case 935 : return makeRegisterExpression(amdgpu_gfx908::acc167, num_elements ); +case 936 : return makeRegisterExpression(amdgpu_gfx908::acc168, num_elements ); +case 937 : return makeRegisterExpression(amdgpu_gfx908::acc169, num_elements ); +case 938 : return makeRegisterExpression(amdgpu_gfx908::acc170, num_elements ); +case 939 : return makeRegisterExpression(amdgpu_gfx908::acc171, num_elements ); +case 940 : return makeRegisterExpression(amdgpu_gfx908::acc172, num_elements ); +case 941 : return makeRegisterExpression(amdgpu_gfx908::acc173, num_elements ); +case 942 : return makeRegisterExpression(amdgpu_gfx908::acc174, num_elements ); +case 943 : return makeRegisterExpression(amdgpu_gfx908::acc175, num_elements ); +case 944 : return makeRegisterExpression(amdgpu_gfx908::acc176, num_elements ); +case 945 : return makeRegisterExpression(amdgpu_gfx908::acc177, num_elements ); +case 946 : return makeRegisterExpression(amdgpu_gfx908::acc178, num_elements ); +case 947 : return makeRegisterExpression(amdgpu_gfx908::acc179, num_elements ); +case 948 : return makeRegisterExpression(amdgpu_gfx908::acc180, num_elements ); +case 949 : return makeRegisterExpression(amdgpu_gfx908::acc181, num_elements ); +case 950 : return makeRegisterExpression(amdgpu_gfx908::acc182, num_elements ); +case 951 : return makeRegisterExpression(amdgpu_gfx908::acc183, num_elements ); +case 952 : return makeRegisterExpression(amdgpu_gfx908::acc184, num_elements ); +case 953 : return makeRegisterExpression(amdgpu_gfx908::acc185, num_elements ); +case 954 : return makeRegisterExpression(amdgpu_gfx908::acc186, num_elements ); +case 955 : return makeRegisterExpression(amdgpu_gfx908::acc187, num_elements ); +case 956 : return makeRegisterExpression(amdgpu_gfx908::acc188, num_elements ); +case 957 : return makeRegisterExpression(amdgpu_gfx908::acc189, num_elements ); +case 958 : return makeRegisterExpression(amdgpu_gfx908::acc190, num_elements ); +case 959 : return makeRegisterExpression(amdgpu_gfx908::acc191, num_elements ); +case 960 : return makeRegisterExpression(amdgpu_gfx908::acc192, num_elements ); +case 961 : return makeRegisterExpression(amdgpu_gfx908::acc193, num_elements ); +case 962 : return makeRegisterExpression(amdgpu_gfx908::acc194, num_elements ); +case 963 : return makeRegisterExpression(amdgpu_gfx908::acc195, num_elements ); +case 964 : return makeRegisterExpression(amdgpu_gfx908::acc196, num_elements ); +case 965 : return makeRegisterExpression(amdgpu_gfx908::acc197, num_elements ); +case 966 : return makeRegisterExpression(amdgpu_gfx908::acc198, num_elements ); +case 967 : return makeRegisterExpression(amdgpu_gfx908::acc199, num_elements ); +case 968 : return makeRegisterExpression(amdgpu_gfx908::acc200, num_elements ); +case 969 : return makeRegisterExpression(amdgpu_gfx908::acc201, num_elements ); +case 970 : return makeRegisterExpression(amdgpu_gfx908::acc202, num_elements ); +case 971 : return makeRegisterExpression(amdgpu_gfx908::acc203, num_elements ); +case 972 : return makeRegisterExpression(amdgpu_gfx908::acc204, num_elements ); +case 973 : return makeRegisterExpression(amdgpu_gfx908::acc205, num_elements ); +case 974 : return makeRegisterExpression(amdgpu_gfx908::acc206, num_elements ); +case 975 : return makeRegisterExpression(amdgpu_gfx908::acc207, num_elements ); +case 976 : return makeRegisterExpression(amdgpu_gfx908::acc208, num_elements ); +case 977 : return makeRegisterExpression(amdgpu_gfx908::acc209, num_elements ); +case 978 : return makeRegisterExpression(amdgpu_gfx908::acc210, num_elements ); +case 979 : return makeRegisterExpression(amdgpu_gfx908::acc211, num_elements ); +case 980 : return makeRegisterExpression(amdgpu_gfx908::acc212, num_elements ); +case 981 : return makeRegisterExpression(amdgpu_gfx908::acc213, num_elements ); +case 982 : return makeRegisterExpression(amdgpu_gfx908::acc214, num_elements ); +case 983 : return makeRegisterExpression(amdgpu_gfx908::acc215, num_elements ); +case 984 : return makeRegisterExpression(amdgpu_gfx908::acc216, num_elements ); +case 985 : return makeRegisterExpression(amdgpu_gfx908::acc217, num_elements ); +case 986 : return makeRegisterExpression(amdgpu_gfx908::acc218, num_elements ); +case 987 : return makeRegisterExpression(amdgpu_gfx908::acc219, num_elements ); +case 988 : return makeRegisterExpression(amdgpu_gfx908::acc220, num_elements ); +case 989 : return makeRegisterExpression(amdgpu_gfx908::acc221, num_elements ); +case 990 : return makeRegisterExpression(amdgpu_gfx908::acc222, num_elements ); +case 991 : return makeRegisterExpression(amdgpu_gfx908::acc223, num_elements ); +case 992 : return makeRegisterExpression(amdgpu_gfx908::acc224, num_elements ); +case 993 : return makeRegisterExpression(amdgpu_gfx908::acc225, num_elements ); +case 994 : return makeRegisterExpression(amdgpu_gfx908::acc226, num_elements ); +case 995 : return makeRegisterExpression(amdgpu_gfx908::acc227, num_elements ); +case 996 : return makeRegisterExpression(amdgpu_gfx908::acc228, num_elements ); +case 997 : return makeRegisterExpression(amdgpu_gfx908::acc229, num_elements ); +case 998 : return makeRegisterExpression(amdgpu_gfx908::acc230, num_elements ); +case 999 : return makeRegisterExpression(amdgpu_gfx908::acc231, num_elements ); +case 1000 : return makeRegisterExpression(amdgpu_gfx908::acc232, num_elements ); +case 1001 : return makeRegisterExpression(amdgpu_gfx908::acc233, num_elements ); +case 1002 : return makeRegisterExpression(amdgpu_gfx908::acc234, num_elements ); +case 1003 : return makeRegisterExpression(amdgpu_gfx908::acc235, num_elements ); +case 1004 : return makeRegisterExpression(amdgpu_gfx908::acc236, num_elements ); +case 1005 : return makeRegisterExpression(amdgpu_gfx908::acc237, num_elements ); +case 1006 : return makeRegisterExpression(amdgpu_gfx908::acc238, num_elements ); +case 1007 : return makeRegisterExpression(amdgpu_gfx908::acc239, num_elements ); +case 1008 : return makeRegisterExpression(amdgpu_gfx908::acc240, num_elements ); +case 1009 : return makeRegisterExpression(amdgpu_gfx908::acc241, num_elements ); +case 1010 : return makeRegisterExpression(amdgpu_gfx908::acc242, num_elements ); +case 1011 : return makeRegisterExpression(amdgpu_gfx908::acc243, num_elements ); +case 1012 : return makeRegisterExpression(amdgpu_gfx908::acc244, num_elements ); +case 1013 : return makeRegisterExpression(amdgpu_gfx908::acc245, num_elements ); +case 1014 : return makeRegisterExpression(amdgpu_gfx908::acc246, num_elements ); +case 1015 : return makeRegisterExpression(amdgpu_gfx908::acc247, num_elements ); +case 1016 : return makeRegisterExpression(amdgpu_gfx908::acc248, num_elements ); +case 1017 : return makeRegisterExpression(amdgpu_gfx908::acc249, num_elements ); +case 1018 : return makeRegisterExpression(amdgpu_gfx908::acc250, num_elements ); +case 1019 : return makeRegisterExpression(amdgpu_gfx908::acc251, num_elements ); +case 1020 : return makeRegisterExpression(amdgpu_gfx908::acc252, num_elements ); +case 1021 : return makeRegisterExpression(amdgpu_gfx908::acc253, num_elements ); +case 1022 : return makeRegisterExpression(amdgpu_gfx908::acc254, num_elements ); +case 1023 : return makeRegisterExpression(amdgpu_gfx908::acc255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG_NOVCC(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SREG_NOVCC(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -4389,15 +4389,15 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } @@ -4565,133 +4565,133 @@ case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -4759,135 +4759,135 @@ case 191 : return Immediate::makeImmediate(Result(u32, 63)); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::s0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::s1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::s2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::s3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::s4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::s5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::s6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::s7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::s8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::s9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::s10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::s11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::s12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::s13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::s14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::s15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::s16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::s17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::s18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::s19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::s20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::s21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::s22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::s23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::s24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::s25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::s26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::s27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::s28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::s29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::s30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::s31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::s32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::s33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::s34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::s35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::s36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::s37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::s38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::s39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::s40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::s41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::s42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::s43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::s44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::s45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::s46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::s47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::s48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::s49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::s50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::s51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::s52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::s53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::s54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::s55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::s56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::s57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::s58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::s59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::s60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::s61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::s62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::s63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::s64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::s65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::s66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::s67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::s68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::s69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::s70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::s71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::s72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::s73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::s74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::s75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::s76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::s77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::s78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::s79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::s80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::s81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::s82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::s83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::s84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::s85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::s86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::s87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::s88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::s89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::s90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::s91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::s92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::s93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::s94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::s95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::s96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::s97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::s98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::s99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::s100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::s101,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::m0,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::s0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::s1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::s2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::s3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::s4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::s5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::s6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::s7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::s8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::s9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::s10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::s11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::s12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::s13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::s14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::s15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::s16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::s17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::s18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::s19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::s20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::s21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::s22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::s23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::s24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::s25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::s26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::s27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::s28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::s29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::s30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::s31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::s32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::s33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::s34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::s35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::s36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::s37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::s38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::s39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::s40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::s41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::s42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::s43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::s44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::s45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::s46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::s47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::s48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::s49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::s50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::s51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::s52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::s53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::s54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::s55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::s56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::s57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::s58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::s59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::s60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::s61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::s62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::s63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::s64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::s65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::s66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::s67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::s68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::s69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::s70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::s71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::s72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::s73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::s74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::s75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::s76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::s77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::s78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::s79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::s80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::s81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::s82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::s83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::s84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::s85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::s86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::s87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::s88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::s89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::s90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::s91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::s92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::s93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::s94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::s95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::s96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::s97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::s98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::s99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::s100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::s101, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_lo, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::flat_scratch_hi, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::m0, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::exec_lo, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::exec_hi, num_elements ); case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); case 130 : return Immediate::makeImmediate(Result(u32, 2)); @@ -4978,45 +4978,45 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t num_elements){ switch(input){ -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t num_elements){ switch(input){ -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LDS(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LDS(uint64_t input, uint32_t num_elements){ switch(input){ -case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t num_elements){ switch(input){ -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal,0,opr_size); +case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t num_elements){ switch(input){ case 128 : return Immediate::makeImmediate(Result(u32, 0)); case 129 : return Immediate::makeImmediate(Result(u32, 1)); @@ -5108,104 +5108,104 @@ case 245 : return Immediate::makeImmediate(Result(sp_float, -2.0)); case 246 : return Immediate::makeImmediate(Result(sp_float, 4.0)); case 247 : return Immediate::makeImmediate(Result(sp_float, -4.0)); case 248 : return Immediate::makeImmediate(Result(sp_float, 0.15915494)); -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::src_execz, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::src_shared_base, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t num_elements){ switch(input){ -case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id,0,opr_size); +case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t num_elements){ switch(input){ -case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc,0,opr_size); +case 253 : return makeRegisterExpression(amdgpu_gfx908::src_scc, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t num_elements){ switch(input){ -case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz,0,opr_size); +case 251 : return makeRegisterExpression(amdgpu_gfx908::src_vccz, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TGT(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TGT(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::mrt0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::mrt1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::mrt2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::mrt3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::mrt4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::mrt5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::mrt6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::mrt7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::mrtz,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::null,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::pos0,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::pos1,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::pos2,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::pos3,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::param0,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::param1,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::param2,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::param3,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::param4,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::param5,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::param6,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::param7,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::param8,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::param9,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::param10,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::param11,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::param12,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::param13,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::param14,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::param15,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::param16,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::param17,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::param18,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::param19,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::param20,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::param21,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::param22,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::param23,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::param24,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::param25,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::param26,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::param27,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::param28,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::param29,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::param30,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::param31,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::mrt0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::mrt1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::mrt2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::mrt3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::mrt4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::mrt5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::mrt6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::mrt7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::mrtz, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::null, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::pos0, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::pos1, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::pos2, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::pos3, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::param0, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::param1, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::param2, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::param3, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::param4, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::param5, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::param6, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::param7, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::param8, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::param9, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::param10, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::param11, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::param12, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::param13, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::param14, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::param15, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::param16, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::param17, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::param18, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::param19, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::param20, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::param21, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::param22, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::param23, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::param24, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::param25, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::param26, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::param27, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::param28, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::param29, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::param30, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::param31, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TRAP(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_TRAP(uint64_t input, uint32_t num_elements){ switch(input){ -case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15,0,opr_size); +case 108 : return makeRegisterExpression(amdgpu_gfx908::ttmp0, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::ttmp1, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::ttmp2, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::ttmp3, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::ttmp4, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::ttmp5, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::ttmp6, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::ttmp7, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::ttmp8, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::ttmp9, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::ttmp10, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::ttmp11, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::ttmp12, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::ttmp13, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::ttmp14, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::ttmp15, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } @@ -5215,540 +5215,540 @@ case 0 : return makeRegisterExpression(amdgpu_gfx908::vcc); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC_LOHI(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VCC_LOHI(uint64_t input, uint32_t num_elements){ switch(input){ -case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi,0,opr_size); +case 106 : return makeRegisterExpression(amdgpu_gfx908::vcc_lo, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::vcc_hi, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR(uint64_t input, uint32_t num_elements){ switch(input){ -case 0 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 1 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 2 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 3 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 4 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 5 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 6 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 7 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 8 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 9 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 10 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 11 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 12 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 13 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 14 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 15 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 16 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 17 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 18 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 19 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 20 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 21 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 22 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 23 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 24 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 25 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 26 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 27 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 28 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 29 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 30 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 31 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 32 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 33 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 34 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 35 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 36 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 37 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 38 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 39 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 40 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 41 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 42 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 43 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 44 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 45 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 46 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 47 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 48 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 49 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 50 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 51 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 52 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 53 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 54 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 55 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 56 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 57 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 58 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 59 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 60 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 61 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 62 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 63 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 64 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 65 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 66 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 67 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 68 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 69 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 70 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 71 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 72 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 73 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 74 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 75 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 76 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 77 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 78 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 79 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 80 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 81 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 82 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 83 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 84 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 85 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 86 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 87 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 88 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 89 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 90 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 91 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 92 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 93 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 94 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 95 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 96 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 97 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 98 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 99 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 100 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 101 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 102 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 103 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 104 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 106 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 107 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 108 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 109 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 110 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 111 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 112 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 113 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 114 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 115 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 116 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 117 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 118 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 119 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 120 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 121 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 122 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 123 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 124 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 125 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 126 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 127 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 128 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 129 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 130 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 131 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 132 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 133 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 134 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 135 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 136 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 137 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 138 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 139 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 140 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 141 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 142 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 143 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 144 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 145 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 146 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 147 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 148 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 149 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 150 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 151 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 152 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 153 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 154 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 155 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 156 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 157 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 158 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 159 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 160 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 161 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 162 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 163 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 164 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 165 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 166 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 167 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 168 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 169 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 170 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 171 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 172 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 173 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 174 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 175 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 176 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 177 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 178 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 179 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 180 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 181 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 182 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 183 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 184 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 185 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 186 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 187 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 188 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 189 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 190 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 191 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 192 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 193 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 194 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 195 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 196 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 197 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 198 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 199 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 200 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 201 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 202 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 203 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 204 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 205 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 206 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 207 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 208 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 209 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 210 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 211 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 212 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 213 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 214 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 215 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 216 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 217 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 218 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 219 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 220 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 221 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 222 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 223 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 224 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 225 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 226 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 227 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 228 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 229 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 230 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 231 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 232 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 233 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 234 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 235 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 236 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 237 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 238 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 239 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 240 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 241 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 242 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 243 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 244 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 245 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 246 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 247 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 248 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 249 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 250 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 251 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 252 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 253 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 254 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 255 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 0 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 1 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 2 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 3 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 4 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 5 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 6 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 7 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 8 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 9 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 10 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 11 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 12 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 13 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 14 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 15 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 16 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 17 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 18 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 19 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 20 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 21 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 22 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 23 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 24 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 25 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 26 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 27 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 28 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 29 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 30 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 31 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 32 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 33 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 34 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 35 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 36 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 37 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 38 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 39 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 40 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 41 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 42 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 43 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 44 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 45 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 46 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 47 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 48 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 49 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 50 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 51 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 52 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 53 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 54 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 55 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 56 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 57 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 58 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 59 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 60 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 61 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 62 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 63 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 64 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 65 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 66 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 67 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 68 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 69 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 70 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 71 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 72 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 73 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 74 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 75 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 76 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 77 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 78 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 79 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 80 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 81 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 82 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 83 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 84 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 85 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 86 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 87 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 88 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 89 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 90 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 91 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 92 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 93 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 94 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 95 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 96 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 97 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 98 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 99 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 100 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 101 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 102 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 103 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 104 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 106 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 107 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 108 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 109 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 110 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 111 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 112 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 113 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 114 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 115 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 116 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 117 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 118 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 119 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 120 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 121 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 122 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 123 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 124 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 125 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 126 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 127 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 128 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 129 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 130 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 131 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 132 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 133 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 134 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 135 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 136 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 137 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 138 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 139 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 140 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 141 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 142 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 143 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 144 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 145 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 146 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 147 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 148 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 149 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 150 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 151 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 152 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 153 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 154 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 155 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 156 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 157 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 158 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 159 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 160 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 161 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 162 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 163 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 164 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 165 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 166 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 167 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 168 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 169 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 170 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 171 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 172 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 173 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 174 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 175 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 176 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 177 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 178 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 179 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 180 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 181 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 182 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 183 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 184 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 185 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 186 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 187 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 188 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 189 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 190 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 191 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 192 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 193 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 194 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 195 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 196 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 197 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 198 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 199 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 200 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 201 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 202 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 203 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 204 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 205 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 206 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 207 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 208 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 209 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 210 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 211 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 212 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 213 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 214 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 215 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 216 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 217 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 218 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 219 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 220 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 221 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 222 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 223 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 224 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 225 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 226 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 227 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 228 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 229 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 230 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 231 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 232 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 233 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 234 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 235 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 236 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 237 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 238 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 239 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 240 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 241 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 242 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 243 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 244 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 245 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 246 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 247 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 248 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 249 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 250 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 251 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 252 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 253 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 254 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 255 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t num_elements){ switch(input){ -case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct,0,opr_size); -case 256 : return makeRegisterExpression(amdgpu_gfx908::v0,0,opr_size); -case 257 : return makeRegisterExpression(amdgpu_gfx908::v1,0,opr_size); -case 258 : return makeRegisterExpression(amdgpu_gfx908::v2,0,opr_size); -case 259 : return makeRegisterExpression(amdgpu_gfx908::v3,0,opr_size); -case 260 : return makeRegisterExpression(amdgpu_gfx908::v4,0,opr_size); -case 261 : return makeRegisterExpression(amdgpu_gfx908::v5,0,opr_size); -case 262 : return makeRegisterExpression(amdgpu_gfx908::v6,0,opr_size); -case 263 : return makeRegisterExpression(amdgpu_gfx908::v7,0,opr_size); -case 264 : return makeRegisterExpression(amdgpu_gfx908::v8,0,opr_size); -case 265 : return makeRegisterExpression(amdgpu_gfx908::v9,0,opr_size); -case 266 : return makeRegisterExpression(amdgpu_gfx908::v10,0,opr_size); -case 267 : return makeRegisterExpression(amdgpu_gfx908::v11,0,opr_size); -case 268 : return makeRegisterExpression(amdgpu_gfx908::v12,0,opr_size); -case 269 : return makeRegisterExpression(amdgpu_gfx908::v13,0,opr_size); -case 270 : return makeRegisterExpression(amdgpu_gfx908::v14,0,opr_size); -case 271 : return makeRegisterExpression(amdgpu_gfx908::v15,0,opr_size); -case 272 : return makeRegisterExpression(amdgpu_gfx908::v16,0,opr_size); -case 273 : return makeRegisterExpression(amdgpu_gfx908::v17,0,opr_size); -case 274 : return makeRegisterExpression(amdgpu_gfx908::v18,0,opr_size); -case 275 : return makeRegisterExpression(amdgpu_gfx908::v19,0,opr_size); -case 276 : return makeRegisterExpression(amdgpu_gfx908::v20,0,opr_size); -case 277 : return makeRegisterExpression(amdgpu_gfx908::v21,0,opr_size); -case 278 : return makeRegisterExpression(amdgpu_gfx908::v22,0,opr_size); -case 279 : return makeRegisterExpression(amdgpu_gfx908::v23,0,opr_size); -case 280 : return makeRegisterExpression(amdgpu_gfx908::v24,0,opr_size); -case 281 : return makeRegisterExpression(amdgpu_gfx908::v25,0,opr_size); -case 282 : return makeRegisterExpression(amdgpu_gfx908::v26,0,opr_size); -case 283 : return makeRegisterExpression(amdgpu_gfx908::v27,0,opr_size); -case 284 : return makeRegisterExpression(amdgpu_gfx908::v28,0,opr_size); -case 285 : return makeRegisterExpression(amdgpu_gfx908::v29,0,opr_size); -case 286 : return makeRegisterExpression(amdgpu_gfx908::v30,0,opr_size); -case 287 : return makeRegisterExpression(amdgpu_gfx908::v31,0,opr_size); -case 288 : return makeRegisterExpression(amdgpu_gfx908::v32,0,opr_size); -case 289 : return makeRegisterExpression(amdgpu_gfx908::v33,0,opr_size); -case 290 : return makeRegisterExpression(amdgpu_gfx908::v34,0,opr_size); -case 291 : return makeRegisterExpression(amdgpu_gfx908::v35,0,opr_size); -case 292 : return makeRegisterExpression(amdgpu_gfx908::v36,0,opr_size); -case 293 : return makeRegisterExpression(amdgpu_gfx908::v37,0,opr_size); -case 294 : return makeRegisterExpression(amdgpu_gfx908::v38,0,opr_size); -case 295 : return makeRegisterExpression(amdgpu_gfx908::v39,0,opr_size); -case 296 : return makeRegisterExpression(amdgpu_gfx908::v40,0,opr_size); -case 297 : return makeRegisterExpression(amdgpu_gfx908::v41,0,opr_size); -case 298 : return makeRegisterExpression(amdgpu_gfx908::v42,0,opr_size); -case 299 : return makeRegisterExpression(amdgpu_gfx908::v43,0,opr_size); -case 300 : return makeRegisterExpression(amdgpu_gfx908::v44,0,opr_size); -case 301 : return makeRegisterExpression(amdgpu_gfx908::v45,0,opr_size); -case 302 : return makeRegisterExpression(amdgpu_gfx908::v46,0,opr_size); -case 303 : return makeRegisterExpression(amdgpu_gfx908::v47,0,opr_size); -case 304 : return makeRegisterExpression(amdgpu_gfx908::v48,0,opr_size); -case 305 : return makeRegisterExpression(amdgpu_gfx908::v49,0,opr_size); -case 306 : return makeRegisterExpression(amdgpu_gfx908::v50,0,opr_size); -case 307 : return makeRegisterExpression(amdgpu_gfx908::v51,0,opr_size); -case 308 : return makeRegisterExpression(amdgpu_gfx908::v52,0,opr_size); -case 309 : return makeRegisterExpression(amdgpu_gfx908::v53,0,opr_size); -case 310 : return makeRegisterExpression(amdgpu_gfx908::v54,0,opr_size); -case 311 : return makeRegisterExpression(amdgpu_gfx908::v55,0,opr_size); -case 312 : return makeRegisterExpression(amdgpu_gfx908::v56,0,opr_size); -case 313 : return makeRegisterExpression(amdgpu_gfx908::v57,0,opr_size); -case 314 : return makeRegisterExpression(amdgpu_gfx908::v58,0,opr_size); -case 315 : return makeRegisterExpression(amdgpu_gfx908::v59,0,opr_size); -case 316 : return makeRegisterExpression(amdgpu_gfx908::v60,0,opr_size); -case 317 : return makeRegisterExpression(amdgpu_gfx908::v61,0,opr_size); -case 318 : return makeRegisterExpression(amdgpu_gfx908::v62,0,opr_size); -case 319 : return makeRegisterExpression(amdgpu_gfx908::v63,0,opr_size); -case 320 : return makeRegisterExpression(amdgpu_gfx908::v64,0,opr_size); -case 321 : return makeRegisterExpression(amdgpu_gfx908::v65,0,opr_size); -case 322 : return makeRegisterExpression(amdgpu_gfx908::v66,0,opr_size); -case 323 : return makeRegisterExpression(amdgpu_gfx908::v67,0,opr_size); -case 324 : return makeRegisterExpression(amdgpu_gfx908::v68,0,opr_size); -case 325 : return makeRegisterExpression(amdgpu_gfx908::v69,0,opr_size); -case 326 : return makeRegisterExpression(amdgpu_gfx908::v70,0,opr_size); -case 327 : return makeRegisterExpression(amdgpu_gfx908::v71,0,opr_size); -case 328 : return makeRegisterExpression(amdgpu_gfx908::v72,0,opr_size); -case 329 : return makeRegisterExpression(amdgpu_gfx908::v73,0,opr_size); -case 330 : return makeRegisterExpression(amdgpu_gfx908::v74,0,opr_size); -case 331 : return makeRegisterExpression(amdgpu_gfx908::v75,0,opr_size); -case 332 : return makeRegisterExpression(amdgpu_gfx908::v76,0,opr_size); -case 333 : return makeRegisterExpression(amdgpu_gfx908::v77,0,opr_size); -case 334 : return makeRegisterExpression(amdgpu_gfx908::v78,0,opr_size); -case 335 : return makeRegisterExpression(amdgpu_gfx908::v79,0,opr_size); -case 336 : return makeRegisterExpression(amdgpu_gfx908::v80,0,opr_size); -case 337 : return makeRegisterExpression(amdgpu_gfx908::v81,0,opr_size); -case 338 : return makeRegisterExpression(amdgpu_gfx908::v82,0,opr_size); -case 339 : return makeRegisterExpression(amdgpu_gfx908::v83,0,opr_size); -case 340 : return makeRegisterExpression(amdgpu_gfx908::v84,0,opr_size); -case 341 : return makeRegisterExpression(amdgpu_gfx908::v85,0,opr_size); -case 342 : return makeRegisterExpression(amdgpu_gfx908::v86,0,opr_size); -case 343 : return makeRegisterExpression(amdgpu_gfx908::v87,0,opr_size); -case 344 : return makeRegisterExpression(amdgpu_gfx908::v88,0,opr_size); -case 345 : return makeRegisterExpression(amdgpu_gfx908::v89,0,opr_size); -case 346 : return makeRegisterExpression(amdgpu_gfx908::v90,0,opr_size); -case 347 : return makeRegisterExpression(amdgpu_gfx908::v91,0,opr_size); -case 348 : return makeRegisterExpression(amdgpu_gfx908::v92,0,opr_size); -case 349 : return makeRegisterExpression(amdgpu_gfx908::v93,0,opr_size); -case 350 : return makeRegisterExpression(amdgpu_gfx908::v94,0,opr_size); -case 351 : return makeRegisterExpression(amdgpu_gfx908::v95,0,opr_size); -case 352 : return makeRegisterExpression(amdgpu_gfx908::v96,0,opr_size); -case 353 : return makeRegisterExpression(amdgpu_gfx908::v97,0,opr_size); -case 354 : return makeRegisterExpression(amdgpu_gfx908::v98,0,opr_size); -case 355 : return makeRegisterExpression(amdgpu_gfx908::v99,0,opr_size); -case 356 : return makeRegisterExpression(amdgpu_gfx908::v100,0,opr_size); -case 357 : return makeRegisterExpression(amdgpu_gfx908::v101,0,opr_size); -case 358 : return makeRegisterExpression(amdgpu_gfx908::v102,0,opr_size); -case 359 : return makeRegisterExpression(amdgpu_gfx908::v103,0,opr_size); -case 360 : return makeRegisterExpression(amdgpu_gfx908::v104,0,opr_size); -case 361 : return makeRegisterExpression(amdgpu_gfx908::v105,0,opr_size); -case 362 : return makeRegisterExpression(amdgpu_gfx908::v106,0,opr_size); -case 363 : return makeRegisterExpression(amdgpu_gfx908::v107,0,opr_size); -case 364 : return makeRegisterExpression(amdgpu_gfx908::v108,0,opr_size); -case 365 : return makeRegisterExpression(amdgpu_gfx908::v109,0,opr_size); -case 366 : return makeRegisterExpression(amdgpu_gfx908::v110,0,opr_size); -case 367 : return makeRegisterExpression(amdgpu_gfx908::v111,0,opr_size); -case 368 : return makeRegisterExpression(amdgpu_gfx908::v112,0,opr_size); -case 369 : return makeRegisterExpression(amdgpu_gfx908::v113,0,opr_size); -case 370 : return makeRegisterExpression(amdgpu_gfx908::v114,0,opr_size); -case 371 : return makeRegisterExpression(amdgpu_gfx908::v115,0,opr_size); -case 372 : return makeRegisterExpression(amdgpu_gfx908::v116,0,opr_size); -case 373 : return makeRegisterExpression(amdgpu_gfx908::v117,0,opr_size); -case 374 : return makeRegisterExpression(amdgpu_gfx908::v118,0,opr_size); -case 375 : return makeRegisterExpression(amdgpu_gfx908::v119,0,opr_size); -case 376 : return makeRegisterExpression(amdgpu_gfx908::v120,0,opr_size); -case 377 : return makeRegisterExpression(amdgpu_gfx908::v121,0,opr_size); -case 378 : return makeRegisterExpression(amdgpu_gfx908::v122,0,opr_size); -case 379 : return makeRegisterExpression(amdgpu_gfx908::v123,0,opr_size); -case 380 : return makeRegisterExpression(amdgpu_gfx908::v124,0,opr_size); -case 381 : return makeRegisterExpression(amdgpu_gfx908::v125,0,opr_size); -case 382 : return makeRegisterExpression(amdgpu_gfx908::v126,0,opr_size); -case 383 : return makeRegisterExpression(amdgpu_gfx908::v127,0,opr_size); -case 384 : return makeRegisterExpression(amdgpu_gfx908::v128,0,opr_size); -case 385 : return makeRegisterExpression(amdgpu_gfx908::v129,0,opr_size); -case 386 : return makeRegisterExpression(amdgpu_gfx908::v130,0,opr_size); -case 387 : return makeRegisterExpression(amdgpu_gfx908::v131,0,opr_size); -case 388 : return makeRegisterExpression(amdgpu_gfx908::v132,0,opr_size); -case 389 : return makeRegisterExpression(amdgpu_gfx908::v133,0,opr_size); -case 390 : return makeRegisterExpression(amdgpu_gfx908::v134,0,opr_size); -case 391 : return makeRegisterExpression(amdgpu_gfx908::v135,0,opr_size); -case 392 : return makeRegisterExpression(amdgpu_gfx908::v136,0,opr_size); -case 393 : return makeRegisterExpression(amdgpu_gfx908::v137,0,opr_size); -case 394 : return makeRegisterExpression(amdgpu_gfx908::v138,0,opr_size); -case 395 : return makeRegisterExpression(amdgpu_gfx908::v139,0,opr_size); -case 396 : return makeRegisterExpression(amdgpu_gfx908::v140,0,opr_size); -case 397 : return makeRegisterExpression(amdgpu_gfx908::v141,0,opr_size); -case 398 : return makeRegisterExpression(amdgpu_gfx908::v142,0,opr_size); -case 399 : return makeRegisterExpression(amdgpu_gfx908::v143,0,opr_size); -case 400 : return makeRegisterExpression(amdgpu_gfx908::v144,0,opr_size); -case 401 : return makeRegisterExpression(amdgpu_gfx908::v145,0,opr_size); -case 402 : return makeRegisterExpression(amdgpu_gfx908::v146,0,opr_size); -case 403 : return makeRegisterExpression(amdgpu_gfx908::v147,0,opr_size); -case 404 : return makeRegisterExpression(amdgpu_gfx908::v148,0,opr_size); -case 405 : return makeRegisterExpression(amdgpu_gfx908::v149,0,opr_size); -case 406 : return makeRegisterExpression(amdgpu_gfx908::v150,0,opr_size); -case 407 : return makeRegisterExpression(amdgpu_gfx908::v151,0,opr_size); -case 408 : return makeRegisterExpression(amdgpu_gfx908::v152,0,opr_size); -case 409 : return makeRegisterExpression(amdgpu_gfx908::v153,0,opr_size); -case 410 : return makeRegisterExpression(amdgpu_gfx908::v154,0,opr_size); -case 411 : return makeRegisterExpression(amdgpu_gfx908::v155,0,opr_size); -case 412 : return makeRegisterExpression(amdgpu_gfx908::v156,0,opr_size); -case 413 : return makeRegisterExpression(amdgpu_gfx908::v157,0,opr_size); -case 414 : return makeRegisterExpression(amdgpu_gfx908::v158,0,opr_size); -case 415 : return makeRegisterExpression(amdgpu_gfx908::v159,0,opr_size); -case 416 : return makeRegisterExpression(amdgpu_gfx908::v160,0,opr_size); -case 417 : return makeRegisterExpression(amdgpu_gfx908::v161,0,opr_size); -case 418 : return makeRegisterExpression(amdgpu_gfx908::v162,0,opr_size); -case 419 : return makeRegisterExpression(amdgpu_gfx908::v163,0,opr_size); -case 420 : return makeRegisterExpression(amdgpu_gfx908::v164,0,opr_size); -case 421 : return makeRegisterExpression(amdgpu_gfx908::v165,0,opr_size); -case 422 : return makeRegisterExpression(amdgpu_gfx908::v166,0,opr_size); -case 423 : return makeRegisterExpression(amdgpu_gfx908::v167,0,opr_size); -case 424 : return makeRegisterExpression(amdgpu_gfx908::v168,0,opr_size); -case 425 : return makeRegisterExpression(amdgpu_gfx908::v169,0,opr_size); -case 426 : return makeRegisterExpression(amdgpu_gfx908::v170,0,opr_size); -case 427 : return makeRegisterExpression(amdgpu_gfx908::v171,0,opr_size); -case 428 : return makeRegisterExpression(amdgpu_gfx908::v172,0,opr_size); -case 429 : return makeRegisterExpression(amdgpu_gfx908::v173,0,opr_size); -case 430 : return makeRegisterExpression(amdgpu_gfx908::v174,0,opr_size); -case 431 : return makeRegisterExpression(amdgpu_gfx908::v175,0,opr_size); -case 432 : return makeRegisterExpression(amdgpu_gfx908::v176,0,opr_size); -case 433 : return makeRegisterExpression(amdgpu_gfx908::v177,0,opr_size); -case 434 : return makeRegisterExpression(amdgpu_gfx908::v178,0,opr_size); -case 435 : return makeRegisterExpression(amdgpu_gfx908::v179,0,opr_size); -case 436 : return makeRegisterExpression(amdgpu_gfx908::v180,0,opr_size); -case 437 : return makeRegisterExpression(amdgpu_gfx908::v181,0,opr_size); -case 438 : return makeRegisterExpression(amdgpu_gfx908::v182,0,opr_size); -case 439 : return makeRegisterExpression(amdgpu_gfx908::v183,0,opr_size); -case 440 : return makeRegisterExpression(amdgpu_gfx908::v184,0,opr_size); -case 441 : return makeRegisterExpression(amdgpu_gfx908::v185,0,opr_size); -case 442 : return makeRegisterExpression(amdgpu_gfx908::v186,0,opr_size); -case 443 : return makeRegisterExpression(amdgpu_gfx908::v187,0,opr_size); -case 444 : return makeRegisterExpression(amdgpu_gfx908::v188,0,opr_size); -case 445 : return makeRegisterExpression(amdgpu_gfx908::v189,0,opr_size); -case 446 : return makeRegisterExpression(amdgpu_gfx908::v190,0,opr_size); -case 447 : return makeRegisterExpression(amdgpu_gfx908::v191,0,opr_size); -case 448 : return makeRegisterExpression(amdgpu_gfx908::v192,0,opr_size); -case 449 : return makeRegisterExpression(amdgpu_gfx908::v193,0,opr_size); -case 450 : return makeRegisterExpression(amdgpu_gfx908::v194,0,opr_size); -case 451 : return makeRegisterExpression(amdgpu_gfx908::v195,0,opr_size); -case 452 : return makeRegisterExpression(amdgpu_gfx908::v196,0,opr_size); -case 453 : return makeRegisterExpression(amdgpu_gfx908::v197,0,opr_size); -case 454 : return makeRegisterExpression(amdgpu_gfx908::v198,0,opr_size); -case 455 : return makeRegisterExpression(amdgpu_gfx908::v199,0,opr_size); -case 456 : return makeRegisterExpression(amdgpu_gfx908::v200,0,opr_size); -case 457 : return makeRegisterExpression(amdgpu_gfx908::v201,0,opr_size); -case 458 : return makeRegisterExpression(amdgpu_gfx908::v202,0,opr_size); -case 459 : return makeRegisterExpression(amdgpu_gfx908::v203,0,opr_size); -case 460 : return makeRegisterExpression(amdgpu_gfx908::v204,0,opr_size); -case 461 : return makeRegisterExpression(amdgpu_gfx908::v205,0,opr_size); -case 462 : return makeRegisterExpression(amdgpu_gfx908::v206,0,opr_size); -case 463 : return makeRegisterExpression(amdgpu_gfx908::v207,0,opr_size); -case 464 : return makeRegisterExpression(amdgpu_gfx908::v208,0,opr_size); -case 465 : return makeRegisterExpression(amdgpu_gfx908::v209,0,opr_size); -case 466 : return makeRegisterExpression(amdgpu_gfx908::v210,0,opr_size); -case 467 : return makeRegisterExpression(amdgpu_gfx908::v211,0,opr_size); -case 468 : return makeRegisterExpression(amdgpu_gfx908::v212,0,opr_size); -case 469 : return makeRegisterExpression(amdgpu_gfx908::v213,0,opr_size); -case 470 : return makeRegisterExpression(amdgpu_gfx908::v214,0,opr_size); -case 471 : return makeRegisterExpression(amdgpu_gfx908::v215,0,opr_size); -case 472 : return makeRegisterExpression(amdgpu_gfx908::v216,0,opr_size); -case 473 : return makeRegisterExpression(amdgpu_gfx908::v217,0,opr_size); -case 474 : return makeRegisterExpression(amdgpu_gfx908::v218,0,opr_size); -case 475 : return makeRegisterExpression(amdgpu_gfx908::v219,0,opr_size); -case 476 : return makeRegisterExpression(amdgpu_gfx908::v220,0,opr_size); -case 477 : return makeRegisterExpression(amdgpu_gfx908::v221,0,opr_size); -case 478 : return makeRegisterExpression(amdgpu_gfx908::v222,0,opr_size); -case 479 : return makeRegisterExpression(amdgpu_gfx908::v223,0,opr_size); -case 480 : return makeRegisterExpression(amdgpu_gfx908::v224,0,opr_size); -case 481 : return makeRegisterExpression(amdgpu_gfx908::v225,0,opr_size); -case 482 : return makeRegisterExpression(amdgpu_gfx908::v226,0,opr_size); -case 483 : return makeRegisterExpression(amdgpu_gfx908::v227,0,opr_size); -case 484 : return makeRegisterExpression(amdgpu_gfx908::v228,0,opr_size); -case 485 : return makeRegisterExpression(amdgpu_gfx908::v229,0,opr_size); -case 486 : return makeRegisterExpression(amdgpu_gfx908::v230,0,opr_size); -case 487 : return makeRegisterExpression(amdgpu_gfx908::v231,0,opr_size); -case 488 : return makeRegisterExpression(amdgpu_gfx908::v232,0,opr_size); -case 489 : return makeRegisterExpression(amdgpu_gfx908::v233,0,opr_size); -case 490 : return makeRegisterExpression(amdgpu_gfx908::v234,0,opr_size); -case 491 : return makeRegisterExpression(amdgpu_gfx908::v235,0,opr_size); -case 492 : return makeRegisterExpression(amdgpu_gfx908::v236,0,opr_size); -case 493 : return makeRegisterExpression(amdgpu_gfx908::v237,0,opr_size); -case 494 : return makeRegisterExpression(amdgpu_gfx908::v238,0,opr_size); -case 495 : return makeRegisterExpression(amdgpu_gfx908::v239,0,opr_size); -case 496 : return makeRegisterExpression(amdgpu_gfx908::v240,0,opr_size); -case 497 : return makeRegisterExpression(amdgpu_gfx908::v241,0,opr_size); -case 498 : return makeRegisterExpression(amdgpu_gfx908::v242,0,opr_size); -case 499 : return makeRegisterExpression(amdgpu_gfx908::v243,0,opr_size); -case 500 : return makeRegisterExpression(amdgpu_gfx908::v244,0,opr_size); -case 501 : return makeRegisterExpression(amdgpu_gfx908::v245,0,opr_size); -case 502 : return makeRegisterExpression(amdgpu_gfx908::v246,0,opr_size); -case 503 : return makeRegisterExpression(amdgpu_gfx908::v247,0,opr_size); -case 504 : return makeRegisterExpression(amdgpu_gfx908::v248,0,opr_size); -case 505 : return makeRegisterExpression(amdgpu_gfx908::v249,0,opr_size); -case 506 : return makeRegisterExpression(amdgpu_gfx908::v250,0,opr_size); -case 507 : return makeRegisterExpression(amdgpu_gfx908::v251,0,opr_size); -case 508 : return makeRegisterExpression(amdgpu_gfx908::v252,0,opr_size); -case 509 : return makeRegisterExpression(amdgpu_gfx908::v253,0,opr_size); -case 510 : return makeRegisterExpression(amdgpu_gfx908::v254,0,opr_size); -case 511 : return makeRegisterExpression(amdgpu_gfx908::v255,0,opr_size); +case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct, num_elements ); +case 256 : return makeRegisterExpression(amdgpu_gfx908::v0, num_elements ); +case 257 : return makeRegisterExpression(amdgpu_gfx908::v1, num_elements ); +case 258 : return makeRegisterExpression(amdgpu_gfx908::v2, num_elements ); +case 259 : return makeRegisterExpression(amdgpu_gfx908::v3, num_elements ); +case 260 : return makeRegisterExpression(amdgpu_gfx908::v4, num_elements ); +case 261 : return makeRegisterExpression(amdgpu_gfx908::v5, num_elements ); +case 262 : return makeRegisterExpression(amdgpu_gfx908::v6, num_elements ); +case 263 : return makeRegisterExpression(amdgpu_gfx908::v7, num_elements ); +case 264 : return makeRegisterExpression(amdgpu_gfx908::v8, num_elements ); +case 265 : return makeRegisterExpression(amdgpu_gfx908::v9, num_elements ); +case 266 : return makeRegisterExpression(amdgpu_gfx908::v10, num_elements ); +case 267 : return makeRegisterExpression(amdgpu_gfx908::v11, num_elements ); +case 268 : return makeRegisterExpression(amdgpu_gfx908::v12, num_elements ); +case 269 : return makeRegisterExpression(amdgpu_gfx908::v13, num_elements ); +case 270 : return makeRegisterExpression(amdgpu_gfx908::v14, num_elements ); +case 271 : return makeRegisterExpression(amdgpu_gfx908::v15, num_elements ); +case 272 : return makeRegisterExpression(amdgpu_gfx908::v16, num_elements ); +case 273 : return makeRegisterExpression(amdgpu_gfx908::v17, num_elements ); +case 274 : return makeRegisterExpression(amdgpu_gfx908::v18, num_elements ); +case 275 : return makeRegisterExpression(amdgpu_gfx908::v19, num_elements ); +case 276 : return makeRegisterExpression(amdgpu_gfx908::v20, num_elements ); +case 277 : return makeRegisterExpression(amdgpu_gfx908::v21, num_elements ); +case 278 : return makeRegisterExpression(amdgpu_gfx908::v22, num_elements ); +case 279 : return makeRegisterExpression(amdgpu_gfx908::v23, num_elements ); +case 280 : return makeRegisterExpression(amdgpu_gfx908::v24, num_elements ); +case 281 : return makeRegisterExpression(amdgpu_gfx908::v25, num_elements ); +case 282 : return makeRegisterExpression(amdgpu_gfx908::v26, num_elements ); +case 283 : return makeRegisterExpression(amdgpu_gfx908::v27, num_elements ); +case 284 : return makeRegisterExpression(amdgpu_gfx908::v28, num_elements ); +case 285 : return makeRegisterExpression(amdgpu_gfx908::v29, num_elements ); +case 286 : return makeRegisterExpression(amdgpu_gfx908::v30, num_elements ); +case 287 : return makeRegisterExpression(amdgpu_gfx908::v31, num_elements ); +case 288 : return makeRegisterExpression(amdgpu_gfx908::v32, num_elements ); +case 289 : return makeRegisterExpression(amdgpu_gfx908::v33, num_elements ); +case 290 : return makeRegisterExpression(amdgpu_gfx908::v34, num_elements ); +case 291 : return makeRegisterExpression(amdgpu_gfx908::v35, num_elements ); +case 292 : return makeRegisterExpression(amdgpu_gfx908::v36, num_elements ); +case 293 : return makeRegisterExpression(amdgpu_gfx908::v37, num_elements ); +case 294 : return makeRegisterExpression(amdgpu_gfx908::v38, num_elements ); +case 295 : return makeRegisterExpression(amdgpu_gfx908::v39, num_elements ); +case 296 : return makeRegisterExpression(amdgpu_gfx908::v40, num_elements ); +case 297 : return makeRegisterExpression(amdgpu_gfx908::v41, num_elements ); +case 298 : return makeRegisterExpression(amdgpu_gfx908::v42, num_elements ); +case 299 : return makeRegisterExpression(amdgpu_gfx908::v43, num_elements ); +case 300 : return makeRegisterExpression(amdgpu_gfx908::v44, num_elements ); +case 301 : return makeRegisterExpression(amdgpu_gfx908::v45, num_elements ); +case 302 : return makeRegisterExpression(amdgpu_gfx908::v46, num_elements ); +case 303 : return makeRegisterExpression(amdgpu_gfx908::v47, num_elements ); +case 304 : return makeRegisterExpression(amdgpu_gfx908::v48, num_elements ); +case 305 : return makeRegisterExpression(amdgpu_gfx908::v49, num_elements ); +case 306 : return makeRegisterExpression(amdgpu_gfx908::v50, num_elements ); +case 307 : return makeRegisterExpression(amdgpu_gfx908::v51, num_elements ); +case 308 : return makeRegisterExpression(amdgpu_gfx908::v52, num_elements ); +case 309 : return makeRegisterExpression(amdgpu_gfx908::v53, num_elements ); +case 310 : return makeRegisterExpression(amdgpu_gfx908::v54, num_elements ); +case 311 : return makeRegisterExpression(amdgpu_gfx908::v55, num_elements ); +case 312 : return makeRegisterExpression(amdgpu_gfx908::v56, num_elements ); +case 313 : return makeRegisterExpression(amdgpu_gfx908::v57, num_elements ); +case 314 : return makeRegisterExpression(amdgpu_gfx908::v58, num_elements ); +case 315 : return makeRegisterExpression(amdgpu_gfx908::v59, num_elements ); +case 316 : return makeRegisterExpression(amdgpu_gfx908::v60, num_elements ); +case 317 : return makeRegisterExpression(amdgpu_gfx908::v61, num_elements ); +case 318 : return makeRegisterExpression(amdgpu_gfx908::v62, num_elements ); +case 319 : return makeRegisterExpression(amdgpu_gfx908::v63, num_elements ); +case 320 : return makeRegisterExpression(amdgpu_gfx908::v64, num_elements ); +case 321 : return makeRegisterExpression(amdgpu_gfx908::v65, num_elements ); +case 322 : return makeRegisterExpression(amdgpu_gfx908::v66, num_elements ); +case 323 : return makeRegisterExpression(amdgpu_gfx908::v67, num_elements ); +case 324 : return makeRegisterExpression(amdgpu_gfx908::v68, num_elements ); +case 325 : return makeRegisterExpression(amdgpu_gfx908::v69, num_elements ); +case 326 : return makeRegisterExpression(amdgpu_gfx908::v70, num_elements ); +case 327 : return makeRegisterExpression(amdgpu_gfx908::v71, num_elements ); +case 328 : return makeRegisterExpression(amdgpu_gfx908::v72, num_elements ); +case 329 : return makeRegisterExpression(amdgpu_gfx908::v73, num_elements ); +case 330 : return makeRegisterExpression(amdgpu_gfx908::v74, num_elements ); +case 331 : return makeRegisterExpression(amdgpu_gfx908::v75, num_elements ); +case 332 : return makeRegisterExpression(amdgpu_gfx908::v76, num_elements ); +case 333 : return makeRegisterExpression(amdgpu_gfx908::v77, num_elements ); +case 334 : return makeRegisterExpression(amdgpu_gfx908::v78, num_elements ); +case 335 : return makeRegisterExpression(amdgpu_gfx908::v79, num_elements ); +case 336 : return makeRegisterExpression(amdgpu_gfx908::v80, num_elements ); +case 337 : return makeRegisterExpression(amdgpu_gfx908::v81, num_elements ); +case 338 : return makeRegisterExpression(amdgpu_gfx908::v82, num_elements ); +case 339 : return makeRegisterExpression(amdgpu_gfx908::v83, num_elements ); +case 340 : return makeRegisterExpression(amdgpu_gfx908::v84, num_elements ); +case 341 : return makeRegisterExpression(amdgpu_gfx908::v85, num_elements ); +case 342 : return makeRegisterExpression(amdgpu_gfx908::v86, num_elements ); +case 343 : return makeRegisterExpression(amdgpu_gfx908::v87, num_elements ); +case 344 : return makeRegisterExpression(amdgpu_gfx908::v88, num_elements ); +case 345 : return makeRegisterExpression(amdgpu_gfx908::v89, num_elements ); +case 346 : return makeRegisterExpression(amdgpu_gfx908::v90, num_elements ); +case 347 : return makeRegisterExpression(amdgpu_gfx908::v91, num_elements ); +case 348 : return makeRegisterExpression(amdgpu_gfx908::v92, num_elements ); +case 349 : return makeRegisterExpression(amdgpu_gfx908::v93, num_elements ); +case 350 : return makeRegisterExpression(amdgpu_gfx908::v94, num_elements ); +case 351 : return makeRegisterExpression(amdgpu_gfx908::v95, num_elements ); +case 352 : return makeRegisterExpression(amdgpu_gfx908::v96, num_elements ); +case 353 : return makeRegisterExpression(amdgpu_gfx908::v97, num_elements ); +case 354 : return makeRegisterExpression(amdgpu_gfx908::v98, num_elements ); +case 355 : return makeRegisterExpression(amdgpu_gfx908::v99, num_elements ); +case 356 : return makeRegisterExpression(amdgpu_gfx908::v100, num_elements ); +case 357 : return makeRegisterExpression(amdgpu_gfx908::v101, num_elements ); +case 358 : return makeRegisterExpression(amdgpu_gfx908::v102, num_elements ); +case 359 : return makeRegisterExpression(amdgpu_gfx908::v103, num_elements ); +case 360 : return makeRegisterExpression(amdgpu_gfx908::v104, num_elements ); +case 361 : return makeRegisterExpression(amdgpu_gfx908::v105, num_elements ); +case 362 : return makeRegisterExpression(amdgpu_gfx908::v106, num_elements ); +case 363 : return makeRegisterExpression(amdgpu_gfx908::v107, num_elements ); +case 364 : return makeRegisterExpression(amdgpu_gfx908::v108, num_elements ); +case 365 : return makeRegisterExpression(amdgpu_gfx908::v109, num_elements ); +case 366 : return makeRegisterExpression(amdgpu_gfx908::v110, num_elements ); +case 367 : return makeRegisterExpression(amdgpu_gfx908::v111, num_elements ); +case 368 : return makeRegisterExpression(amdgpu_gfx908::v112, num_elements ); +case 369 : return makeRegisterExpression(amdgpu_gfx908::v113, num_elements ); +case 370 : return makeRegisterExpression(amdgpu_gfx908::v114, num_elements ); +case 371 : return makeRegisterExpression(amdgpu_gfx908::v115, num_elements ); +case 372 : return makeRegisterExpression(amdgpu_gfx908::v116, num_elements ); +case 373 : return makeRegisterExpression(amdgpu_gfx908::v117, num_elements ); +case 374 : return makeRegisterExpression(amdgpu_gfx908::v118, num_elements ); +case 375 : return makeRegisterExpression(amdgpu_gfx908::v119, num_elements ); +case 376 : return makeRegisterExpression(amdgpu_gfx908::v120, num_elements ); +case 377 : return makeRegisterExpression(amdgpu_gfx908::v121, num_elements ); +case 378 : return makeRegisterExpression(amdgpu_gfx908::v122, num_elements ); +case 379 : return makeRegisterExpression(amdgpu_gfx908::v123, num_elements ); +case 380 : return makeRegisterExpression(amdgpu_gfx908::v124, num_elements ); +case 381 : return makeRegisterExpression(amdgpu_gfx908::v125, num_elements ); +case 382 : return makeRegisterExpression(amdgpu_gfx908::v126, num_elements ); +case 383 : return makeRegisterExpression(amdgpu_gfx908::v127, num_elements ); +case 384 : return makeRegisterExpression(amdgpu_gfx908::v128, num_elements ); +case 385 : return makeRegisterExpression(amdgpu_gfx908::v129, num_elements ); +case 386 : return makeRegisterExpression(amdgpu_gfx908::v130, num_elements ); +case 387 : return makeRegisterExpression(amdgpu_gfx908::v131, num_elements ); +case 388 : return makeRegisterExpression(amdgpu_gfx908::v132, num_elements ); +case 389 : return makeRegisterExpression(amdgpu_gfx908::v133, num_elements ); +case 390 : return makeRegisterExpression(amdgpu_gfx908::v134, num_elements ); +case 391 : return makeRegisterExpression(amdgpu_gfx908::v135, num_elements ); +case 392 : return makeRegisterExpression(amdgpu_gfx908::v136, num_elements ); +case 393 : return makeRegisterExpression(amdgpu_gfx908::v137, num_elements ); +case 394 : return makeRegisterExpression(amdgpu_gfx908::v138, num_elements ); +case 395 : return makeRegisterExpression(amdgpu_gfx908::v139, num_elements ); +case 396 : return makeRegisterExpression(amdgpu_gfx908::v140, num_elements ); +case 397 : return makeRegisterExpression(amdgpu_gfx908::v141, num_elements ); +case 398 : return makeRegisterExpression(amdgpu_gfx908::v142, num_elements ); +case 399 : return makeRegisterExpression(amdgpu_gfx908::v143, num_elements ); +case 400 : return makeRegisterExpression(amdgpu_gfx908::v144, num_elements ); +case 401 : return makeRegisterExpression(amdgpu_gfx908::v145, num_elements ); +case 402 : return makeRegisterExpression(amdgpu_gfx908::v146, num_elements ); +case 403 : return makeRegisterExpression(amdgpu_gfx908::v147, num_elements ); +case 404 : return makeRegisterExpression(amdgpu_gfx908::v148, num_elements ); +case 405 : return makeRegisterExpression(amdgpu_gfx908::v149, num_elements ); +case 406 : return makeRegisterExpression(amdgpu_gfx908::v150, num_elements ); +case 407 : return makeRegisterExpression(amdgpu_gfx908::v151, num_elements ); +case 408 : return makeRegisterExpression(amdgpu_gfx908::v152, num_elements ); +case 409 : return makeRegisterExpression(amdgpu_gfx908::v153, num_elements ); +case 410 : return makeRegisterExpression(amdgpu_gfx908::v154, num_elements ); +case 411 : return makeRegisterExpression(amdgpu_gfx908::v155, num_elements ); +case 412 : return makeRegisterExpression(amdgpu_gfx908::v156, num_elements ); +case 413 : return makeRegisterExpression(amdgpu_gfx908::v157, num_elements ); +case 414 : return makeRegisterExpression(amdgpu_gfx908::v158, num_elements ); +case 415 : return makeRegisterExpression(amdgpu_gfx908::v159, num_elements ); +case 416 : return makeRegisterExpression(amdgpu_gfx908::v160, num_elements ); +case 417 : return makeRegisterExpression(amdgpu_gfx908::v161, num_elements ); +case 418 : return makeRegisterExpression(amdgpu_gfx908::v162, num_elements ); +case 419 : return makeRegisterExpression(amdgpu_gfx908::v163, num_elements ); +case 420 : return makeRegisterExpression(amdgpu_gfx908::v164, num_elements ); +case 421 : return makeRegisterExpression(amdgpu_gfx908::v165, num_elements ); +case 422 : return makeRegisterExpression(amdgpu_gfx908::v166, num_elements ); +case 423 : return makeRegisterExpression(amdgpu_gfx908::v167, num_elements ); +case 424 : return makeRegisterExpression(amdgpu_gfx908::v168, num_elements ); +case 425 : return makeRegisterExpression(amdgpu_gfx908::v169, num_elements ); +case 426 : return makeRegisterExpression(amdgpu_gfx908::v170, num_elements ); +case 427 : return makeRegisterExpression(amdgpu_gfx908::v171, num_elements ); +case 428 : return makeRegisterExpression(amdgpu_gfx908::v172, num_elements ); +case 429 : return makeRegisterExpression(amdgpu_gfx908::v173, num_elements ); +case 430 : return makeRegisterExpression(amdgpu_gfx908::v174, num_elements ); +case 431 : return makeRegisterExpression(amdgpu_gfx908::v175, num_elements ); +case 432 : return makeRegisterExpression(amdgpu_gfx908::v176, num_elements ); +case 433 : return makeRegisterExpression(amdgpu_gfx908::v177, num_elements ); +case 434 : return makeRegisterExpression(amdgpu_gfx908::v178, num_elements ); +case 435 : return makeRegisterExpression(amdgpu_gfx908::v179, num_elements ); +case 436 : return makeRegisterExpression(amdgpu_gfx908::v180, num_elements ); +case 437 : return makeRegisterExpression(amdgpu_gfx908::v181, num_elements ); +case 438 : return makeRegisterExpression(amdgpu_gfx908::v182, num_elements ); +case 439 : return makeRegisterExpression(amdgpu_gfx908::v183, num_elements ); +case 440 : return makeRegisterExpression(amdgpu_gfx908::v184, num_elements ); +case 441 : return makeRegisterExpression(amdgpu_gfx908::v185, num_elements ); +case 442 : return makeRegisterExpression(amdgpu_gfx908::v186, num_elements ); +case 443 : return makeRegisterExpression(amdgpu_gfx908::v187, num_elements ); +case 444 : return makeRegisterExpression(amdgpu_gfx908::v188, num_elements ); +case 445 : return makeRegisterExpression(amdgpu_gfx908::v189, num_elements ); +case 446 : return makeRegisterExpression(amdgpu_gfx908::v190, num_elements ); +case 447 : return makeRegisterExpression(amdgpu_gfx908::v191, num_elements ); +case 448 : return makeRegisterExpression(amdgpu_gfx908::v192, num_elements ); +case 449 : return makeRegisterExpression(amdgpu_gfx908::v193, num_elements ); +case 450 : return makeRegisterExpression(amdgpu_gfx908::v194, num_elements ); +case 451 : return makeRegisterExpression(amdgpu_gfx908::v195, num_elements ); +case 452 : return makeRegisterExpression(amdgpu_gfx908::v196, num_elements ); +case 453 : return makeRegisterExpression(amdgpu_gfx908::v197, num_elements ); +case 454 : return makeRegisterExpression(amdgpu_gfx908::v198, num_elements ); +case 455 : return makeRegisterExpression(amdgpu_gfx908::v199, num_elements ); +case 456 : return makeRegisterExpression(amdgpu_gfx908::v200, num_elements ); +case 457 : return makeRegisterExpression(amdgpu_gfx908::v201, num_elements ); +case 458 : return makeRegisterExpression(amdgpu_gfx908::v202, num_elements ); +case 459 : return makeRegisterExpression(amdgpu_gfx908::v203, num_elements ); +case 460 : return makeRegisterExpression(amdgpu_gfx908::v204, num_elements ); +case 461 : return makeRegisterExpression(amdgpu_gfx908::v205, num_elements ); +case 462 : return makeRegisterExpression(amdgpu_gfx908::v206, num_elements ); +case 463 : return makeRegisterExpression(amdgpu_gfx908::v207, num_elements ); +case 464 : return makeRegisterExpression(amdgpu_gfx908::v208, num_elements ); +case 465 : return makeRegisterExpression(amdgpu_gfx908::v209, num_elements ); +case 466 : return makeRegisterExpression(amdgpu_gfx908::v210, num_elements ); +case 467 : return makeRegisterExpression(amdgpu_gfx908::v211, num_elements ); +case 468 : return makeRegisterExpression(amdgpu_gfx908::v212, num_elements ); +case 469 : return makeRegisterExpression(amdgpu_gfx908::v213, num_elements ); +case 470 : return makeRegisterExpression(amdgpu_gfx908::v214, num_elements ); +case 471 : return makeRegisterExpression(amdgpu_gfx908::v215, num_elements ); +case 472 : return makeRegisterExpression(amdgpu_gfx908::v216, num_elements ); +case 473 : return makeRegisterExpression(amdgpu_gfx908::v217, num_elements ); +case 474 : return makeRegisterExpression(amdgpu_gfx908::v218, num_elements ); +case 475 : return makeRegisterExpression(amdgpu_gfx908::v219, num_elements ); +case 476 : return makeRegisterExpression(amdgpu_gfx908::v220, num_elements ); +case 477 : return makeRegisterExpression(amdgpu_gfx908::v221, num_elements ); +case 478 : return makeRegisterExpression(amdgpu_gfx908::v222, num_elements ); +case 479 : return makeRegisterExpression(amdgpu_gfx908::v223, num_elements ); +case 480 : return makeRegisterExpression(amdgpu_gfx908::v224, num_elements ); +case 481 : return makeRegisterExpression(amdgpu_gfx908::v225, num_elements ); +case 482 : return makeRegisterExpression(amdgpu_gfx908::v226, num_elements ); +case 483 : return makeRegisterExpression(amdgpu_gfx908::v227, num_elements ); +case 484 : return makeRegisterExpression(amdgpu_gfx908::v228, num_elements ); +case 485 : return makeRegisterExpression(amdgpu_gfx908::v229, num_elements ); +case 486 : return makeRegisterExpression(amdgpu_gfx908::v230, num_elements ); +case 487 : return makeRegisterExpression(amdgpu_gfx908::v231, num_elements ); +case 488 : return makeRegisterExpression(amdgpu_gfx908::v232, num_elements ); +case 489 : return makeRegisterExpression(amdgpu_gfx908::v233, num_elements ); +case 490 : return makeRegisterExpression(amdgpu_gfx908::v234, num_elements ); +case 491 : return makeRegisterExpression(amdgpu_gfx908::v235, num_elements ); +case 492 : return makeRegisterExpression(amdgpu_gfx908::v236, num_elements ); +case 493 : return makeRegisterExpression(amdgpu_gfx908::v237, num_elements ); +case 494 : return makeRegisterExpression(amdgpu_gfx908::v238, num_elements ); +case 495 : return makeRegisterExpression(amdgpu_gfx908::v239, num_elements ); +case 496 : return makeRegisterExpression(amdgpu_gfx908::v240, num_elements ); +case 497 : return makeRegisterExpression(amdgpu_gfx908::v241, num_elements ); +case 498 : return makeRegisterExpression(amdgpu_gfx908::v242, num_elements ); +case 499 : return makeRegisterExpression(amdgpu_gfx908::v243, num_elements ); +case 500 : return makeRegisterExpression(amdgpu_gfx908::v244, num_elements ); +case 501 : return makeRegisterExpression(amdgpu_gfx908::v245, num_elements ); +case 502 : return makeRegisterExpression(amdgpu_gfx908::v246, num_elements ); +case 503 : return makeRegisterExpression(amdgpu_gfx908::v247, num_elements ); +case 504 : return makeRegisterExpression(amdgpu_gfx908::v248, num_elements ); +case 505 : return makeRegisterExpression(amdgpu_gfx908::v249, num_elements ); +case 506 : return makeRegisterExpression(amdgpu_gfx908::v250, num_elements ); +case 507 : return makeRegisterExpression(amdgpu_gfx908::v251, num_elements ); +case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); +case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); +case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); +case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t opr_size){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t num_elements){ switch(input){ -case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo,0,opr_size); -case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi,0,opr_size); +case 104 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_lo, num_elements ); +case 105 : return makeRegisterExpression(amdgpu_gfx908::xnack_mask_hi, num_elements ); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h index 810717a586..dadf2f8f7d 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.h @@ -1,41 +1,41 @@ -Expression::Ptr decodeOPR_ACCVGPR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_ATTR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_PARAM(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_PC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SDST_M0(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SGPR(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_ACCVGPR(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_ATTR(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_FLAT_SCRATCH(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_FLAT_SCRATCH_LOHI(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_PARAM(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_PC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SDST(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SDST_EXEC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SDST_M0(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SGPR(uint64_t input, uint32_t num_elements = 1 ); void processOPR_SMEM_OFFSET(layout_ENC_SMEM & layout ); -Expression::Ptr decodeOPR_SRC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SREG(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_LDS(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_TGT(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_TRAP(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_VCC(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t opr_size ); -Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t opr_size ); +Expression::Ptr decodeOPR_SRC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_ACCVGPR(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_ACCVGPR_OR_CONST(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_NOLDS(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_NOLIT(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_SIMPLE(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_VGPR(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SRC_VGPR_OR_ACCVGPR(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SREG(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SREG_NOVCC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_0_63_INLINES(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_INLINES(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_LANESEL(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_NOLIT(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_APERTURE(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_EXECZ(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LDS(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_NOLIT(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_POPS_EXITING_WAVE_ID(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_SCC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_SSRC_SPECIAL_VCCZ(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_TGT(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_TRAP(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_VCC(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_VCC_LOHI(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_VGPR(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_VGPR_OR_LDS(uint64_t input, uint32_t num_elements = 1 ); +Expression::Ptr decodeOPR_XNACK_MASK_LOHI(uint64_t input, uint32_t num_elements = 1 ); diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index d141a8e453..499b9f9c83 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -3,147 +3,147 @@ layout_ENC_DS & layout = insn_layout.ENC_DS; switch(layout.OP){ case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 13:case 18:case 19:case 21:case 30:case 31:case 84:case 85: //DS_ADD_U32,DS_SUB_U32,DS_RSUB_U32,DS_INC_U32,DS_DEC_U32,DS_MIN_I32,DS_MAX_I32,DS_MIN_U32,DS_MAX_U32,DS_AND_B32,DS_OR_B32,DS_XOR_B32,DS_WRITE_B32,DS_MIN_F32,DS_MAX_F32,DS_ADD_F32,DS_WRITE_B8,DS_WRITE_B16,DS_WRITE_B8_D16_HI,DS_WRITE_B16_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); break; case 12:case 14:case 15:case 16:case 17: //DS_MSKOR_B32,DS_WRITE2_B32,DS_WRITE2ST64_B32,DS_CMPST_B32,DS_CMPST_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1),true,false); break; case 20: //DS_NOP break; case 29:case 153:case 155:case 157: //DS_WRITE_ADDTID_B32,DS_GWS_INIT,DS_GWS_SEMA_BR,DS_GWS_BARRIER -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 45:case 50:case 51:case 53:case 62:case 63: //DS_ADD_RTN_U32,DS_SUB_RTN_U32,DS_RSUB_RTN_U32,DS_INC_RTN_U32,DS_DEC_RTN_U32,DS_MIN_RTN_I32,DS_MAX_RTN_I32,DS_MIN_RTN_U32,DS_MAX_RTN_U32,DS_AND_RTN_B32,DS_OR_RTN_B32,DS_XOR_RTN_B32,DS_WRXCHG_RTN_B32,DS_MIN_RTN_F32,DS_MAX_RTN_F32,DS_ADD_RTN_F32,DS_PERMUTE_B32,DS_BPERMUTE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); break; case 44:case 48:case 49:case 52: //DS_MSKOR_RTN_B32,DS_CMPST_RTN_B32,DS_CMPST_RTN_F32,DS_WRAP_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1),true,false); break; case 46:case 47: //DS_WRXCHG2_RTN_B32,DS_WRXCHG2ST64_RTN_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1),true,false); break; case 54:case 57:case 58:case 59:case 60:case 61:case 86:case 87:case 88:case 89:case 90:case 91: //DS_READ_B32,DS_READ_I8,DS_READ_U8,DS_READ_I16,DS_READ_U16,DS_SWIZZLE_B32,DS_READ_U8_D16,DS_READ_U8_D16_HI,DS_READ_I8_D16,DS_READ_I8_D16_HI,DS_READ_U16_D16,DS_READ_U16_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); break; case 55:case 56:case 118: //DS_READ2_B32,DS_READ2ST64_B32,DS_READ_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); break; case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 77:case 82:case 83: //DS_ADD_U64,DS_SUB_U64,DS_RSUB_U64,DS_INC_U64,DS_DEC_U64,DS_MIN_I64,DS_MAX_I64,DS_MIN_U64,DS_MAX_U64,DS_AND_B64,DS_OR_B64,DS_XOR_B64,DS_WRITE_B64,DS_MIN_F64,DS_MAX_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); break; case 76:case 78:case 79:case 80:case 81: //DS_MSKOR_B64,DS_WRITE2_B64,DS_WRITE2ST64_B64,DS_CMPST_B64,DS_CMPST_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,0),true,false); break; case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 109:case 114:case 115:case 126: //DS_ADD_RTN_U64,DS_SUB_RTN_U64,DS_RSUB_RTN_U64,DS_INC_RTN_U64,DS_DEC_RTN_U64,DS_MIN_RTN_I64,DS_MAX_RTN_I64,DS_MIN_RTN_U64,DS_MAX_RTN_U64,DS_AND_RTN_B64,DS_OR_RTN_B64,DS_XOR_RTN_B64,DS_WRXCHG_RTN_B64,DS_MIN_RTN_F64,DS_MAX_RTN_F64,DS_CONDXCHG32_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); break; case 108:case 112:case 113: //DS_MSKOR_RTN_B64,DS_CMPST_RTN_B64,DS_CMPST_RTN_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,0),true,false); break; case 110:case 111: //DS_WRXCHG2_RTN_B64,DS_WRXCHG2ST64_RTN_B64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA1+1,0),true,false); break; case 119:case 120:case 255: //DS_READ2_B64,DS_READ2ST64_B64,DS_READ_B128 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); break; case 128:case 129:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 141:case 146:case 147:case 149:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 205:case 210:case 211: //DS_ADD_SRC2_U32,DS_SUB_SRC2_U32,DS_RSUB_SRC2_U32,DS_INC_SRC2_U32,DS_DEC_SRC2_U32,DS_MIN_SRC2_I32,DS_MAX_SRC2_I32,DS_MIN_SRC2_U32,DS_MAX_SRC2_U32,DS_AND_SRC2_B32,DS_OR_SRC2_B32,DS_XOR_SRC2_B32,DS_WRITE_SRC2_B32,DS_MIN_SRC2_F32,DS_MAX_SRC2_F32,DS_ADD_SRC2_F32,DS_ADD_SRC2_U64,DS_SUB_SRC2_U64,DS_RSUB_SRC2_U64,DS_INC_SRC2_U64,DS_DEC_SRC2_U64,DS_MIN_SRC2_I64,DS_MAX_SRC2_I64,DS_MIN_SRC2_U64,DS_MAX_SRC2_U64,DS_AND_SRC2_B64,DS_OR_SRC2_B64,DS_XOR_SRC2_B64,DS_WRITE_SRC2_B64,DS_MIN_SRC2_F64,DS_MAX_SRC2_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); break; case 152:case 154:case 156: //DS_GWS_SEMA_RELEASE_ALL,DS_GWS_SEMA_V,DS_GWS_SEMA_P -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 182:case 189:case 190: //DS_READ_ADDTID_B32,DS_CONSUME,DS_APPEND -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 191: //DS_ORDERED_COUNT -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 222: //DS_WRITE_B96 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,0),true,false); break; case 223: //DS_WRITE_B128 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0+3,0),true,false); break; case 254: //DS_READ_B96 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,3),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); break; } } @@ -152,114 +152,136 @@ layout_ENC_FLAT & layout = insn_layout.ENC_FLAT; switch(layout.OP){ case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: //FLAT_LOAD_UBYTE,FLAT_LOAD_SBYTE,FLAT_LOAD_USHORT,FLAT_LOAD_SSHORT,FLAT_LOAD_DWORD,FLAT_LOAD_UBYTE_D16,FLAT_LOAD_UBYTE_D16_HI,FLAT_LOAD_SBYTE_D16,FLAT_LOAD_SBYTE_D16_HI,FLAT_LOAD_SHORT_D16,FLAT_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 21: //FLAT_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 22: //FLAT_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,3),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 23: //FLAT_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 24:case 25:case 26:case 27:case 28: //FLAT_STORE_BYTE,FLAT_STORE_BYTE_D16_HI,FLAT_STORE_SHORT,FLAT_STORE_SHORT_D16_HI,FLAT_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 29: //FLAT_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 30: //FLAT_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 31: //FLAT_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76: //FLAT_ATOMIC_SWAP,FLAT_ATOMIC_ADD,FLAT_ATOMIC_SUB,FLAT_ATOMIC_SMIN,FLAT_ATOMIC_UMIN,FLAT_ATOMIC_SMAX,FLAT_ATOMIC_UMAX,FLAT_ATOMIC_AND,FLAT_ATOMIC_OR,FLAT_ATOMIC_XOR,FLAT_ATOMIC_INC,FLAT_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: //FLAT_ATOMIC_CMPSWAP,FLAT_ATOMIC_SWAP_X2,FLAT_ATOMIC_ADD_X2,FLAT_ATOMIC_SUB_X2,FLAT_ATOMIC_SMIN_X2,FLAT_ATOMIC_UMIN_X2,FLAT_ATOMIC_SMAX_X2,FLAT_ATOMIC_UMAX_X2,FLAT_ATOMIC_AND_X2,FLAT_ATOMIC_OR_X2,FLAT_ATOMIC_XOR_X2,FLAT_ATOMIC_INC_X2,FLAT_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 97: //FLAT_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; } } @@ -268,125 +290,169 @@ layout_ENC_FLAT_GLBL & layout = insn_layout.ENC_FLAT_GLBL; switch(layout.OP){ case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: //GLOBAL_LOAD_UBYTE,GLOBAL_LOAD_SBYTE,GLOBAL_LOAD_USHORT,GLOBAL_LOAD_SSHORT,GLOBAL_LOAD_DWORD,GLOBAL_LOAD_UBYTE_D16,GLOBAL_LOAD_UBYTE_D16_HI,GLOBAL_LOAD_SBYTE_D16,GLOBAL_LOAD_SBYTE_D16_HI,GLOBAL_LOAD_SHORT_D16,GLOBAL_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 21: //GLOBAL_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 22: //GLOBAL_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,3),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 23: //GLOBAL_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 24:case 25:case 26:case 27:case 28: //GLOBAL_STORE_BYTE,GLOBAL_STORE_BYTE_D16_HI,GLOBAL_STORE_SHORT,GLOBAL_STORE_SHORT_D16_HI,GLOBAL_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 29: //GLOBAL_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 30: //GLOBAL_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 31: //GLOBAL_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78: //GLOBAL_ATOMIC_SWAP,GLOBAL_ATOMIC_ADD,GLOBAL_ATOMIC_SUB,GLOBAL_ATOMIC_SMIN,GLOBAL_ATOMIC_UMIN,GLOBAL_ATOMIC_SMAX,GLOBAL_ATOMIC_UMAX,GLOBAL_ATOMIC_AND,GLOBAL_ATOMIC_OR,GLOBAL_ATOMIC_XOR,GLOBAL_ATOMIC_INC,GLOBAL_ATOMIC_DEC,GLOBAL_ATOMIC_ADD_F32,GLOBAL_ATOMIC_PK_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: //GLOBAL_ATOMIC_CMPSWAP,GLOBAL_ATOMIC_SWAP_X2,GLOBAL_ATOMIC_ADD_X2,GLOBAL_ATOMIC_SUB_X2,GLOBAL_ATOMIC_SMIN_X2,GLOBAL_ATOMIC_UMIN_X2,GLOBAL_ATOMIC_SMAX_X2,GLOBAL_ATOMIC_UMAX_X2,GLOBAL_ATOMIC_AND_X2,GLOBAL_ATOMIC_OR_X2,GLOBAL_ATOMIC_XOR_X2,GLOBAL_ATOMIC_INC_X2,GLOBAL_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 97: //GLOBAL_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); +} +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; } } @@ -395,79 +461,111 @@ layout_ENC_FLAT_SCRATCH & layout = insn_layout.ENC_FLAT_SCRATCH; switch(layout.OP){ case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: //SCRATCH_LOAD_UBYTE,SCRATCH_LOAD_SBYTE,SCRATCH_LOAD_USHORT,SCRATCH_LOAD_SSHORT,SCRATCH_LOAD_DWORD,SCRATCH_LOAD_UBYTE_D16,SCRATCH_LOAD_UBYTE_D16_HI,SCRATCH_LOAD_SBYTE_D16,SCRATCH_LOAD_SBYTE_D16_HI,SCRATCH_LOAD_SHORT_D16,SCRATCH_LOAD_SHORT_D16_HI -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 21: //SCRATCH_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 22: //SCRATCH_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,3),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 23: //SCRATCH_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 24:case 25:case 26:case 27:case 28: //SCRATCH_STORE_BYTE,SCRATCH_STORE_BYTE_D16_HI,SCRATCH_STORE_SHORT,SCRATCH_STORE_SHORT_D16_HI,SCRATCH_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 29: //SCRATCH_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 30: //SCRATCH_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 31: //SCRATCH_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0,64),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); +if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +} +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; } } @@ -476,314 +574,327 @@ layout_ENC_MIMG & layout = insn_layout.ENC_MIMG; switch(layout.OP){ case 0:case 1:case 2:case 3:case 4:case 5: //IMAGE_LOAD,IMAGE_LOAD_MIP,IMAGE_LOAD_PCK,IMAGE_LOAD_PCK_SGN,IMAGE_LOAD_MIP_PCK,IMAGE_LOAD_MIP_PCK_SGN -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 8:case 9:case 10:case 11: //IMAGE_STORE,IMAGE_STORE_MIP,IMAGE_STORE_PCK,IMAGE_STORE_MIP_PCK -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 14: //IMAGE_GET_RESINFO -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28: //IMAGE_ATOMIC_SWAP,IMAGE_ATOMIC_CMPSWAP,IMAGE_ATOMIC_ADD,IMAGE_ATOMIC_SUB,IMAGE_ATOMIC_SMIN,IMAGE_ATOMIC_UMIN,IMAGE_ATOMIC_SMAX,IMAGE_ATOMIC_UMAX,IMAGE_ATOMIC_AND,IMAGE_ATOMIC_OR,IMAGE_ATOMIC_XOR,IMAGE_ATOMIC_INC,IMAGE_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 32:case 39:case 64:case 66:case 71:case 74:case 75:case 96: //IMAGE_SAMPLE,IMAGE_SAMPLE_LZ,IMAGE_GATHER4,IMAGE_GATHER4H,IMAGE_GATHER4_LZ,IMAGE_GATHER4H_PCK,IMAGE_GATHER8H_PCK,IMAGE_GET_LOD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 33:case 36:case 37:case 40:case 47:case 48:case 55:case 65:case 68:case 69:case 72:case 79:case 80:case 87: //IMAGE_SAMPLE_CL,IMAGE_SAMPLE_L,IMAGE_SAMPLE_B,IMAGE_SAMPLE_C,IMAGE_SAMPLE_C_LZ,IMAGE_SAMPLE_O,IMAGE_SAMPLE_LZ_O,IMAGE_GATHER4_CL,IMAGE_GATHER4_L,IMAGE_GATHER4_B,IMAGE_GATHER4_C,IMAGE_GATHER4_C_LZ,IMAGE_GATHER4_O,IMAGE_GATHER4_LZ_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 34:case 104: //IMAGE_SAMPLE_D,IMAGE_SAMPLE_CD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,9),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 35:case 42:case 50:case 105:case 106:case 108: //IMAGE_SAMPLE_D_CL,IMAGE_SAMPLE_C_D,IMAGE_SAMPLE_D_O,IMAGE_SAMPLE_CD_CL,IMAGE_SAMPLE_C_CD,IMAGE_SAMPLE_CD_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,10),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 38:case 41:case 44:case 45:case 49:case 52:case 53:case 56:case 63:case 70:case 73:case 76:case 77:case 81:case 84:case 85:case 88:case 95: //IMAGE_SAMPLE_B_CL,IMAGE_SAMPLE_C_CL,IMAGE_SAMPLE_C_L,IMAGE_SAMPLE_C_B,IMAGE_SAMPLE_CL_O,IMAGE_SAMPLE_L_O,IMAGE_SAMPLE_B_O,IMAGE_SAMPLE_C_O,IMAGE_SAMPLE_C_LZ_O,IMAGE_GATHER4_B_CL,IMAGE_GATHER4_C_CL,IMAGE_GATHER4_C_L,IMAGE_GATHER4_C_B,IMAGE_GATHER4_CL_O,IMAGE_GATHER4_L_O,IMAGE_GATHER4_B_O,IMAGE_GATHER4_C_O,IMAGE_GATHER4_C_LZ_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,5),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 43:case 51:case 58:case 107:case 109:case 110: //IMAGE_SAMPLE_C_D_CL,IMAGE_SAMPLE_D_CL_O,IMAGE_SAMPLE_C_D_O,IMAGE_SAMPLE_C_CD_CL,IMAGE_SAMPLE_CD_CL_O,IMAGE_SAMPLE_C_CD_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,11),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 46:case 54:case 57:case 60:case 61:case 78:case 86:case 89:case 92:case 93: //IMAGE_SAMPLE_C_B_CL,IMAGE_SAMPLE_B_CL_O,IMAGE_SAMPLE_C_CL_O,IMAGE_SAMPLE_C_L_O,IMAGE_SAMPLE_C_B_O,IMAGE_GATHER4_C_B_CL,IMAGE_GATHER4_B_CL_O,IMAGE_GATHER4_C_CL_O,IMAGE_GATHER4_C_L_O,IMAGE_GATHER4_C_B_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,6),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 59:case 111: //IMAGE_SAMPLE_C_D_CL_O,IMAGE_SAMPLE_C_CD_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,12),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+8,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+9,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+10,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+11,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 62:case 94: //IMAGE_SAMPLE_C_B_CL_O,IMAGE_GATHER4_C_B_CL_O -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,7),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,8),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+4,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+5,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+6,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+7,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSAMP+3,0),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; } } @@ -792,103 +903,111 @@ layout_ENC_MTBUF & layout = insn_layout.ENC_MTBUF; switch(layout.OP){ case 0:case 8:case 9: //TBUFFER_LOAD_FORMAT_X,TBUFFER_LOAD_FORMAT_D16_X,TBUFFER_LOAD_FORMAT_D16_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 1:case 10:case 11: //TBUFFER_LOAD_FORMAT_XY,TBUFFER_LOAD_FORMAT_D16_XYZ,TBUFFER_LOAD_FORMAT_D16_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 2: //TBUFFER_LOAD_FORMAT_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,3),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 3: //TBUFFER_LOAD_FORMAT_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 4:case 12:case 13: //TBUFFER_STORE_FORMAT_X,TBUFFER_STORE_FORMAT_D16_X,TBUFFER_STORE_FORMAT_D16_XY -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 5:case 14:case 15: //TBUFFER_STORE_FORMAT_XY,TBUFFER_STORE_FORMAT_D16_XYZ,TBUFFER_STORE_FORMAT_D16_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 6: //TBUFFER_STORE_FORMAT_XYZ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 7: //TBUFFER_STORE_FORMAT_XYZW -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; } } @@ -897,151 +1016,164 @@ layout_ENC_MUBUF & layout = insn_layout.ENC_MUBUF; switch(layout.OP){ case 0:case 8:case 9:case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38: //BUFFER_LOAD_FORMAT_X,BUFFER_LOAD_FORMAT_D16_X,BUFFER_LOAD_FORMAT_D16_XY,BUFFER_LOAD_UBYTE,BUFFER_LOAD_SBYTE,BUFFER_LOAD_USHORT,BUFFER_LOAD_SSHORT,BUFFER_LOAD_DWORD,BUFFER_LOAD_UBYTE_D16,BUFFER_LOAD_UBYTE_D16_HI,BUFFER_LOAD_SBYTE_D16,BUFFER_LOAD_SBYTE_D16_HI,BUFFER_LOAD_SHORT_D16,BUFFER_LOAD_SHORT_D16_HI,BUFFER_LOAD_FORMAT_D16_HI_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 1:case 10:case 11:case 21: //BUFFER_LOAD_FORMAT_XY,BUFFER_LOAD_FORMAT_D16_XYZ,BUFFER_LOAD_FORMAT_D16_XYZW,BUFFER_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 2:case 22: //BUFFER_LOAD_FORMAT_XYZ,BUFFER_LOAD_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,3),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 3:case 23: //BUFFER_LOAD_FORMAT_XYZW,BUFFER_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 4:case 12:case 13:case 24:case 25:case 26:case 27:case 28:case 39: //BUFFER_STORE_FORMAT_X,BUFFER_STORE_FORMAT_D16_X,BUFFER_STORE_FORMAT_D16_XY,BUFFER_STORE_BYTE,BUFFER_STORE_BYTE_D16_HI,BUFFER_STORE_SHORT,BUFFER_STORE_SHORT_D16_HI,BUFFER_STORE_DWORD,BUFFER_STORE_FORMAT_D16_HI_X -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 5:case 14:case 15:case 29: //BUFFER_STORE_FORMAT_XY,BUFFER_STORE_FORMAT_D16_XYZ,BUFFER_STORE_FORMAT_D16_XYZW,BUFFER_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 6:case 30: //BUFFER_STORE_FORMAT_XYZ,BUFFER_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,3),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 7:case 31: //BUFFER_STORE_FORMAT_XYZW,BUFFER_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 61: //BUFFER_STORE_LDS_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 62:case 63: //BUFFER_WBINVL1,BUFFER_WBINVL1_VOL +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78: //BUFFER_ATOMIC_SWAP,BUFFER_ATOMIC_ADD,BUFFER_ATOMIC_SUB,BUFFER_ATOMIC_SMIN,BUFFER_ATOMIC_UMIN,BUFFER_ATOMIC_SMAX,BUFFER_ATOMIC_UMAX,BUFFER_ATOMIC_AND,BUFFER_ATOMIC_OR,BUFFER_ATOMIC_XOR,BUFFER_ATOMIC_INC,BUFFER_ATOMIC_DEC,BUFFER_ATOMIC_ADD_F32,BUFFER_ATOMIC_PK_ADD_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: //BUFFER_ATOMIC_CMPSWAP,BUFFER_ATOMIC_SWAP_X2,BUFFER_ATOMIC_ADD_X2,BUFFER_ATOMIC_SUB_X2,BUFFER_ATOMIC_SMIN_X2,BUFFER_ATOMIC_UMIN_X2,BUFFER_ATOMIC_SMAX_X2,BUFFER_ATOMIC_UMAX_X2,BUFFER_ATOMIC_AND_X2,BUFFER_ATOMIC_OR_X2,BUFFER_ATOMIC_XOR_X2,BUFFER_ATOMIC_INC_X2,BUFFER_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,2),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; case 97: //BUFFER_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+0,4),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+2,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDATA+3,0),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VADDR+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRSRC+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SOFFSET),true,false); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); break; } } @@ -1050,438 +1182,460 @@ layout_ENC_SMEM & layout = insn_layout.ENC_SMEM; switch(layout.OP){ case 0:case 5: //S_LOAD_DWORD,S_SCRATCH_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 1:case 6: //S_LOAD_DWORDX2,S_SCRATCH_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 2:case 7: //S_LOAD_DWORDX4,S_SCRATCH_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 3: //S_LOAD_DWORDX8 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,8),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 4: //S_LOAD_DWORDX16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 8: //S_BUFFER_LOAD_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 9: //S_BUFFER_LOAD_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 10: //S_BUFFER_LOAD_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 11: //S_BUFFER_LOAD_DWORDX8 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,8),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 12: //S_BUFFER_LOAD_DWORDX16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,16),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+4,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+5,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+6,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+7,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+8,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+9,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+10,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+11,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+12,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+13,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+14,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+15,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 16:case 21: //S_STORE_DWORD,S_SCRATCH_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 17:case 22: //S_STORE_DWORDX2,S_SCRATCH_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 18:case 23: //S_STORE_DWORDX4,S_SCRATCH_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 24: //S_BUFFER_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 25: //S_BUFFER_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 26: //S_BUFFER_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 32:case 33:case 34:case 35: //S_DCACHE_INV,S_DCACHE_WB,S_DCACHE_INV_VOL,S_DCACHE_WB_VOL +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 36:case 37: //S_MEMTIME,S_MEMREALTIME -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),false,true); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 38: //S_ATC_PROBE insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 39: //S_ATC_PROBE_BUFFER insn_in_progress->appendOperand(decodeOPR_SIMM8(layout.SDATA),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 40:case 41: //S_DCACHE_DISCARD,S_DCACHE_DISCARD_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76: //S_BUFFER_ATOMIC_SWAP,S_BUFFER_ATOMIC_ADD,S_BUFFER_ATOMIC_SUB,S_BUFFER_ATOMIC_SMIN,S_BUFFER_ATOMIC_UMIN,S_BUFFER_ATOMIC_SMAX,S_BUFFER_ATOMIC_UMAX,S_BUFFER_ATOMIC_AND,S_BUFFER_ATOMIC_OR,S_BUFFER_ATOMIC_XOR,S_BUFFER_ATOMIC_INC,S_BUFFER_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108: //S_BUFFER_ATOMIC_CMPSWAP,S_BUFFER_ATOMIC_SWAP_X2,S_BUFFER_ATOMIC_ADD_X2,S_BUFFER_ATOMIC_SUB_X2,S_BUFFER_ATOMIC_SMIN_X2,S_BUFFER_ATOMIC_UMIN_X2,S_BUFFER_ATOMIC_SMAX_X2,S_BUFFER_ATOMIC_UMAX_X2,S_BUFFER_ATOMIC_AND_X2,S_BUFFER_ATOMIC_OR_X2,S_BUFFER_ATOMIC_XOR_X2,S_BUFFER_ATOMIC_INC_X2,S_BUFFER_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 97: //S_BUFFER_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,4),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+3,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 128:case 130:case 131:case 132:case 133:case 134:case 135:case 136:case 137:case 138:case 139:case 140: //S_ATOMIC_SWAP,S_ATOMIC_ADD,S_ATOMIC_SUB,S_ATOMIC_SMIN,S_ATOMIC_UMIN,S_ATOMIC_SMAX,S_ATOMIC_UMAX,S_ATOMIC_AND,S_ATOMIC_OR,S_ATOMIC_XOR,S_ATOMIC_INC,S_ATOMIC_DEC -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 129:case 160:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172: //S_ATOMIC_CMPSWAP,S_ATOMIC_SWAP_X2,S_ATOMIC_ADD_X2,S_ATOMIC_SUB_X2,S_ATOMIC_SMIN_X2,S_ATOMIC_UMIN_X2,S_ATOMIC_SMAX_X2,S_ATOMIC_UMAX_X2,S_ATOMIC_AND_X2,S_ATOMIC_OR_X2,S_ATOMIC_XOR_X2,S_ATOMIC_INC_X2,S_ATOMIC_DEC_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,2),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; case 161: //S_ATOMIC_CMPSWAP_X2 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+0,4),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+2,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDATA+3,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SBASE+1,0),true,false); processOPR_SMEM_OFFSET(layout); +insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; } } void InstructionDecoder_amdgpu_gfx908::finalizeENC_SOP1Operands(){ layout_ENC_SOP1 & layout = insn_layout.ENC_SOP1; switch(layout.OP){ -case 0:case 8:case 14:case 16:case 18:case 20: -//S_MOV_B32,S_BREV_B32,S_FF0_I32_B32,S_FF1_I32_B32,S_FLBIT_I32_B32,S_FLBIT_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +case 0:case 8:case 14:case 16:case 18:case 20:case 22:case 23: +//S_MOV_B32,S_BREV_B32,S_FF0_I32_B32,S_FF1_I32_B32,S_FLBIT_I32_B32,S_FLBIT_I32,S_SEXT_I32_I8,S_SEXT_I32_I16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); break; case 1:case 9: //S_MOV_B64,S_BREV_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); break; case 2: //S_CMOV_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 3: //S_CMOV_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 4:case 6:case 10:case 12:case 40:case 48: //S_NOT_B32,S_WQM_B32,S_BCNT0_I32_B32,S_BCNT1_I32_B32,S_QUADMASK_B32,S_ABS_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 5:case 7:case 41: //S_NOT_B64,S_WQM_B64,S_QUADMASK_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 11:case 13: //S_BCNT0_I32_B64,S_BCNT1_I32_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 15:case 17:case 19:case 21: //S_FF0_I32_B64,S_FF1_I32_B64,S_FLBIT_I32_B64,S_FLBIT_I32_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -break; -case 22:case 23: -//S_SEXT_I32_I8,S_SEXT_I32_I16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); break; case 24:case 26: //S_BITSET0_B32,S_BITSET1_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); break; case 25:case 27: //S_BITSET0_B64,S_BITSET1_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); break; case 28: //S_GETPC_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),true,false); break; case 29: //S_SETPC_B64 setBranch(); setModifyPC(); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); break; case 30: //S_SWAPPC_B64 setBranch(); setModifyPC(); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),true,false); break; case 31: //S_RFE_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); break; case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 51:case 52:case 53:case 54: //S_AND_SAVEEXEC_B64,S_OR_SAVEEXEC_B64,S_XOR_SAVEEXEC_B64,S_ANDN2_SAVEEXEC_B64,S_ORN2_SAVEEXEC_B64,S_NAND_SAVEEXEC_B64,S_NOR_SAVEEXEC_B64,S_XNOR_SAVEEXEC_B64,S_ANDN1_SAVEEXEC_B64,S_ORN1_SAVEEXEC_B64,S_ANDN1_WREXEC_B64,S_ANDN2_WREXEC_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false); break; case 42: //S_MOVRELS_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 43: //S_MOVRELS_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 44: //S_MOVRELD_B32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 45: //S_MOVRELD_B64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 46: //S_CBRANCH_JOIN -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); break; case 50: //S_SET_GPR_IDX_IDX -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 55: //S_BITREPLICATE_B64_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); break; } } @@ -1490,94 +1644,82 @@ layout_ENC_SOP2 & layout = insn_layout.ENC_SOP2; switch(layout.OP){ case 0:case 1:case 2:case 3:case 6:case 7:case 8:case 9:case 12:case 14:case 16:case 18:case 20:case 22:case 24:case 26:case 28:case 30:case 32:case 37:case 38:case 42:case 46:case 47:case 48:case 49: //S_ADD_U32,S_SUB_U32,S_ADD_I32,S_SUB_I32,S_MIN_I32,S_MIN_U32,S_MAX_I32,S_MAX_U32,S_AND_B32,S_OR_B32,S_XOR_B32,S_ANDN2_B32,S_ORN2_B32,S_NAND_B32,S_NOR_B32,S_XNOR_B32,S_LSHL_B32,S_LSHR_B32,S_ASHR_I32,S_BFE_U32,S_BFE_I32,S_ABSDIFF_I32,S_LSHL1_ADD_U32,S_LSHL2_ADD_U32,S_LSHL3_ADD_U32,S_LSHL4_ADD_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 4:case 5: //S_ADDC_U32,S_SUBB_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 10: //S_CSELECT_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 11: //S_CSELECT_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 13:case 15:case 17:case 19:case 21:case 23:case 25:case 27: //S_AND_B64,S_OR_B64,S_XOR_B64,S_ANDN2_B64,S_ORN2_B64,S_NAND_B64,S_NOR_B64,S_XNOR_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 29:case 31:case 33:case 39:case 40: //S_LSHL_B64,S_LSHR_B64,S_ASHR_I64,S_BFE_U64,S_BFE_I64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); -break; -case 34:case 36:case 44:case 45:case 52: -//S_BFM_B32,S_MUL_I32,S_MUL_HI_U32,S_MUL_HI_I32,S_PACK_HH_B32_B16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +break; +case 34:case 36:case 44:case 45:case 50:case 51:case 52: +//S_BFM_B32,S_MUL_I32,S_MUL_HI_U32,S_MUL_HI_I32,S_PACK_LL_B32_B16,S_PACK_LH_B32_B16,S_PACK_HH_B32_B16 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); break; case 35: //S_BFM_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); break; case 41: //S_CBRANCH_G_FORK -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); break; case 43: //S_RFE_RESTORE_B64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -break; -case 50: -//S_PACK_LL_B32_B16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,16),true,false); -break; -case 51: -//S_PACK_LH_B32_B16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); break; } } @@ -1586,36 +1728,36 @@ layout_ENC_SOPC & layout = insn_layout.ENC_SOPC; switch(layout.OP){ case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13: //S_CMP_EQ_I32,S_CMP_LG_I32,S_CMP_GT_I32,S_CMP_GE_I32,S_CMP_LT_I32,S_CMP_LE_I32,S_CMP_EQ_U32,S_CMP_LG_U32,S_CMP_GT_U32,S_CMP_GE_U32,S_CMP_LT_U32,S_CMP_LE_U32,S_BITCMP0_B32,S_BITCMP1_B32 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 14:case 15: //S_BITCMP0_B64,S_BITCMP1_B64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 16: //S_SETVSKIP -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); break; case 17: //S_SET_GPR_IDX_ON -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SIMM4(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 18:case 19: //S_CMP_EQ_U64,S_CMP_LG_U64 -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; } } @@ -1624,50 +1766,50 @@ layout_ENC_SOPK & layout = insn_layout.ENC_SOPK; switch(layout.OP){ case 0:case 17: //S_MOVK_I32,S_GETREG_B32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); break; case 1: //S_CMOVK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13: //S_CMPK_EQ_I32,S_CMPK_LG_I32,S_CMPK_GT_I32,S_CMPK_GE_I32,S_CMPK_LT_I32,S_CMPK_LE_I32,S_CMPK_EQ_U32,S_CMPK_LG_U32,S_CMPK_GT_U32,S_CMPK_GE_U32,S_CMPK_LT_U32,S_CMPK_LE_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,false); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 14: //S_ADDK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); break; case 15: //S_MULK_I32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); break; case 16: //S_CBRANCH_I_FORK -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); break; case 18: //S_SETREG_B32 insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,false); break; case 21: //S_CALL_B64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,32),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),true,false); break; } } @@ -1703,7 +1845,7 @@ setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253,1),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); break; case 6:case 7: //S_CBRANCH_VCCZ,S_CBRANCH_VCCNZ @@ -1711,7 +1853,7 @@ setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false); break; case 8:case 9: //S_CBRANCH_EXECZ,S_CBRANCH_EXECNZ @@ -1719,20 +1861,35 @@ setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false); break; case 12: //S_WAITCNT -insn_in_progress->appendOperand(decodeOPR_WAITCNT(layout.SIMM16),true,false); -break; -case 16:case 17: +{ +uint32_t vmcnt = ((0x3& (layout.SIMM16 >>14))<<4) | (layout.SIMM16 & 0xf); +uint32_t expcnt ((layout.SIMM16>>4) & 0x7); +uint32_t lgkmcnt ((layout.SIMM16>>8) & 0xf); +if (vmcnt != 0x3f) { + insn_in_progress->appendOperand( makeRegisterExpression(amdgpu_gfx908::vmcnt, 0 ,32),false,true); + insn_in_progress->appendOperand( Immediate::makeImmediate(Result(u32,vmcnt)),false,false); +} +if (expcnt != 0x7) { + insn_in_progress->appendOperand( makeRegisterExpression(amdgpu_gfx908::expcnt, 0 ,32),false,true); + insn_in_progress->appendOperand( Immediate::makeImmediate(Result(u32,expcnt)),false,false); +} +if (lgkmcnt != 0xf) { + insn_in_progress->appendOperand( makeRegisterExpression(amdgpu_gfx908::lgkmcnt, 0 ,32),false,true); + insn_in_progress->appendOperand( Immediate::makeImmediate(Result(u32,lgkmcnt)),false,false); +} +} +break;case 16:case 17: //S_SENDMSG,S_SENDMSGHALT insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 22: //S_TTRACEDATA -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 23:case 24:case 25:case 26: //S_CBRANCH_CDBGSYS,S_CBRANCH_CDBGUSER,S_CBRANCH_CDBGSYS_OR_USER,S_CBRANCH_CDBGSYS_AND_USER @@ -1741,8 +1898,8 @@ break; case 29: //S_SET_GPR_IDX_MODE insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; } } @@ -1751,24 +1908,24 @@ layout_ENC_VINTRP & layout = insn_layout.ENC_VINTRP; switch(layout.OP){ case 0: //V_INTERP_P1_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 1: //V_INTERP_P2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 2: //V_INTERP_MOV_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_PARAM(layout.VSRC,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_PARAM(layout.VSRC),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; } } @@ -1777,318 +1934,250 @@ layout_ENC_VOP3 & layout = insn_layout.ENC_VOP3; switch(layout.OP){ case 624: //V_INTERP_P1_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 625: //V_INTERP_P2_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 626: //V_INTERP_MOV_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_PARAM(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_PARAM(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); break; case 320:case 373: //V_NOP,V_CLREXCP break; -case 321:case 325:case 326:case 327:case 328:case 332:case 333:case 334:case 337:case 338:case 339:case 340:case 347:case 348:case 349:case 350:case 351:case 352:case 353:case 354:case 355:case 356:case 359:case 361:case 362:case 363:case 364:case 365:case 366:case 367:case 371:case 372:case 375:case 395:case 396: -//V_MOV_B32,V_CVT_F32_I32,V_CVT_F32_U32,V_CVT_U32_F32,V_CVT_I32_F32,V_CVT_RPI_I32_F32,V_CVT_FLR_I32_F32,V_CVT_OFF_F32_I4,V_CVT_F32_UBYTE0,V_CVT_F32_UBYTE1,V_CVT_F32_UBYTE2,V_CVT_F32_UBYTE3,V_FRACT_F32,V_TRUNC_F32,V_CEIL_F32,V_RNDNE_F32,V_FLOOR_F32,V_EXP_F32,V_LOG_F32,V_RCP_F32,V_RCP_IFLAG_F32,V_RSQ_F32,V_SQRT_F32,V_SIN_F32,V_COS_F32,V_NOT_B32,V_BFREV_B32,V_FFBH_U32,V_FFBL_B32,V_FFBH_I32,V_FREXP_EXP_I32_F32,V_FREXP_MANT_F32,V_SCREEN_PARTITION_4SE_B32,V_EXP_LEGACY_F32,V_LOG_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +case 321:case 325:case 326:case 327:case 328:case 330:case 331:case 332:case 333:case 334:case 337:case 338:case 339:case 340:case 347:case 348:case 349:case 350:case 351:case 352:case 353:case 354:case 355:case 356:case 359:case 361:case 362:case 363:case 364:case 365:case 366:case 367:case 371:case 372:case 375:case 377:case 378:case 379:case 380:case 381:case 382:case 383:case 384:case 385:case 386:case 387:case 388:case 389:case 390:case 391:case 392:case 393:case 394:case 395:case 396:case 397:case 398:case 399: +//V_MOV_B32,V_CVT_F32_I32,V_CVT_F32_U32,V_CVT_U32_F32,V_CVT_I32_F32,V_CVT_F16_F32,V_CVT_F32_F16,V_CVT_RPI_I32_F32,V_CVT_FLR_I32_F32,V_CVT_OFF_F32_I4,V_CVT_F32_UBYTE0,V_CVT_F32_UBYTE1,V_CVT_F32_UBYTE2,V_CVT_F32_UBYTE3,V_FRACT_F32,V_TRUNC_F32,V_CEIL_F32,V_RNDNE_F32,V_FLOOR_F32,V_EXP_F32,V_LOG_F32,V_RCP_F32,V_RCP_IFLAG_F32,V_RSQ_F32,V_SQRT_F32,V_SIN_F32,V_COS_F32,V_NOT_B32,V_BFREV_B32,V_FFBH_U32,V_FFBL_B32,V_FFBH_I32,V_FREXP_EXP_I32_F32,V_FREXP_MANT_F32,V_SCREEN_PARTITION_4SE_B32,V_CVT_F16_U16,V_CVT_F16_I16,V_CVT_U16_F16,V_CVT_I16_F16,V_RCP_F16,V_SQRT_F16,V_RSQ_F16,V_LOG_F16,V_EXP_F16,V_FREXP_MANT_F16,V_FREXP_EXP_I16_F16,V_FLOOR_F16,V_CEIL_F16,V_TRUNC_F16,V_RNDNE_F16,V_FRACT_F16,V_SIN_F16,V_COS_F16,V_EXP_LEGACY_F32,V_LOG_LEGACY_F32,V_CVT_NORM_I16_F16,V_CVT_NORM_U16_F16,V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); break; case 322: //V_READFIRSTLANE_B32 -insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0),true,false); break; case 323:case 335:case 341:case 368: //V_CVT_I32_F64,V_CVT_F32_F64,V_CVT_U32_F64,V_FREXP_EXP_I32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); break; case 324:case 336:case 342: //V_CVT_F64_I32,V_CVT_F64_F32,V_CVT_F64_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 330:case 399: -//V_CVT_F16_F32,V_SAT_PK_U8_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -break; -case 331: -//V_CVT_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); break; case 343:case 344:case 345:case 346:case 357:case 358:case 360:case 369:case 370: //V_TRUNC_F64,V_CEIL_F64,V_RNDNE_F64,V_FLOOR_F64,V_RCP_F64,V_RSQ_F64,V_SQRT_F64,V_FREXP_MANT_F64,V_FRACT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -break; -case 377:case 378:case 379:case 380:case 381:case 382:case 383:case 384:case 385:case 386:case 387:case 388:case 389:case 390:case 391:case 392:case 393:case 394:case 397:case 398: -//V_CVT_F16_U16,V_CVT_F16_I16,V_CVT_U16_F16,V_CVT_I16_F16,V_RCP_F16,V_SQRT_F16,V_RSQ_F16,V_LOG_F16,V_EXP_F16,V_FREXP_MANT_F16,V_FREXP_EXP_I16_F16,V_FLOOR_F16,V_CEIL_F16,V_TRUNC_F16,V_RNDNE_F16,V_FRACT_F16,V_SIN_F16,V_COS_F16,V_CVT_NORM_I16_F16,V_CVT_NORM_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); break; case 401: //V_SWAP_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0),true,true); break; case 256: //V_CNDMASK_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); -break; -case 257:case 258:case 259:case 260:case 261:case 262:case 263:case 264:case 265:case 266:case 267:case 268:case 269:case 270:case 271:case 275:case 276:case 277:case 308:case 309:case 317:case 645:case 646:case 647:case 648:case 651:case 652:case 653:case 659:case 660:case 661:case 662:case 663:case 664:case 668:case 669: -//V_ADD_F32,V_SUB_F32,V_SUBREV_F32,V_MUL_LEGACY_F32,V_MUL_F32,V_MUL_I32_I24,V_MUL_HI_I32_I24,V_MUL_U32_U24,V_MUL_HI_U32_U24,V_MIN_F32,V_MAX_F32,V_MIN_I32,V_MAX_I32,V_MIN_U32,V_MAX_U32,V_AND_B32,V_OR_B32,V_XOR_B32,V_ADD_U32,V_SUB_U32,V_XNOR_B32,V_MUL_LO_U32,V_MUL_HI_U32,V_MUL_HI_I32,V_LDEXP_F32,V_BCNT_U32_B32,V_MBCNT_LO_U32_B32,V_MBCNT_HI_U32_B32,V_BFM_B32,V_CVT_PKNORM_I16_F32,V_CVT_PKNORM_U16_F32,V_CVT_PKRTZ_F16_F32,V_CVT_PK_U16_U32,V_CVT_PK_I16_I32,V_ADD_I32,V_SUB_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 272:case 273:case 274:case 310: -//V_LSHRREV_B32,V_ASHRREV_I32,V_LSHLREV_B32,V_SUBREV_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 278:case 311:case 312:case 313:case 314:case 315:case 316:case 496: -//V_MAC_F32,V_DOT2C_F32_F16,V_DOT2C_I32_I16,V_DOT4C_I32_I8,V_DOT8C_I32_I4,V_FMAC_F32,V_PK_FMAC_F16,V_CVT_PKACCUM_U8_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 287:case 288:case 290:case 294:case 295:case 297:case 301:case 302:case 303:case 304:case 305:case 306:case 307:case 670:case 671: -//V_ADD_F16,V_SUB_F16,V_MUL_F16,V_ADD_U16,V_SUB_U16,V_MUL_LO_U16,V_MAX_F16,V_MIN_F16,V_MAX_U16,V_MAX_I16,V_MIN_U16,V_MIN_I16,V_LDEXP_F16,V_ADD_I16,V_SUB_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 289:case 296:case 298:case 299:case 300: -//V_SUBREV_F16,V_SUBREV_U16,V_LSHLREV_B16,V_LSHRREV_B16,V_ASHRREV_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 291: -//V_MAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 448:case 449:case 450:case 451:case 452:case 453:case 454:case 455:case 456:case 457:case 458:case 459:case 461:case 462:case 463:case 464:case 465:case 466:case 467:case 468:case 469:case 470:case 471:case 472:case 473:case 474:case 475:case 476:case 477:case 478:case 484:case 493:case 499:case 509:case 510:case 511:case 512:case 513:case 514: -//V_MAD_LEGACY_F32,V_MAD_F32,V_MAD_I32_I24,V_MAD_U32_U24,V_CUBEID_F32,V_CUBESC_F32,V_CUBETC_F32,V_CUBEMA_F32,V_BFE_U32,V_BFE_I32,V_BFI_B32,V_FMA_F32,V_LERP_U8,V_ALIGNBIT_B32,V_ALIGNBYTE_B32,V_MIN3_F32,V_MIN3_I32,V_MIN3_U32,V_MAX3_F32,V_MAX3_I32,V_MAX3_U32,V_MED3_F32,V_MED3_I32,V_MED3_U32,V_SAD_U8,V_SAD_HI_U8,V_SAD_U16,V_SAD_U32,V_CVT_PK_U8_F32,V_DIV_FIXUP_F32,V_MSAD_U8,V_PERM_B32,V_XAD_U32,V_LSHL_ADD_U32,V_ADD_LSHL_U32,V_ADD3_U32,V_LSHL_OR_B32,V_AND_OR_B32,V_OR3_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,0),true,false); +break; +case 257:case 258:case 259:case 260:case 261:case 262:case 263:case 264:case 265:case 266:case 267:case 268:case 269:case 270:case 271:case 275:case 276:case 277:case 287:case 288:case 290:case 294:case 295:case 297:case 301:case 302:case 303:case 304:case 305:case 306:case 307:case 308:case 309:case 317:case 645:case 646:case 647:case 648:case 651:case 652:case 653:case 659:case 660:case 661:case 662:case 663:case 664:case 665:case 666:case 668:case 669:case 670:case 671:case 672: +//V_ADD_F32,V_SUB_F32,V_SUBREV_F32,V_MUL_LEGACY_F32,V_MUL_F32,V_MUL_I32_I24,V_MUL_HI_I32_I24,V_MUL_U32_U24,V_MUL_HI_U32_U24,V_MIN_F32,V_MAX_F32,V_MIN_I32,V_MAX_I32,V_MIN_U32,V_MAX_U32,V_AND_B32,V_OR_B32,V_XOR_B32,V_ADD_F16,V_SUB_F16,V_MUL_F16,V_ADD_U16,V_SUB_U16,V_MUL_LO_U16,V_MAX_F16,V_MIN_F16,V_MAX_U16,V_MAX_I16,V_MIN_U16,V_MIN_I16,V_LDEXP_F16,V_ADD_U32,V_SUB_U32,V_XNOR_B32,V_MUL_LO_U32,V_MUL_HI_U32,V_MUL_HI_I32,V_LDEXP_F32,V_BCNT_U32_B32,V_MBCNT_LO_U32_B32,V_MBCNT_HI_U32_B32,V_BFM_B32,V_CVT_PKNORM_I16_F32,V_CVT_PKNORM_U16_F32,V_CVT_PKRTZ_F16_F32,V_CVT_PK_U16_U32,V_CVT_PK_I16_I32,V_CVT_PKNORM_I16_F16,V_CVT_PKNORM_U16_F16,V_ADD_I32,V_SUB_I32,V_ADD_I16,V_SUB_I16,V_PACK_B32_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +break; +case 272:case 273:case 274:case 289:case 296:case 298:case 299:case 300:case 310: +//V_LSHRREV_B32,V_ASHRREV_I32,V_LSHLREV_B32,V_SUBREV_F16,V_SUBREV_U16,V_LSHLREV_B16,V_LSHRREV_B16,V_ASHRREV_I16,V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +break; +case 278:case 291:case 311:case 312:case 313:case 314:case 315:case 316:case 496: +//V_MAC_F32,V_MAC_F16,V_DOT2C_F32_F16,V_DOT2C_I32_I16,V_DOT4C_I32_I8,V_DOT8C_I32_I4,V_FMAC_F32,V_PK_FMAC_F16,V_CVT_PKACCUM_U8_F32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +break; +case 448:case 449:case 450:case 451:case 452:case 453:case 454:case 455:case 456:case 457:case 458:case 459:case 461:case 462:case 463:case 464:case 465:case 466:case 467:case 468:case 469:case 470:case 471:case 472:case 473:case 474:case 475:case 476:case 477:case 478:case 484:case 490:case 491:case 492:case 493:case 494:case 495:case 497:case 498:case 499:case 500:case 501:case 502:case 503:case 504:case 505:case 506:case 507:case 508:case 509:case 510:case 511:case 512:case 513:case 514:case 515:case 516:case 517:case 518:case 519: +//V_MAD_LEGACY_F32,V_MAD_F32,V_MAD_I32_I24,V_MAD_U32_U24,V_CUBEID_F32,V_CUBESC_F32,V_CUBETC_F32,V_CUBEMA_F32,V_BFE_U32,V_BFE_I32,V_BFI_B32,V_FMA_F32,V_LERP_U8,V_ALIGNBIT_B32,V_ALIGNBYTE_B32,V_MIN3_F32,V_MIN3_I32,V_MIN3_U32,V_MAX3_F32,V_MAX3_I32,V_MAX3_U32,V_MED3_F32,V_MED3_I32,V_MED3_U32,V_SAD_U8,V_SAD_HI_U8,V_SAD_U16,V_SAD_U32,V_CVT_PK_U8_F32,V_DIV_FIXUP_F32,V_MSAD_U8,V_MAD_LEGACY_F16,V_MAD_LEGACY_U16,V_MAD_LEGACY_I16,V_PERM_B32,V_FMA_LEGACY_F16,V_DIV_FIXUP_LEGACY_F16,V_MAD_U32_U16,V_MAD_I32_I16,V_XAD_U32,V_MIN3_F16,V_MIN3_I16,V_MIN3_U16,V_MAX3_F16,V_MAX3_I16,V_MAX3_U16,V_MED3_F16,V_MED3_I16,V_MED3_U16,V_LSHL_ADD_U32,V_ADD_LSHL_U32,V_ADD3_U32,V_LSHL_OR_B32,V_AND_OR_B32,V_OR3_B32,V_MAD_F16,V_MAD_U16,V_MAD_I16,V_FMA_F16,V_DIV_FIXUP_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2),true,false); break; case 460:case 479: //V_FMA_F64,V_DIV_FIXUP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,0),true,false); break; case 482: //V_DIV_FMAS_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false); break; case 483: //V_DIV_FMAS_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false); break; case 485:case 486: //V_QSAD_PK_U16_U8,V_MQSAD_PK_U16_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,0),true,false); break; case 487: //V_MQSAD_U32_U8 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+2,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+3,32),true,false); -break; -case 490:case 491:case 492:case 494:case 495:case 500:case 501:case 502:case 503:case 504:case 505:case 506:case 507:case 508:case 515:case 516:case 517:case 518:case 519: -//V_MAD_LEGACY_F16,V_MAD_LEGACY_U16,V_MAD_LEGACY_I16,V_FMA_LEGACY_F16,V_DIV_FIXUP_LEGACY_F16,V_MIN3_F16,V_MIN3_I16,V_MIN3_U16,V_MAX3_F16,V_MAX3_I16,V_MAX3_U16,V_MED3_F16,V_MED3_I16,V_MED3_U16,V_MAD_F16,V_MAD_U16,V_MAD_I16,V_FMA_F16,V_DIV_FIXUP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); -break; -case 497:case 498: -//V_MAD_U32_U16,V_MAD_I32_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+0,4),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+2,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2+3,0),true,false); break; case 628: //V_INTERP_P1LL_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); break; case 629:case 630:case 631: //V_INTERP_P1LV_F16,V_INTERP_P2_LEGACY_F16,V_INTERP_P2_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC2),true,false); break; case 640:case 641:case 642:case 643: //V_ADD_F64,V_MUL_F64,V_MIN_F64,V_MAX_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); break; case 644:case 658: //V_LDEXP_F64,V_TRIG_PREOP_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); break; case 649: //V_READLANE_B32 -insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1),true,false); break; case 650: //V_WRITELANE_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_LANESEL(layout.SRC1),true,false); break; case 655:case 656:case 657: //V_LSHLREV_B64,V_LSHRREV_B64,V_ASHRREV_I64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -break; -case 665:case 666:case 672: -//V_CVT_PKNORM_I16_F16,V_CVT_PKNORM_U16_F16,V_PACK_B32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 16:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: -//V_CMP_CLASS_F32,V_CMP_F_F32,V_CMP_LT_F32,V_CMP_EQ_F32,V_CMP_LE_F32,V_CMP_GT_F32,V_CMP_LG_F32,V_CMP_GE_F32,V_CMP_O_F32,V_CMP_U_F32,V_CMP_NGE_F32,V_CMP_NLG_F32,V_CMP_NGT_F32,V_CMP_NLE_F32,V_CMP_NEQ_F32,V_CMP_NLT_F32,V_CMP_TRU_F32,V_CMP_F_I32,V_CMP_LT_I32,V_CMP_EQ_I32,V_CMP_LE_I32,V_CMP_GT_I32,V_CMP_NE_I32,V_CMP_GE_I32,V_CMP_T_I32,V_CMP_F_U32,V_CMP_LT_U32,V_CMP_EQ_U32,V_CMP_LE_U32,V_CMP_GT_U32,V_CMP_NE_U32,V_CMP_GE_U32,V_CMP_T_U32 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 17:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:case 223: -//V_CMPX_CLASS_F32,V_CMPX_F_F32,V_CMPX_LT_F32,V_CMPX_EQ_F32,V_CMPX_LE_F32,V_CMPX_GT_F32,V_CMPX_LG_F32,V_CMPX_GE_F32,V_CMPX_O_F32,V_CMPX_U_F32,V_CMPX_NGE_F32,V_CMPX_NLG_F32,V_CMPX_NGT_F32,V_CMPX_NLE_F32,V_CMPX_NEQ_F32,V_CMPX_NLT_F32,V_CMPX_TRU_F32,V_CMPX_F_I32,V_CMPX_LT_I32,V_CMPX_EQ_I32,V_CMPX_LE_I32,V_CMPX_GT_I32,V_CMPX_NE_I32,V_CMPX_GE_I32,V_CMPX_T_I32,V_CMPX_F_U32,V_CMPX_LT_U32,V_CMPX_EQ_U32,V_CMPX_LE_U32,V_CMPX_GT_U32,V_CMPX_NE_U32,V_CMPX_GE_U32,V_CMPX_T_U32 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); +break; +case 16:case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: +//V_CMP_CLASS_F32,V_CMP_CLASS_F16,V_CMP_F_F16,V_CMP_LT_F16,V_CMP_EQ_F16,V_CMP_LE_F16,V_CMP_GT_F16,V_CMP_LG_F16,V_CMP_GE_F16,V_CMP_O_F16,V_CMP_U_F16,V_CMP_NGE_F16,V_CMP_NLG_F16,V_CMP_NGT_F16,V_CMP_NLE_F16,V_CMP_NEQ_F16,V_CMP_NLT_F16,V_CMP_TRU_F16,V_CMP_F_F32,V_CMP_LT_F32,V_CMP_EQ_F32,V_CMP_LE_F32,V_CMP_GT_F32,V_CMP_LG_F32,V_CMP_GE_F32,V_CMP_O_F32,V_CMP_U_F32,V_CMP_NGE_F32,V_CMP_NLG_F32,V_CMP_NGT_F32,V_CMP_NLE_F32,V_CMP_NEQ_F32,V_CMP_NLT_F32,V_CMP_TRU_F32,V_CMP_F_I16,V_CMP_LT_I16,V_CMP_EQ_I16,V_CMP_LE_I16,V_CMP_GT_I16,V_CMP_NE_I16,V_CMP_GE_I16,V_CMP_T_I16,V_CMP_F_U16,V_CMP_LT_U16,V_CMP_EQ_U16,V_CMP_LE_U16,V_CMP_GT_U16,V_CMP_NE_U16,V_CMP_GE_U16,V_CMP_T_U16,V_CMP_F_I32,V_CMP_LT_I32,V_CMP_EQ_I32,V_CMP_LE_I32,V_CMP_GT_I32,V_CMP_NE_I32,V_CMP_GE_I32,V_CMP_T_I32,V_CMP_F_U32,V_CMP_LT_U32,V_CMP_EQ_U32,V_CMP_LE_U32,V_CMP_GT_U32,V_CMP_NE_U32,V_CMP_GE_U32,V_CMP_T_U32 +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +break; +case 17:case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:case 223: +//V_CMPX_CLASS_F32,V_CMPX_CLASS_F16,V_CMPX_F_F16,V_CMPX_LT_F16,V_CMPX_EQ_F16,V_CMPX_LE_F16,V_CMPX_GT_F16,V_CMPX_LG_F16,V_CMPX_GE_F16,V_CMPX_O_F16,V_CMPX_U_F16,V_CMPX_NGE_F16,V_CMPX_NLG_F16,V_CMPX_NGT_F16,V_CMPX_NLE_F16,V_CMPX_NEQ_F16,V_CMPX_NLT_F16,V_CMPX_TRU_F16,V_CMPX_F_F32,V_CMPX_LT_F32,V_CMPX_EQ_F32,V_CMPX_LE_F32,V_CMPX_GT_F32,V_CMPX_LG_F32,V_CMPX_GE_F32,V_CMPX_O_F32,V_CMPX_U_F32,V_CMPX_NGE_F32,V_CMPX_NLG_F32,V_CMPX_NGT_F32,V_CMPX_NLE_F32,V_CMPX_NEQ_F32,V_CMPX_NLT_F32,V_CMPX_TRU_F32,V_CMPX_F_I16,V_CMPX_LT_I16,V_CMPX_EQ_I16,V_CMPX_LE_I16,V_CMPX_GT_I16,V_CMPX_NE_I16,V_CMPX_GE_I16,V_CMPX_T_I16,V_CMPX_F_U16,V_CMPX_LT_U16,V_CMPX_EQ_U16,V_CMPX_LE_U16,V_CMPX_GT_U16,V_CMPX_NE_U16,V_CMPX_GE_U16,V_CMPX_T_U16,V_CMPX_F_I32,V_CMPX_LT_I32,V_CMPX_EQ_I32,V_CMPX_LE_I32,V_CMPX_GT_I32,V_CMPX_NE_I32,V_CMPX_GE_I32,V_CMPX_T_I32,V_CMPX_F_U32,V_CMPX_LT_U32,V_CMPX_EQ_U32,V_CMPX_LE_U32,V_CMPX_GT_U32,V_CMPX_NE_U32,V_CMPX_GE_U32,V_CMPX_T_U32 +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); break; case 18: //V_CMP_CLASS_F64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); break; case 19: //V_CMPX_CLASS_F64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175: -//V_CMP_CLASS_F16,V_CMP_F_F16,V_CMP_LT_F16,V_CMP_EQ_F16,V_CMP_LE_F16,V_CMP_GT_F16,V_CMP_LG_F16,V_CMP_GE_F16,V_CMP_O_F16,V_CMP_U_F16,V_CMP_NGE_F16,V_CMP_NLG_F16,V_CMP_NGT_F16,V_CMP_NLE_F16,V_CMP_NEQ_F16,V_CMP_NLT_F16,V_CMP_TRU_F16,V_CMP_F_I16,V_CMP_LT_I16,V_CMP_EQ_I16,V_CMP_LE_I16,V_CMP_GT_I16,V_CMP_NE_I16,V_CMP_GE_I16,V_CMP_T_I16,V_CMP_F_U16,V_CMP_LT_U16,V_CMP_EQ_U16,V_CMP_LE_U16,V_CMP_GT_U16,V_CMP_NE_U16,V_CMP_GE_U16,V_CMP_T_U16 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -break; -case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191: -//V_CMPX_CLASS_F16,V_CMPX_F_F16,V_CMPX_LT_F16,V_CMPX_EQ_F16,V_CMPX_LE_F16,V_CMPX_GT_F16,V_CMPX_LG_F16,V_CMPX_GE_F16,V_CMPX_O_F16,V_CMPX_U_F16,V_CMPX_NGE_F16,V_CMPX_NLG_F16,V_CMPX_NGT_F16,V_CMPX_NLE_F16,V_CMPX_NEQ_F16,V_CMPX_NLT_F16,V_CMPX_TRU_F16,V_CMPX_F_I16,V_CMPX_LT_I16,V_CMPX_EQ_I16,V_CMPX_LE_I16,V_CMPX_GT_I16,V_CMPX_NE_I16,V_CMPX_GE_I16,V_CMPX_T_I16,V_CMPX_F_U16,V_CMPX_LT_U16,V_CMPX_EQ_U16,V_CMPX_LE_U16,V_CMPX_GT_U16,V_CMPX_NE_U16,V_CMPX_GE_U16,V_CMPX_T_U16 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); break; case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239: //V_CMP_F_F64,V_CMP_LT_F64,V_CMP_EQ_F64,V_CMP_LE_F64,V_CMP_GT_F64,V_CMP_LG_F64,V_CMP_GE_F64,V_CMP_O_F64,V_CMP_U_F64,V_CMP_NGE_F64,V_CMP_NLG_F64,V_CMP_NGT_F64,V_CMP_NLE_F64,V_CMP_NEQ_F64,V_CMP_NLT_F64,V_CMP_TRU_F64,V_CMP_F_I64,V_CMP_LT_I64,V_CMP_EQ_I64,V_CMP_LE_I64,V_CMP_GT_I64,V_CMP_NE_I64,V_CMP_GE_I64,V_CMP_T_I64,V_CMP_F_U64,V_CMP_LT_U64,V_CMP_EQ_U64,V_CMP_LE_U64,V_CMP_GT_U64,V_CMP_NE_U64,V_CMP_GE_U64,V_CMP_T_U64 -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); break; case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:case 255: //V_CMPX_F_F64,V_CMPX_LT_F64,V_CMPX_EQ_F64,V_CMPX_LE_F64,V_CMPX_GT_F64,V_CMPX_LG_F64,V_CMPX_GE_F64,V_CMPX_O_F64,V_CMPX_U_F64,V_CMPX_NGE_F64,V_CMPX_NLG_F64,V_CMPX_NGT_F64,V_CMPX_NLE_F64,V_CMPX_NEQ_F64,V_CMPX_NLT_F64,V_CMPX_TRU_F64,V_CMPX_F_I64,V_CMPX_LT_I64,V_CMPX_EQ_I64,V_CMPX_LE_I64,V_CMPX_GT_I64,V_CMPX_NE_I64,V_CMPX_GE_I64,V_CMPX_T_I64,V_CMPX_F_U64,V_CMPX_LT_U64,V_CMPX_EQ_U64,V_CMPX_LE_U64,V_CMPX_GT_U64,V_CMPX_NE_U64,V_CMPX_GE_U64,V_CMPX_T_U64 -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); break; } } @@ -2098,54 +2187,39 @@ switch(layout.OP){ case 0:case 53: //V_NOP,V_CLREXCP break; -case 1:case 5:case 6:case 7:case 8:case 12:case 13:case 14:case 17:case 18:case 19:case 20:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 39:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 51:case 52:case 55:case 75:case 76: -//V_MOV_B32,V_CVT_F32_I32,V_CVT_F32_U32,V_CVT_U32_F32,V_CVT_I32_F32,V_CVT_RPI_I32_F32,V_CVT_FLR_I32_F32,V_CVT_OFF_F32_I4,V_CVT_F32_UBYTE0,V_CVT_F32_UBYTE1,V_CVT_F32_UBYTE2,V_CVT_F32_UBYTE3,V_FRACT_F32,V_TRUNC_F32,V_CEIL_F32,V_RNDNE_F32,V_FLOOR_F32,V_EXP_F32,V_LOG_F32,V_RCP_F32,V_RCP_IFLAG_F32,V_RSQ_F32,V_SQRT_F32,V_SIN_F32,V_COS_F32,V_NOT_B32,V_BFREV_B32,V_FFBH_U32,V_FFBL_B32,V_FFBH_I32,V_FREXP_EXP_I32_F32,V_FREXP_MANT_F32,V_SCREEN_PARTITION_4SE_B32,V_EXP_LEGACY_F32,V_LOG_LEGACY_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); +case 1:case 5:case 6:case 7:case 8:case 10:case 11:case 12:case 13:case 14:case 17:case 18:case 19:case 20:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 39:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 51:case 52:case 55:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79: +//V_MOV_B32,V_CVT_F32_I32,V_CVT_F32_U32,V_CVT_U32_F32,V_CVT_I32_F32,V_CVT_F16_F32,V_CVT_F32_F16,V_CVT_RPI_I32_F32,V_CVT_FLR_I32_F32,V_CVT_OFF_F32_I4,V_CVT_F32_UBYTE0,V_CVT_F32_UBYTE1,V_CVT_F32_UBYTE2,V_CVT_F32_UBYTE3,V_FRACT_F32,V_TRUNC_F32,V_CEIL_F32,V_RNDNE_F32,V_FLOOR_F32,V_EXP_F32,V_LOG_F32,V_RCP_F32,V_RCP_IFLAG_F32,V_RSQ_F32,V_SQRT_F32,V_SIN_F32,V_COS_F32,V_NOT_B32,V_BFREV_B32,V_FFBH_U32,V_FFBL_B32,V_FFBH_I32,V_FREXP_EXP_I32_F32,V_FREXP_MANT_F32,V_SCREEN_PARTITION_4SE_B32,V_CVT_F16_U16,V_CVT_F16_I16,V_CVT_U16_F16,V_CVT_I16_F16,V_RCP_F16,V_SQRT_F16,V_RSQ_F16,V_LOG_F16,V_EXP_F16,V_FREXP_MANT_F16,V_FREXP_EXP_I16_F16,V_FLOOR_F16,V_CEIL_F16,V_TRUNC_F16,V_RNDNE_F16,V_FRACT_F16,V_SIN_F16,V_COS_F16,V_EXP_LEGACY_F32,V_LOG_LEGACY_F32,V_CVT_NORM_I16_F16,V_CVT_NORM_U16_F16,V_SAT_PK_U8_I16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); break; case 2: //V_READFIRSTLANE_B32 -insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG_NOVCC(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR_OR_LDS(layout.SRC0),true,false); break; case 3:case 15:case 21:case 48: //V_CVT_I32_F64,V_CVT_F32_F64,V_CVT_U32_F64,V_FREXP_EXP_I32_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); break; case 4:case 16:case 22: //V_CVT_F64_I32,V_CVT_F64_F32,V_CVT_F64_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 10:case 79: -//V_CVT_F16_F32,V_SAT_PK_U8_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -break; -case 11: -//V_CVT_F32_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); break; case 23:case 24:case 25:case 26:case 37:case 38:case 40:case 49:case 50: //V_TRUNC_F64,V_CEIL_F64,V_RNDNE_F64,V_FLOOR_F64,V_RCP_F64,V_RSQ_F64,V_SQRT_F64,V_FREXP_MANT_F64,V_FRACT_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -break; -case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 77:case 78: -//V_CVT_F16_U16,V_CVT_F16_I16,V_CVT_U16_F16,V_CVT_I16_F16,V_RCP_F16,V_SQRT_F16,V_RSQ_F16,V_LOG_F16,V_EXP_F16,V_FREXP_MANT_F16,V_FREXP_EXP_I16_F16,V_FLOOR_F16,V_CEIL_F16,V_TRUNC_F16,V_RNDNE_F16,V_FRACT_F16,V_SIN_F16,V_COS_F16,V_CVT_NORM_I16_F16,V_CVT_NORM_U16_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); break; case 81: //V_SWAP_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0,32),true,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC0),true,true); break; } } @@ -2154,108 +2228,76 @@ layout_ENC_VOP2 & layout = insn_layout.ENC_VOP2; switch(layout.OP){ case 0: //V_CNDMASK_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 19:case 20:case 21:case 52:case 53:case 61: -//V_ADD_F32,V_SUB_F32,V_SUBREV_F32,V_MUL_LEGACY_F32,V_MUL_F32,V_MUL_I32_I24,V_MUL_HI_I32_I24,V_MUL_U32_U24,V_MUL_HI_U32_U24,V_MIN_F32,V_MAX_F32,V_MIN_I32,V_MAX_I32,V_MIN_U32,V_MAX_U32,V_AND_B32,V_OR_B32,V_XOR_B32,V_ADD_U32,V_SUB_U32,V_XNOR_B32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13:case 14:case 15:case 19:case 20:case 21:case 31:case 32:case 34:case 38:case 39:case 41:case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 61: +//V_ADD_F32,V_SUB_F32,V_SUBREV_F32,V_MUL_LEGACY_F32,V_MUL_F32,V_MUL_I32_I24,V_MUL_HI_I32_I24,V_MUL_U32_U24,V_MUL_HI_U32_U24,V_MIN_F32,V_MAX_F32,V_MIN_I32,V_MAX_I32,V_MIN_U32,V_MAX_U32,V_AND_B32,V_OR_B32,V_XOR_B32,V_ADD_F16,V_SUB_F16,V_MUL_F16,V_ADD_U16,V_SUB_U16,V_MUL_LO_U16,V_MAX_F16,V_MIN_F16,V_MAX_U16,V_MAX_I16,V_MIN_U16,V_MIN_I16,V_LDEXP_F16,V_ADD_U32,V_SUB_U32,V_XNOR_B32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; -case 16:case 17:case 18:case 54: -//V_LSHRREV_B32,V_ASHRREV_I32,V_LSHLREV_B32,V_SUBREV_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 16:case 17:case 18:case 33:case 40:case 42:case 43:case 44:case 54: +//V_LSHRREV_B32,V_ASHRREV_I32,V_LSHLREV_B32,V_SUBREV_F16,V_SUBREV_U16,V_LSHLREV_B16,V_LSHRREV_B16,V_ASHRREV_I16,V_SUBREV_U32 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; -case 22:case 55:case 56:case 57:case 58:case 59:case 60: -//V_MAC_F32,V_DOT2C_F32_F16,V_DOT2C_I32_I16,V_DOT4C_I32_I8,V_DOT8C_I32_I4,V_FMAC_F32,V_PK_FMAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 22:case 35:case 55:case 56:case 57:case 58:case 59:case 60: +//V_MAC_F32,V_MAC_F16,V_DOT2C_F32_F16,V_DOT2C_I32_I16,V_DOT4C_I32_I8,V_DOT8C_I32_I4,V_FMAC_F32,V_PK_FMAC_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; case 25:case 26: //V_ADD_CO_U32,V_SUB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; case 27: //V_SUBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; case 28:case 29: //V_ADDC_CO_U32,V_SUBB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; case 30: //V_SUBBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); insn_in_progress->appendOperand(decodeOPR_VCC(0,64),true,false); break; -case 31:case 32:case 34:case 38:case 39:case 41:case 45:case 46:case 47:case 48:case 49:case 50:case 51: -//V_ADD_F16,V_SUB_F16,V_MUL_F16,V_ADD_U16,V_SUB_U16,V_MUL_LO_U16,V_MAX_F16,V_MIN_F16,V_MAX_U16,V_MAX_I16,V_MIN_U16,V_MIN_I16,V_LDEXP_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 33:case 40:case 42:case 43:case 44: -//V_SUBREV_F16,V_SUBREV_U16,V_LSHLREV_B16,V_LSHRREV_B16,V_ASHRREV_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLDS(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 35: -//V_MAC_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),true,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; } } void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP2_LITERALOperands(){ layout_ENC_VOP2_LITERAL & layout = insn_layout.ENC_VOP2_LITERAL; switch(layout.OP){ -case 23: -//V_MADMK_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -break; -case 24: -//V_MADAK_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +case 23:case 36: +//V_MADMK_F32,V_MADMK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; -case 36: -//V_MADMK_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 37: -//V_MADAK_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); +case 24:case 37: +//V_MADAK_F32,V_MADAK_F16 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); insn_in_progress->appendOperand(decodeOPR_SIMM32(layout.SIMM32),true,false); break; } @@ -2265,127 +2307,106 @@ layout_ENC_VOP3B & layout = insn_layout.ENC_VOP3B; switch(layout.OP){ case 281:case 282: //V_ADD_CO_U32,V_SUB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); break; case 283: //V_SUBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); break; case 284:case 285: //V_ADDC_CO_U32,V_SUBB_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,0),true,false); break; case 286: //V_SUBBREV_CO_U32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SRC2+1,0),true,false); break; case 480: //V_DIV_SCALE_F32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2),true,false); break; case 481: //V_DIV_SCALE_F64 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VCC(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,0),true,false); break; case 488:case 489: //V_MAD_U64_U32,V_MAD_I64_I32 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,0),true,false); break; } } void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOP3POperands(){ layout_ENC_VOP3P & layout = insn_layout.ENC_VOP3P; switch(layout.OP){ -case 0:case 9:case 14: -//V_PK_MAD_I16,V_PK_MAD_U16,V_PK_FMA_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,16),true,false); +case 0:case 9:case 14:case 32:case 33:case 34:case 35:case 38:case 39:case 40:case 41:case 42:case 43: +//V_PK_MAD_I16,V_PK_MAD_U16,V_PK_FMA_F16,V_MAD_MIX_F32,V_MAD_MIXLO_F16,V_MAD_MIXHI_F16,V_DOT2_F32_F16,V_DOT2_I32_I16,V_DOT2_U32_U16,V_DOT4_I32_I8,V_DOT4_U32_U8,V_DOT8_I32_I4,V_DOT8_U32_U4 +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2),true,false); break; case 1:case 2:case 3:case 7:case 8:case 10:case 11:case 12:case 13:case 15:case 16:case 17:case 18: //V_PK_MUL_LO_U16,V_PK_ADD_I16,V_PK_SUB_I16,V_PK_MAX_I16,V_PK_MIN_I16,V_PK_ADD_U16,V_PK_SUB_U16,V_PK_MAX_U16,V_PK_MIN_U16,V_PK_ADD_F16,V_PK_MUL_F16,V_PK_MIN_F16,V_PK_MAX_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); break; case 4:case 5:case 6: //V_PK_LSHLREV_B16,V_PK_LSHRREV_B16,V_PK_ASHRREV_I16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -break; -case 32:case 40:case 41:case 42:case 43: -//V_MAD_MIX_F32,V_DOT4_I32_I8,V_DOT4_U32_U8,V_DOT8_I32_I4,V_DOT8_U32_U4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 33:case 34: -//V_MAD_MIXLO_F16,V_MAD_MIXHI_F16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,16),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); -break; -case 35:case 38:case 39: -//V_DOT2_F32_F16,V_DOT2_I32_I16,V_DOT2_U32_U16 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); break; case 88: //V_ACCVGPR_READ -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR(layout.SRC0),true,false); break; case 89: //V_ACCVGPR_WRITE -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); break; } } @@ -2394,73 +2415,60 @@ layout_ENC_VOP3P_MFMA & layout = insn_layout.ENC_VOP3P_MFMA; switch(layout.OP){ case 64:case 65:case 66:case 68:case 69:case 72:case 73:case 74:case 76:case 77:case 80:case 81:case 82:case 84:case 85:case 104:case 105:case 107:case 108:case 109: //V_MFMA_F32_32X32X1F32,V_MFMA_F32_16X16X1F32,V_MFMA_F32_4X4X1F32,V_MFMA_F32_32X32X2F32,V_MFMA_F32_16X16X4F32,V_MFMA_F32_32X32X4F16,V_MFMA_F32_16X16X4F16,V_MFMA_F32_4X4X4F16,V_MFMA_F32_32X32X8F16,V_MFMA_F32_16X16X16F16,V_MFMA_I32_32X32X4I8,V_MFMA_I32_16X16X4I8,V_MFMA_I32_4X4X4I8,V_MFMA_I32_32X32X8I8,V_MFMA_I32_16X16X16I8,V_MFMA_F32_32X32X2BF16,V_MFMA_F32_16X16X2BF16,V_MFMA_F32_4X4X2BF16,V_MFMA_F32_32X32X4BF16,V_MFMA_F32_16X16X8BF16 -insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST,32),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2,32),true,false); +insn_in_progress->appendOperand(decodeOPR_ACCVGPR(layout.VDST),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_VGPR_OR_ACCVGPR(layout.SRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC_ACCVGPR_OR_CONST(layout.SRC2),true,false); break; } } void InstructionDecoder_amdgpu_gfx908::finalizeENC_VOPCOperands(){ layout_ENC_VOPC & layout = insn_layout.ENC_VOPC; switch(layout.OP){ -case 16:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: -//V_CMP_CLASS_F32,V_CMP_F_F32,V_CMP_LT_F32,V_CMP_EQ_F32,V_CMP_LE_F32,V_CMP_GT_F32,V_CMP_LG_F32,V_CMP_GE_F32,V_CMP_O_F32,V_CMP_U_F32,V_CMP_NGE_F32,V_CMP_NLG_F32,V_CMP_NGT_F32,V_CMP_NLE_F32,V_CMP_NEQ_F32,V_CMP_NLT_F32,V_CMP_TRU_F32,V_CMP_F_I32,V_CMP_LT_I32,V_CMP_EQ_I32,V_CMP_LE_I32,V_CMP_GT_I32,V_CMP_NE_I32,V_CMP_GE_I32,V_CMP_T_I32,V_CMP_F_U32,V_CMP_LT_U32,V_CMP_EQ_U32,V_CMP_LE_U32,V_CMP_GT_U32,V_CMP_NE_U32,V_CMP_GE_U32,V_CMP_T_U32 +case 16:case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 64:case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:case 192:case 193:case 194:case 195:case 196:case 197:case 198:case 199:case 200:case 201:case 202:case 203:case 204:case 205:case 206:case 207: +//V_CMP_CLASS_F32,V_CMP_CLASS_F16,V_CMP_F_F16,V_CMP_LT_F16,V_CMP_EQ_F16,V_CMP_LE_F16,V_CMP_GT_F16,V_CMP_LG_F16,V_CMP_GE_F16,V_CMP_O_F16,V_CMP_U_F16,V_CMP_NGE_F16,V_CMP_NLG_F16,V_CMP_NGT_F16,V_CMP_NLE_F16,V_CMP_NEQ_F16,V_CMP_NLT_F16,V_CMP_TRU_F16,V_CMP_F_F32,V_CMP_LT_F32,V_CMP_EQ_F32,V_CMP_LE_F32,V_CMP_GT_F32,V_CMP_LG_F32,V_CMP_GE_F32,V_CMP_O_F32,V_CMP_U_F32,V_CMP_NGE_F32,V_CMP_NLG_F32,V_CMP_NGT_F32,V_CMP_NLE_F32,V_CMP_NEQ_F32,V_CMP_NLT_F32,V_CMP_TRU_F32,V_CMP_F_I16,V_CMP_LT_I16,V_CMP_EQ_I16,V_CMP_LE_I16,V_CMP_GT_I16,V_CMP_NE_I16,V_CMP_GE_I16,V_CMP_T_I16,V_CMP_F_U16,V_CMP_LT_U16,V_CMP_EQ_U16,V_CMP_LE_U16,V_CMP_GT_U16,V_CMP_NE_U16,V_CMP_GE_U16,V_CMP_T_U16,V_CMP_F_I32,V_CMP_LT_I32,V_CMP_EQ_I32,V_CMP_LE_I32,V_CMP_GT_I32,V_CMP_NE_I32,V_CMP_GE_I32,V_CMP_T_I32,V_CMP_F_U32,V_CMP_LT_U32,V_CMP_EQ_U32,V_CMP_LE_U32,V_CMP_GT_U32,V_CMP_NE_U32,V_CMP_GE_U32,V_CMP_T_U32 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; -case 17:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:case 223: -//V_CMPX_CLASS_F32,V_CMPX_F_F32,V_CMPX_LT_F32,V_CMPX_EQ_F32,V_CMPX_LE_F32,V_CMPX_GT_F32,V_CMPX_LG_F32,V_CMPX_GE_F32,V_CMPX_O_F32,V_CMPX_U_F32,V_CMPX_NGE_F32,V_CMPX_NLG_F32,V_CMPX_NGT_F32,V_CMPX_NLE_F32,V_CMPX_NEQ_F32,V_CMPX_NLT_F32,V_CMPX_TRU_F32,V_CMPX_F_I32,V_CMPX_LT_I32,V_CMPX_EQ_I32,V_CMPX_LE_I32,V_CMPX_GT_I32,V_CMPX_NE_I32,V_CMPX_GE_I32,V_CMPX_T_I32,V_CMPX_F_U32,V_CMPX_LT_U32,V_CMPX_EQ_U32,V_CMPX_LE_U32,V_CMPX_GT_U32,V_CMPX_NE_U32,V_CMPX_GE_U32,V_CMPX_T_U32 +case 17:case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 91:case 92:case 93:case 94:case 95:case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191:case 208:case 209:case 210:case 211:case 212:case 213:case 214:case 215:case 216:case 217:case 218:case 219:case 220:case 221:case 222:case 223: +//V_CMPX_CLASS_F32,V_CMPX_CLASS_F16,V_CMPX_F_F16,V_CMPX_LT_F16,V_CMPX_EQ_F16,V_CMPX_LE_F16,V_CMPX_GT_F16,V_CMPX_LG_F16,V_CMPX_GE_F16,V_CMPX_O_F16,V_CMPX_U_F16,V_CMPX_NGE_F16,V_CMPX_NLG_F16,V_CMPX_NGT_F16,V_CMPX_NLE_F16,V_CMPX_NEQ_F16,V_CMPX_NLT_F16,V_CMPX_TRU_F16,V_CMPX_F_F32,V_CMPX_LT_F32,V_CMPX_EQ_F32,V_CMPX_LE_F32,V_CMPX_GT_F32,V_CMPX_LG_F32,V_CMPX_GE_F32,V_CMPX_O_F32,V_CMPX_U_F32,V_CMPX_NGE_F32,V_CMPX_NLG_F32,V_CMPX_NGT_F32,V_CMPX_NLE_F32,V_CMPX_NEQ_F32,V_CMPX_NLT_F32,V_CMPX_TRU_F32,V_CMPX_F_I16,V_CMPX_LT_I16,V_CMPX_EQ_I16,V_CMPX_LE_I16,V_CMPX_GT_I16,V_CMPX_NE_I16,V_CMPX_GE_I16,V_CMPX_T_I16,V_CMPX_F_U16,V_CMPX_LT_U16,V_CMPX_EQ_U16,V_CMPX_LE_U16,V_CMPX_GT_U16,V_CMPX_NE_U16,V_CMPX_GE_U16,V_CMPX_T_U16,V_CMPX_F_I32,V_CMPX_LT_I32,V_CMPX_EQ_I32,V_CMPX_LE_I32,V_CMPX_GT_I32,V_CMPX_NE_I32,V_CMPX_GE_I32,V_CMPX_T_I32,V_CMPX_F_U32,V_CMPX_LT_U32,V_CMPX_EQ_U32,V_CMPX_LE_U32,V_CMPX_GT_U32,V_CMPX_NE_U32,V_CMPX_GE_U32,V_CMPX_T_U32 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); break; case 18: //V_CMP_CLASS_F64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); break; case 19: //V_CMPX_CLASS_F64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); -break; -case 20:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 160:case 161:case 162:case 163:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175: -//V_CMP_CLASS_F16,V_CMP_F_F16,V_CMP_LT_F16,V_CMP_EQ_F16,V_CMP_LE_F16,V_CMP_GT_F16,V_CMP_LG_F16,V_CMP_GE_F16,V_CMP_O_F16,V_CMP_U_F16,V_CMP_NGE_F16,V_CMP_NLG_F16,V_CMP_NGT_F16,V_CMP_NLE_F16,V_CMP_NEQ_F16,V_CMP_NLT_F16,V_CMP_TRU_F16,V_CMP_F_I16,V_CMP_LT_I16,V_CMP_EQ_I16,V_CMP_LE_I16,V_CMP_GT_I16,V_CMP_NE_I16,V_CMP_GE_I16,V_CMP_T_I16,V_CMP_F_U16,V_CMP_LT_U16,V_CMP_EQ_U16,V_CMP_LE_U16,V_CMP_GT_U16,V_CMP_NE_U16,V_CMP_GE_U16,V_CMP_T_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -break; -case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 176:case 177:case 178:case 179:case 180:case 181:case 182:case 183:case 184:case 185:case 186:case 187:case 188:case 189:case 190:case 191: -//V_CMPX_CLASS_F16,V_CMPX_F_F16,V_CMPX_LT_F16,V_CMPX_EQ_F16,V_CMPX_LE_F16,V_CMPX_GT_F16,V_CMPX_LG_F16,V_CMPX_GE_F16,V_CMPX_O_F16,V_CMPX_U_F16,V_CMPX_NGE_F16,V_CMPX_NLG_F16,V_CMPX_NGT_F16,V_CMPX_NLE_F16,V_CMPX_NEQ_F16,V_CMPX_NLT_F16,V_CMPX_TRU_F16,V_CMPX_F_I16,V_CMPX_LT_I16,V_CMPX_EQ_I16,V_CMPX_LE_I16,V_CMPX_GT_I16,V_CMPX_NE_I16,V_CMPX_GE_I16,V_CMPX_T_I16,V_CMPX_F_U16,V_CMPX_LT_U16,V_CMPX_EQ_U16,V_CMPX_LE_U16,V_CMPX_GT_U16,V_CMPX_NE_U16,V_CMPX_GE_U16,V_CMPX_T_U16 -insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0,16),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1,16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); break; case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239: //V_CMP_F_F64,V_CMP_LT_F64,V_CMP_EQ_F64,V_CMP_LE_F64,V_CMP_GT_F64,V_CMP_LG_F64,V_CMP_GE_F64,V_CMP_O_F64,V_CMP_U_F64,V_CMP_NGE_F64,V_CMP_NLG_F64,V_CMP_NGT_F64,V_CMP_NLE_F64,V_CMP_NEQ_F64,V_CMP_NLT_F64,V_CMP_TRU_F64,V_CMP_F_I64,V_CMP_LT_I64,V_CMP_EQ_I64,V_CMP_LE_I64,V_CMP_GT_I64,V_CMP_NE_I64,V_CMP_GE_I64,V_CMP_T_I64,V_CMP_F_U64,V_CMP_LT_U64,V_CMP_EQ_U64,V_CMP_LE_U64,V_CMP_GT_U64,V_CMP_NE_U64,V_CMP_GE_U64,V_CMP_T_U64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,0),true,false); break; case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:case 123:case 124:case 125:case 126:case 127:case 240:case 241:case 242:case 243:case 244:case 245:case 246:case 247:case 248:case 249:case 250:case 251:case 252:case 253:case 254:case 255: //V_CMPX_F_F64,V_CMPX_LT_F64,V_CMPX_EQ_F64,V_CMPX_LE_F64,V_CMPX_GT_F64,V_CMPX_LG_F64,V_CMPX_GE_F64,V_CMPX_O_F64,V_CMPX_U_F64,V_CMPX_NGE_F64,V_CMPX_NLG_F64,V_CMPX_NGT_F64,V_CMPX_NLE_F64,V_CMPX_NEQ_F64,V_CMPX_NLT_F64,V_CMPX_TRU_F64,V_CMPX_F_I64,V_CMPX_LT_I64,V_CMPX_EQ_I64,V_CMPX_LE_I64,V_CMPX_GT_I64,V_CMPX_NE_I64,V_CMPX_GE_I64,V_CMPX_T_I64,V_CMPX_F_U64,V_CMPX_LT_U64,V_CMPX_EQ_U64,V_CMPX_LE_U64,V_CMPX_GT_U64,V_CMPX_NE_U64,V_CMPX_GE_U64,V_CMPX_T_U64 insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,32),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,32),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126,64),false,true); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,0),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); break; } } diff --git a/instructionAPI/src/ArchSpecificFormatters.C b/instructionAPI/src/ArchSpecificFormatters.C index 5409142f3c..91f9ab0420 100644 --- a/instructionAPI/src/ArchSpecificFormatters.C +++ b/instructionAPI/src/ArchSpecificFormatters.C @@ -186,6 +186,9 @@ std::string AmdgpuFormatter::getInstructionString(std::vector opera std::string out; for(std::vector::iterator itr = operands.begin(); itr != operands.end(); itr++) { + if (*itr == "") + continue; + out += *itr; if(itr != operands.end() - 1) out += ", "; diff --git a/instructionAPI/src/InstructionDecoderImpl.C b/instructionAPI/src/InstructionDecoderImpl.C index 32090667da..d88e400dae 100644 --- a/instructionAPI/src/InstructionDecoderImpl.C +++ b/instructionAPI/src/InstructionDecoderImpl.C @@ -135,13 +135,13 @@ namespace Dyninst { return make_shared(singleton_object_pool::construct(addrToDereference, resultType)); } - Expression::Ptr InstructionDecoderImpl::makeRegisterExpression(MachRegister registerID) + Expression::Ptr InstructionDecoderImpl::makeRegisterExpression(MachRegister registerID, uint32_t num_elements ) { int newID = registerID.val(); int minusArch = newID & ~(registerID.getArchitecture()); int convertedID = minusArch | m_Arch; MachRegister converted(convertedID); - return make_shared(singleton_object_pool::construct(converted, 0, registerID.size() * 8)); + return make_shared(singleton_object_pool::construct(converted, 0, registerID.size() * 8,num_elements)); } @@ -171,7 +171,6 @@ namespace Dyninst MachRegister converted(convertedID); return make_shared(singleton_object_pool::construct(converted, 0, registerID.size() * 8)); } - } } diff --git a/instructionAPI/src/InstructionDecoderImpl.h b/instructionAPI/src/InstructionDecoderImpl.h index b59257c586..068d467446 100644 --- a/instructionAPI/src/InstructionDecoderImpl.h +++ b/instructionAPI/src/InstructionDecoderImpl.h @@ -67,7 +67,10 @@ class InstructionDecoderImpl virtual Expression::Ptr makeRightLogicalShiftExpression(Expression::Ptr lhs, Expression::Ptr rhs, Result_Type resultType); virtual Expression::Ptr makeRightRotateExpression(Expression::Ptr lhs, Expression::Ptr rhs, Result_Type resultType); virtual Expression::Ptr makeDereferenceExpression(Expression::Ptr addrToDereference, Result_Type resultType); - virtual Expression::Ptr makeRegisterExpression(MachRegister reg); + + + + virtual Expression::Ptr makeRegisterExpression(MachRegister reg, uint32_t num_elements = 1); // added version to support loading partial values out of register virtual Expression::Ptr makeRegisterExpression(MachRegister reg, unsigned int start , unsigned int end); virtual Expression::Ptr makeMaskRegisterExpression(MachRegister reg); diff --git a/instructionAPI/src/Register.C b/instructionAPI/src/Register.C index c87475d4dc..53a728ba91 100644 --- a/instructionAPI/src/Register.C +++ b/instructionAPI/src/Register.C @@ -49,19 +49,19 @@ namespace Dyninst { namespace InstructionAPI { - RegisterAST::RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit) : - Expression(r), m_Reg(r), m_Low(lowbit), m_High(highbit) + RegisterAST::RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit ,uint32_t num_elements) : + Expression(r), m_Reg(r), m_Low(lowbit), m_High(highbit) , m_num_elements(num_elements) { } - RegisterAST::RegisterAST(MachRegister r) : - Expression(r), m_Reg(r), m_Low(0) + RegisterAST::RegisterAST(MachRegister r, uint32_t num_elements) : + Expression(r), m_Reg(r), m_Low(0), m_num_elements(num_elements) { m_High = r.size() * 8; } - RegisterAST::RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit, Result_Type regType): - Expression(regType), m_Reg(r), m_Low(lowbit), m_High(highbit) + RegisterAST::RegisterAST(MachRegister r, unsigned int lowbit, unsigned int highbit, Result_Type regType, uint32_t num_elements): + Expression(regType), m_Reg(r), m_Low(lowbit), m_High(highbit), m_num_elements(num_elements) { } @@ -106,8 +106,37 @@ namespace Dyninst { name = name.substr(substr + 2, name.length()); } + if( m_num_elements ==0 ){ + return ""; + }else if ( m_num_elements > 1){ + uint32_t id = m_Reg & 0xff ; + uint32_t regClass = m_Reg.regClass(); + + uint32_t size = m_num_elements; + DYNINST_DIAGNOSTIC_BEGIN_SUPPRESS_LOGICAL_OP + + if(regClass == amdgpu_gfx908::SGPR || regClass == amdgpu_cdna2::SGPR || regClass == amdgpu_vega::SGPR){ + return "S["+to_string(id) + ":" + to_string(id+size-1)+"]"; + } + + if(regClass == amdgpu_gfx908::VGPR || regClass == amdgpu_cdna2::VGPR || regClass == amdgpu_vega::VGPR){ + return "V["+to_string(id) + ":" + to_string(id+size-1)+"]"; + } + + DYNINST_DIAGNOSTIC_END_SUPPRESS_LOGICAL_OP + + if(regClass == amdgpu_gfx908::ACC_VGPR || regClass == amdgpu_cdna2::ACC_VGPR){ + return "ACC["+to_string(id) + ":" + to_string(id+size-1)+"]"; + } + if(m_Reg == amdgpu_gfx908::vcc_lo || m_Reg == amdgpu_cdna2::vcc_lo || m_Reg == amdgpu_vega::vcc_lo) + return "VCC"; + if(m_Reg == amdgpu_gfx908::exec_lo || m_Reg == amdgpu_cdna2::exec_lo || m_Reg == amdgpu_vega::exec_lo) + return "EXEC"; + + + }else if ( m_High -m_Low > 32 && m_Reg.size()*8 != m_High - m_Low){ + // Size of base register * 8 != m_High - mLow ( in bits) when we it is a register vector - if ( m_High -m_Low > 32 && m_Reg.size()*8 != m_High - m_Low){ uint32_t id = m_Reg & 0xff ; uint32_t regClass = m_Reg.regClass(); uint32_t size = (m_High - m_Low ) / 32; @@ -136,7 +165,7 @@ namespace Dyninst return "EXEC"; name += "["+to_string(m_Low)+":"+to_string(m_High)+"]"; - } + } /* we have moved to AT&T syntax (lowercase registers) */ for(char &c : name) c = std::toupper(c); From 02818df43ea6d019ac85c90df51db1a0c67220c5 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 25 Oct 2022 17:11:06 -0500 Subject: [PATCH 173/505] fix formatting regarding implicit operands --- .../src/AMDGPU/gfx908/finalizeOperands.C | 228 +++++++++--------- instructionAPI/src/ArchSpecificFormatters.C | 8 +- 2 files changed, 118 insertions(+), 118 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index 499b9f9c83..9a43efd888 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -18,7 +18,7 @@ break; case 29:case 153:case 155:case 157: //DS_WRITE_ADDTID_B32,DS_GWS_INIT,DS_GWS_SEMA_BR,DS_GWS_BARRIER insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 45:case 50:case 51:case 53:case 62:case 63: //DS_ADD_RTN_U32,DS_SUB_RTN_U32,DS_RSUB_RTN_U32,DS_INC_RTN_U32,DS_DEC_RTN_U32,DS_MIN_RTN_I32,DS_MAX_RTN_I32,DS_MIN_RTN_U32,DS_MAX_RTN_U32,DS_AND_RTN_B32,DS_OR_RTN_B32,DS_XOR_RTN_B32,DS_WRXCHG_RTN_B32,DS_MIN_RTN_F32,DS_MAX_RTN_F32,DS_ADD_RTN_F32,DS_PERMUTE_B32,DS_BPERMUTE_B32 @@ -110,18 +110,18 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); break; case 152:case 154:case 156: //DS_GWS_SEMA_RELEASE_ALL,DS_GWS_SEMA_V,DS_GWS_SEMA_P -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 182:case 189:case 190: //DS_READ_ADDTID_B32,DS_CONSUME,DS_APPEND insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 191: //DS_ORDERED_COUNT insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 222: //DS_WRITE_B96 @@ -155,8 +155,8 @@ case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36: insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -166,8 +166,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -178,8 +178,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -191,8 +191,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -201,8 +201,8 @@ case 24:case 25:case 26:case 27:case 28: insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -212,8 +212,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -224,8 +224,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -237,8 +237,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -248,8 +248,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -261,8 +261,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -278,8 +278,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -297,7 +297,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -311,7 +311,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -326,7 +326,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -342,7 +342,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -355,7 +355,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -369,7 +369,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -384,7 +384,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -400,7 +400,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -414,7 +414,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -430,7 +430,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -450,7 +450,7 @@ if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -466,8 +466,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -479,8 +479,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -493,8 +493,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -508,8 +508,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -520,8 +520,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -533,8 +533,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -547,8 +547,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -562,8 +562,8 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); } -insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::vmcnt,0,36),true,true,true); insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0,16),true,true,true); break; @@ -1502,7 +1502,7 @@ case 2: //S_CMOV_B32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 3: //S_CMOV_B64 @@ -1510,13 +1510,13 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),true,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),true,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 4:case 6:case 10:case 12:case 40:case 48: //S_NOT_B32,S_WQM_B32,S_BCNT0_I32_B32,S_BCNT1_I32_B32,S_QUADMASK_B32,S_ABS_I32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 5:case 7:case 41: //S_NOT_B64,S_WQM_B64,S_QUADMASK_B64 @@ -1524,14 +1524,14 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 11:case 13: //S_BCNT0_I32_B64,S_BCNT1_I32_B64 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 15:case 17:case 19:case 21: //S_FF0_I32_B64,S_FF1_I32_B64,S_FLBIT_I32_B64,S_FLBIT_I32_I64 @@ -1554,7 +1554,7 @@ case 28: //S_GETPC_B64 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),true,false,true); break; case 29: //S_SETPC_B64 @@ -1562,7 +1562,7 @@ setBranch(); setModifyPC(); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); break; case 30: //S_SWAPPC_B64 @@ -1572,14 +1572,14 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),true,false,true); break; case 31: //S_RFE_B64 insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); break; case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 51:case 52:case 53:case 54: //S_AND_SAVEEXEC_B64,S_OR_SAVEEXEC_B64,S_XOR_SAVEEXEC_B64,S_ANDN2_SAVEEXEC_B64,S_ORN2_SAVEEXEC_B64,S_NAND_SAVEEXEC_B64,S_NOR_SAVEEXEC_B64,S_XNOR_SAVEEXEC_B64,S_ANDN1_SAVEEXEC_B64,S_ORN1_SAVEEXEC_B64,S_ANDN1_WREXEC_B64,S_ANDN2_WREXEC_B64 @@ -1587,15 +1587,15 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false,true); break; case 42: //S_MOVRELS_B32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 43: //S_MOVRELS_B64 @@ -1603,13 +1603,13 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 44: //S_MOVRELD_B32 insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 45: //S_MOVRELD_B64 @@ -1617,19 +1617,19 @@ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 46: //S_CBRANCH_JOIN insn_in_progress->appendOperand(decodeOPR_SREG(layout.SSRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); break; case 50: //S_SET_GPR_IDX_IDX insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 55: //S_BITREPLICATE_B64_B32 @@ -1647,22 +1647,22 @@ case 0:case 1:case 2:case 3:case 6:case 7:case 8:case 9:case 12:case 14:case 16: insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 4:case 5: //S_ADDC_U32,S_SUBB_U32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 10: //S_CSELECT_B32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 11: //S_CSELECT_B64 @@ -1672,7 +1672,7 @@ insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 13:case 15:case 17:case 19:case 21:case 23:case 25:case 27: //S_AND_B64,S_OR_B64,S_XOR_B64,S_ANDN2_B64,S_ORN2_B64,S_NAND_B64,S_NOR_B64,S_XNOR_B64 @@ -1682,7 +1682,7 @@ insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 29:case 31:case 33:case 39:case 40: //S_LSHL_B64,S_LSHR_B64,S_ASHR_I64,S_BFE_U64,S_BFE_I64 @@ -1691,7 +1691,7 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 34:case 36:case 44:case 45:case 50:case 51:case 52: //S_BFM_B32,S_MUL_I32,S_MUL_HI_U32,S_MUL_HI_I32,S_PACK_LL_B32_B16,S_PACK_LH_B32_B16,S_PACK_HH_B32_B16 @@ -1712,14 +1712,14 @@ insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+0,2),true,fals insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC_NOLIT(layout.SSRC1+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); break; case 43: //S_RFE_RESTORE_B64 insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); break; } } @@ -1730,14 +1730,14 @@ case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:ca //S_CMP_EQ_I32,S_CMP_LG_I32,S_CMP_GT_I32,S_CMP_GE_I32,S_CMP_LT_I32,S_CMP_LE_I32,S_CMP_EQ_U32,S_CMP_LG_U32,S_CMP_GT_U32,S_CMP_GE_U32,S_CMP_LT_U32,S_CMP_LE_U32,S_BITCMP0_B32,S_BITCMP1_B32 insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 14:case 15: //S_BITCMP0_B64,S_BITCMP1_B64 insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 16: //S_SETVSKIP @@ -1748,8 +1748,8 @@ case 17: //S_SET_GPR_IDX_ON insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SIMM4(layout.SSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 18:case 19: //S_CMP_EQ_U64,S_CMP_LG_U64 @@ -1757,7 +1757,7 @@ insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC(layout.SSRC1+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; } } @@ -1773,19 +1773,19 @@ case 1: //S_CMOVK_I32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:case 12:case 13: //S_CMPK_EQ_I32,S_CMPK_LG_I32,S_CMPK_GT_I32,S_CMPK_GE_I32,S_CMPK_LT_I32,S_CMPK_LE_I32,S_CMPK_EQ_U32,S_CMPK_LG_U32,S_CMPK_GT_U32,S_CMPK_GE_U32,S_CMPK_LT_U32,S_CMPK_LE_U32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,false); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 14: //S_ADDK_I32 insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST),true,true); insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),false,true,true); break; case 15: //S_MULK_I32 @@ -1808,8 +1808,8 @@ case 21: insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.SDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_PC(0),false,true); -insn_in_progress->appendOperand(decodeOPR_PC(0),true,false); +insn_in_progress->appendOperand(decodeOPR_PC(0),false,true,true); +insn_in_progress->appendOperand(decodeOPR_PC(0),true,false,true); break; } } @@ -1845,7 +1845,7 @@ setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false); +insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 6:case 7: //S_CBRANCH_VCCZ,S_CBRANCH_VCCNZ @@ -1853,7 +1853,7 @@ setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false,true); break; case 8:case 9: //S_CBRANCH_EXECZ,S_CBRANCH_EXECNZ @@ -1861,7 +1861,7 @@ setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false,true); break; case 12: //S_WAITCNT @@ -1885,11 +1885,11 @@ if (lgkmcnt != 0xf) { break;case 16:case 17: //S_SENDMSG,S_SENDMSGHALT insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 22: //S_TTRACEDATA -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 23:case 24:case 25:case 26: //S_CBRANCH_CDBGSYS,S_CBRANCH_CDBGUSER,S_CBRANCH_CDBGSYS_OR_USER,S_CBRANCH_CDBGSYS_AND_USER @@ -1898,8 +1898,8 @@ break; case 29: //S_SET_GPR_IDX_MODE insn_in_progress->appendOperand(decodeOPR_SIMM16(layout.SIMM16),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),false,true,true); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; } } @@ -1911,21 +1911,21 @@ case 0: insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC),true,false); insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 1: //V_INTERP_P2_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC),true,false); insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 2: //V_INTERP_MOV_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_PARAM(layout.VSRC),true,false); insn_in_progress->appendOperand(decodeOPR_ATTR(layout.ATTR),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; } } @@ -1937,21 +1937,21 @@ case 624: insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1),true,false); insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 625: //V_INTERP_P2_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),true,true); insn_in_progress->appendOperand(decodeOPR_SRC_VGPR(layout.SRC1),true,false); insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 626: //V_INTERP_MOV_F32 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_PARAM(layout.SRC1),true,false); insn_in_progress->appendOperand(decodeOPR_ATTR(layout.SRC0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false); +insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); break; case 320:case 373: //V_NOP,V_CLREXCP @@ -2040,7 +2040,7 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false,true); break; case 483: //V_DIV_FMAS_F64 @@ -2052,7 +2052,7 @@ insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC2+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false); +insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false,true); break; case 485:case 486: //V_QSAD_PK_U16_U8,V_MQSAD_PK_U16_U8 @@ -2141,7 +2141,7 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); break; case 18: //V_CMP_CLASS_F64 @@ -2158,7 +2158,7 @@ insn_in_progress->appendOperand(decodeOPR_SDST(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); break; case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239: //V_CMP_F_F64,V_CMP_LT_F64,V_CMP_EQ_F64,V_CMP_LE_F64,V_CMP_GT_F64,V_CMP_LG_F64,V_CMP_GE_F64,V_CMP_O_F64,V_CMP_U_F64,V_CMP_NGE_F64,V_CMP_NLG_F64,V_CMP_NGT_F64,V_CMP_NLE_F64,V_CMP_NEQ_F64,V_CMP_NLT_F64,V_CMP_TRU_F64,V_CMP_F_I64,V_CMP_LT_I64,V_CMP_EQ_I64,V_CMP_LE_I64,V_CMP_GT_I64,V_CMP_NE_I64,V_CMP_GE_I64,V_CMP_T_I64,V_CMP_F_U64,V_CMP_LT_U64,V_CMP_EQ_U64,V_CMP_LE_U64,V_CMP_GT_U64,V_CMP_NE_U64,V_CMP_GE_U64,V_CMP_T_U64 @@ -2177,7 +2177,7 @@ insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+0,2),true,false) insn_in_progress->appendOperand(decodeOPR_SRC_NOLIT(layout.SRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SRC_SIMPLE(layout.SRC1+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); break; } } @@ -2436,7 +2436,7 @@ case 17:case 21:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55: insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); break; case 18: //V_CMP_CLASS_F64 @@ -2451,7 +2451,7 @@ insn_in_progress->appendOperand(decodeOPR_VCC(0,64),false,true); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); break; case 96:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 224:case 225:case 226:case 227:case 228:case 229:case 230:case 231:case 232:case 233:case 234:case 235:case 236:case 237:case 238:case 239: //V_CMP_F_F64,V_CMP_LT_F64,V_CMP_EQ_F64,V_CMP_LE_F64,V_CMP_GT_F64,V_CMP_LG_F64,V_CMP_GE_F64,V_CMP_O_F64,V_CMP_U_F64,V_CMP_NGE_F64,V_CMP_NLG_F64,V_CMP_NGT_F64,V_CMP_NLE_F64,V_CMP_NEQ_F64,V_CMP_NLT_F64,V_CMP_TRU_F64,V_CMP_F_I64,V_CMP_LT_I64,V_CMP_EQ_I64,V_CMP_LE_I64,V_CMP_GT_I64,V_CMP_NE_I64,V_CMP_GE_I64,V_CMP_T_I64,V_CMP_F_U64,V_CMP_LT_U64,V_CMP_EQ_U64,V_CMP_LE_U64,V_CMP_GT_U64,V_CMP_NE_U64,V_CMP_GE_U64,V_CMP_T_U64 @@ -2468,7 +2468,7 @@ insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SRC(layout.SRC0+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VSRC1+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true); +insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),false,true,true); break; } } diff --git a/instructionAPI/src/ArchSpecificFormatters.C b/instructionAPI/src/ArchSpecificFormatters.C index 91f9ab0420..0f6cc1dde0 100644 --- a/instructionAPI/src/ArchSpecificFormatters.C +++ b/instructionAPI/src/ArchSpecificFormatters.C @@ -184,14 +184,14 @@ std::string AmdgpuFormatter::formatDeref(std::string addrString) { std::string AmdgpuFormatter::getInstructionString(std::vector operands) { std::string out; - + bool printed = false; for(std::vector::iterator itr = operands.begin(); itr != operands.end(); itr++) { if (*itr == "") continue; - - out += *itr; - if(itr != operands.end() - 1) + if(printed) out += ", "; + out += *itr; + printed = true; } return out; From 38bf84ba65038225a909e27e8943a2dbd645478c Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 25 Oct 2022 18:54:14 -0500 Subject: [PATCH 174/505] remove duplicate branch target operand --- instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C | 4 ---- 1 file changed, 4 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index 9a43efd888..e4f8cbca63 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -1837,14 +1837,12 @@ case 2: //S_BRANCH setBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); break; case 4:case 5: //S_CBRANCH_SCC0,S_CBRANCH_SCC1 setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_SSRC_SPECIAL_SCC(253),true,false,true); break; case 6:case 7: @@ -1852,7 +1850,6 @@ case 6:case 7: setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_VCC(0),true,false,true); break; case 8:case 9: @@ -1860,7 +1857,6 @@ case 8:case 9: setBranch(); setConditionalBranch(); makeBranchTarget(isCall,isConditional,layout.SIMM16); -insn_in_progress->appendOperand(decodeOPR_LABEL(layout.SIMM16),true,false); insn_in_progress->appendOperand(decodeOPR_SDST_EXEC(126),true,false,true); break; case 12: From 84182fbee5a626a14b87dc8c2aa9af685e2264b7 Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Tue, 25 Oct 2022 20:14:50 -0500 Subject: [PATCH 175/505] fix the logic for operands addr and saddr for flat instruction encoding family based on the manual --- .../src/AMDGPU/gfx908/finalizeOperands.C | 165 +++++++++++++----- 1 file changed, 119 insertions(+), 46 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C index e4f8cbca63..4f96de7a0b 100644 --- a/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/finalizeOperands.C @@ -291,9 +291,12 @@ switch(layout.OP){ case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: //GLOBAL_LOAD_UBYTE,GLOBAL_LOAD_SBYTE,GLOBAL_LOAD_USHORT,GLOBAL_LOAD_SSHORT,GLOBAL_LOAD_DWORD,GLOBAL_LOAD_UBYTE_D16,GLOBAL_LOAD_UBYTE_D16_HI,GLOBAL_LOAD_SBYTE_D16,GLOBAL_LOAD_SBYTE_D16_HI,GLOBAL_LOAD_SHORT_D16,GLOBAL_LOAD_SHORT_D16_HI insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -if(layout.SADDR != 0x7f){ +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } @@ -305,9 +308,12 @@ case 21: //GLOBAL_LOAD_DWORDX2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -if(layout.SADDR != 0x7f){ +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } @@ -320,9 +326,12 @@ case 22: insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,3),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -if(layout.SADDR != 0x7f){ +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } @@ -336,9 +345,12 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -if(layout.SADDR != 0x7f){ +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } @@ -348,9 +360,12 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 24:case 25:case 26:case 27:case 28: //GLOBAL_STORE_BYTE,GLOBAL_STORE_BYTE_D16_HI,GLOBAL_STORE_SHORT,GLOBAL_STORE_SHORT_D16_HI,GLOBAL_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); @@ -361,9 +376,12 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 29: //GLOBAL_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); @@ -375,9 +393,12 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 30: //GLOBAL_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); if(layout.SADDR != 0x7f){ @@ -390,9 +411,12 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 31: //GLOBAL_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); @@ -407,9 +431,12 @@ break; case 64:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78: //GLOBAL_ATOMIC_SWAP,GLOBAL_ATOMIC_ADD,GLOBAL_ATOMIC_SUB,GLOBAL_ATOMIC_SMIN,GLOBAL_ATOMIC_UMIN,GLOBAL_ATOMIC_SMAX,GLOBAL_ATOMIC_UMAX,GLOBAL_ATOMIC_AND,GLOBAL_ATOMIC_OR,GLOBAL_ATOMIC_XOR,GLOBAL_ATOMIC_INC,GLOBAL_ATOMIC_DEC,GLOBAL_ATOMIC_ADD_F32,GLOBAL_ATOMIC_PK_ADD_F16 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); @@ -422,9 +449,12 @@ case 65:case 96:case 98:case 99:case 100:case 101:case 102:case 103:case 104:cas //GLOBAL_ATOMIC_CMPSWAP,GLOBAL_ATOMIC_SWAP_X2,GLOBAL_ATOMIC_ADD_X2,GLOBAL_ATOMIC_SUB_X2,GLOBAL_ATOMIC_SMIN_X2,GLOBAL_ATOMIC_UMIN_X2,GLOBAL_ATOMIC_SMAX_X2,GLOBAL_ATOMIC_UMAX_X2,GLOBAL_ATOMIC_AND_X2,GLOBAL_ATOMIC_OR_X2,GLOBAL_ATOMIC_XOR_X2,GLOBAL_ATOMIC_INC_X2,GLOBAL_ATOMIC_DEC_X2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); if(layout.SADDR != 0x7f){ insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+0,2),true,false); @@ -440,9 +470,12 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); @@ -462,9 +495,14 @@ switch(layout.OP){ case 16:case 17:case 18:case 19:case 20:case 32:case 33:case 34:case 35:case 36:case 37: //SCRATCH_LOAD_UBYTE,SCRATCH_LOAD_SBYTE,SCRATCH_LOAD_USHORT,SCRATCH_LOAD_SSHORT,SCRATCH_LOAD_DWORD,SCRATCH_LOAD_UBYTE_D16,SCRATCH_LOAD_UBYTE_D16_HI,SCRATCH_LOAD_SBYTE_D16,SCRATCH_LOAD_SBYTE_D16_HI,SCRATCH_LOAD_SHORT_D16,SCRATCH_LOAD_SHORT_D16_HI insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -475,9 +513,14 @@ case 21: //SCRATCH_LOAD_DWORDX2 insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,2),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -489,9 +532,14 @@ case 22: insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,3),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -504,9 +552,14 @@ insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+0,4),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+1,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+2,0),false,true); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.VDST+3,0),false,true); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}if(layout.SADDR != 0x7f){ +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -515,10 +568,15 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 24:case 25:case 26:case 27:case 28: //SCRATCH_STORE_BYTE,SCRATCH_STORE_BYTE_D16_HI,SCRATCH_STORE_SHORT,SCRATCH_STORE_SHORT_D16_HI,SCRATCH_STORE_DWORD -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA),true,false); if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -527,11 +585,16 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 29: //SCRATCH_STORE_DWORDX2 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,2),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -540,12 +603,17 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 30: //SCRATCH_STORE_DWORDX3 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,3),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); @@ -554,13 +622,18 @@ insn_in_progress->appendOperand(makeRegisterExpression(amdgpu_gfx908::lgkmcnt,0, break; case 31: //SCRATCH_STORE_DWORDX4 -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR),true,false); -insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); +if(layout.SADDR == 0x7f){ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR+1,0),true,false); +}else{ +insn_in_progress->appendOperand(decodeOPR_VGPR(layout.ADDR,1),true,false); +}insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+0,4),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+1,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+2,0),true,false); insn_in_progress->appendOperand(decodeOPR_VGPR(layout.DATA+3,0),true,false); if(layout.SADDR != 0x7f){ -insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR,2),true,false); +insn_in_progress->appendOperand(decodeOPR_SREG(layout.SADDR+1,0),true,false); } insn_in_progress->appendOperand(decodeOPR_FLAT_SCRATCH(0),true,false,true); insn_in_progress->appendOperand(decodeOPR_SDST_M0(124),true,false,true); From 2473f27ef87af2c2ea41d17e20970cdbcd83435f Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Wed, 30 Nov 2022 06:42:55 -0600 Subject: [PATCH 176/505] fix logic for decoding src_literal, so it correctly consume the next 32 bit as data instead of decoding them as instruction --- instructionAPI/src/AMDGPU/gfx908/decodeOperands.C | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C index ada3322561..e50befb97c 100644 --- a/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C +++ b/instructionAPI/src/AMDGPU/gfx908/decodeOperands.C @@ -1060,7 +1060,7 @@ case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct, num_elements ); -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); +case 255 : return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } @@ -2159,7 +2159,7 @@ case 508 : return makeRegisterExpression(amdgpu_gfx908::v252, num_elements ); case 509 : return makeRegisterExpression(amdgpu_gfx908::v253, num_elements ); case 510 : return makeRegisterExpression(amdgpu_gfx908::v254, num_elements ); case 511 : return makeRegisterExpression(amdgpu_gfx908::v255, num_elements ); -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); +case 255 : return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } @@ -4397,7 +4397,7 @@ case 236 : return makeRegisterExpression(amdgpu_gfx908::src_shared_limit, num_el case 237 : return makeRegisterExpression(amdgpu_gfx908::src_private_base, num_elements ); case 238 : return makeRegisterExpression(amdgpu_gfx908::src_private_limit, num_elements ); case 239 : return makeRegisterExpression(amdgpu_gfx908::src_pops_exiting_wave_id, num_elements ); -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); +case 255 : return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } @@ -5010,9 +5010,9 @@ case 254 : return makeRegisterExpression(amdgpu_gfx908::src_lds_direct, num_elem default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } -Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t num_elements){ +Expression::Ptr InstructionDecoder_amdgpu_gfx908::decodeOPR_SSRC_SPECIAL_LIT(uint64_t input, uint32_t ){ switch(input){ -case 255 : return makeRegisterExpression(amdgpu_gfx908::src_literal, num_elements ); +case 255 : return Immediate::makeImmediate(Result(u32,decodeOPR_LITERAL())); default: return makeRegisterExpression(amdgpu_gfx908::invalid); } } From 73e59912986c623e4f8f21f2697693cc9d2c356f Mon Sep 17 00:00:00 2001 From: Bolo Date: Tue, 21 Feb 2023 15:13:54 -0600 Subject: [PATCH 177/505] Fix all-through instructions for newly added AMD gpu gfx908 Fixes #1375 for gfx908 (mi25 and mi200 already fixed) --- instructionAPI/src/Instruction.C | 2 ++ 1 file changed, 2 insertions(+) diff --git a/instructionAPI/src/Instruction.C b/instructionAPI/src/Instruction.C index c517190ab7..03fe44b3f3 100644 --- a/instructionAPI/src/Instruction.C +++ b/instructionAPI/src/Instruction.C @@ -542,6 +542,8 @@ namespace Dyninst case e_syscall: case amdgpu_op_s_setpc_b64: case amdgpu_op_s_swappc_b64: + case amdgpu_gfx908_op_S_SETPC_B64: + case amdgpu_gfx908_op_S_SWAPPC_B64: case amdgpu_cdna2_op_S_SETPC_B64: case amdgpu_cdna2_op_S_SWAPPC_B64: return false; From 52225454955728d2c262e22b978d55ef5823582d Mon Sep 17 00:00:00 2001 From: wuxx1279 Date: Wed, 22 Feb 2023 07:52:30 -0600 Subject: [PATCH 178/505] remove trailing usage of cout.clear --- .../src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C | 1 - 1 file changed, 1 deletion(-) diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C index 20be07ad32..47eea4d748 100644 --- a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C @@ -261,7 +261,6 @@ namespace Dyninst { InstructionDecoder::buffer b(insn_to_complete->ptr(), insn_to_complete->size()); setupInsnWord(b); mainDecode(); - cout.clear(); Instruction* iptr = const_cast(insn_to_complete); *iptr = *(insn_in_progress.get()); } From 358db4610e4919690d928797713bef3cf67ef61d Mon Sep 17 00:00:00 2001 From: kupsch Date: Wed, 22 Feb 2023 09:51:01 -0600 Subject: [PATCH 179/505] explicitly include (#1384) - std::array is used in this file, but not included explicitly as on many systems this header is implicitly included recursively via another included file. On new versions of headers this may no longer be the case, so explicitly include it. --- instructionAPI/src/InstructionDecoder-aarch64.h | 1 + 1 file changed, 1 insertion(+) diff --git a/instructionAPI/src/InstructionDecoder-aarch64.h b/instructionAPI/src/InstructionDecoder-aarch64.h index 7994d0b1cc..ae516232a6 100644 --- a/instructionAPI/src/InstructionDecoder-aarch64.h +++ b/instructionAPI/src/InstructionDecoder-aarch64.h @@ -28,6 +28,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include "InstructionDecoderImpl.h" #include #include "Immediate.h" From 0cd2b8b7858f48cd60e070010bb6600a1f44180e Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 22 Feb 2023 15:03:20 -0600 Subject: [PATCH 180/505] Add missing includes (#1385) These were showing up on ufront@rice. --- .../src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C | 1 + .../src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C | 1 + instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C | 1 + 3 files changed, 3 insertions(+) diff --git a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C index e852f47437..f62b1f5463 100644 --- a/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C +++ b/instructionAPI/src/AMDGPU/cdna2/InstructionDecoder-amdgpu-cdna2.C @@ -30,6 +30,7 @@ #include "Ternary.h" #include "InstructionDecoder-amdgpu-cdna2.h" +#include namespace Dyninst { namespace InstructionAPI { diff --git a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C index 47eea4d748..70d9edc6f9 100644 --- a/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C +++ b/instructionAPI/src/AMDGPU/gfx908/InstructionDecoder-amdgpu-gfx908.C @@ -30,6 +30,7 @@ #include "Ternary.h" #include "InstructionDecoder-amdgpu-gfx908.h" +#include namespace Dyninst { namespace InstructionAPI { diff --git a/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C index 449255ae00..3093ece410 100644 --- a/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C +++ b/instructionAPI/src/AMDGPU/vega/InstructionDecoder-amdgpu-vega.C @@ -30,6 +30,7 @@ #include "Ternary.h" #include "InstructionDecoder-amdgpu-vega.h" +#include namespace Dyninst { namespace InstructionAPI { From 066e00e3c41e799bcc8031862ee016d551dcb3c4 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 22 Feb 2023 15:36:07 -0600 Subject: [PATCH 181/505] Update CHANGELOG --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d13d7b7d0..816b675d30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # Change Log +## [12.3.0](https://github.com/dyninst/dyninst/tree/v12.3.0) (2023-02-22) +[Full Changelog](https://github.com/dyninst/dyninst/compare/v12.2.1...v12.3.0) + +- Add missing includes ([1385](https://github.com/dyninst/dyninst/issues/1385)) +- explicitly include ([1384](https://github.com/dyninst/dyninst/issues/1384)) +- remove trailing usage of cout.clear ([1383](https://github.com/dyninst/dyninst/issues/1383)) +- Fix all-through instructions for newly added AMD gpu gfx908 ([1381](https://github.com/dyninst/dyninst/issues/1381)) +- Added support for gfx908 based on the XML-ISA-DROP for MI100 ([1283](https://github.com/dyninst/dyninst/issues/1283)) +- Allow CFG analysis based on instructionAPI alone w/out semantics ([1379](https://github.com/dyninst/dyninst/issues/1379)) +- Prevent fall-through analysis of amd gpu swap/set pc instructions ([1376](https://github.com/dyninst/dyninst/issues/1376)) +- x86 8-bit immediate values were interpreted incorrectly cross-platform. ([1373](https://github.com/dyninst/dyninst/issues/1373)) +- update spack.yaml for spack v0.19.1 ([1367](https://github.com/dyninst/dyninst/issues/1367)) +- Remove use of couts in the AMDGPU instruction decoders ([1371](https://github.com/dyninst/dyninst/issues/1371)) +- handle ENDBR64 ([1368](https://github.com/dyninst/dyninst/issues/1368)) +- Fixed nullptr issues in dyninstAPI/src/mapped_object.C ([1361](https://github.com/dyninst/dyninst/issues/1361)) +- Fix sema type for vex2 encoded vpand ([1364](https://github.com/dyninst/dyninst/issues/1364)) +- Replace DwarfWalker::findString with DwarfWalker::find_call_file ([1360](https://github.com/dyninst/dyninst/issues/1360)) +- Update detection of DWARF languages ([1357](https://github.com/dyninst/dyninst/issues/1357)) +- Remove AObject::pickLanguage ([1358](https://github.com/dyninst/dyninst/issues/1358)) +- BPatch_snippet::generateArrayRef - fix possible null pointer access ([1356](https://github.com/dyninst/dyninst/issues/1356)) +- Use instrumentation logging in baseTramp::guarded ([1354](https://github.com/dyninst/dyninst/issues/1354)) +- Remove special global ctor/dtor search in ppc for static binaries ([1353](https://github.com/dyninst/dyninst/issues/1353)) +- Refactor common/src/Types.h ([1351](https://github.com/dyninst/dyninst/issues/1351)) +- add missing include file ([1344](https://github.com/dyninst/dyninst/issues/1344)) +- Remove dead implementation of IA_power::isLinkerStub ([1342](https://github.com/dyninst/dyninst/issues/1342)) +- Lookup functions in the binding table directly ([1337](https://github.com/dyninst/dyninst/issues/1337)) +- Remove outdated Boost version checks ([1329](https://github.com/dyninst/dyninst/issues/1329)) + ## [12.2.1](https://github.com/dyninst/dyninst/tree/v12.2.1) (2022-11-21) [Full Changelog](https://github.com/dyninst/dyninst/compare/v12.2.0...v12.2.1) From 726cf1def17a473808385fb89750dee4b5a8fcb9 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 22 Feb 2023 15:36:24 -0600 Subject: [PATCH 182/505] Remove 'Branch states' from README --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index dc8f82095f..a0c1a2134b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,5 @@ # Dyninst -## Branch states - -| Branch | Status | Notes | -| --------------------------------------- |:-------------:|:--------------------------------------------------:| -| master | stable | See below | -| aarch32 | experimental | Contact Ray Chen (rchen at cs dot umd dot edu) | - ## Notes * Known issues should have open issues associated with them. From 334b6856e28fd34a698ad74aa277f1399a814183 Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Wed, 22 Feb 2023 15:39:56 -0600 Subject: [PATCH 183/505] Documentation updates for v12.3.0 release (#1386) * Update version * Update documentation * Update copyright to 2023 --- COPYRIGHT | 2 +- cmake/shared.cmake | 4 ++-- common/doc/manual_frontpage.tex | 4 ++-- dataflowAPI/doc/dataflowAPI.pdf | Bin 349833 -> 360735 bytes dynC_API/doc/dynC_API.pdf | Bin 298530 -> 306884 bytes dyninstAPI/doc/dyninstAPI.docx | Bin 151289 -> 151965 bytes dyninstAPI/doc/dyninstAPI.pdf | Bin 422302 -> 418605 bytes instructionAPI/doc/instructionAPI.pdf | Bin 563449 -> 579919 bytes parseAPI/doc/parseAPI.pdf | Bin 404155 -> 424703 bytes parseAPI/h/SymLiteCodeSource.h | 2 +- parseAPI/src/CodeSource.C | 2 +- parseAPI/src/SymLiteCodeSource.C | 2 +- patchAPI/doc/patchAPI.pdf | Bin 614205 -> 625942 bytes proccontrol/doc/proccontrol.docx | Bin 108244 -> 108632 bytes proccontrol/doc/proccontrol.pdf | Bin 370687 -> 372111 bytes stackwalk/doc/stackwalk.pdf | Bin 318608 -> 328761 bytes symtabAPI/doc/symtabAPI.pdf | Bin 457099 -> 466345 bytes 17 files changed, 8 insertions(+), 8 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 9160abe3e5..3e3665702d 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,4 +1,4 @@ -Paradyn is Copyright (c) 1996-2022 Barton P. Miller +Paradyn is Copyright (c) 1996-2023 Barton P. Miller Contributions to Paradyn were developed by LLNS and have the following copyright: Copyright (c) 2012-2013, Lawrence Livermore National Security, LLC. Produced at diff --git a/cmake/shared.cmake b/cmake/shared.cmake index 15045380fe..c0e48ab1f1 100644 --- a/cmake/shared.cmake +++ b/cmake/shared.cmake @@ -1,6 +1,6 @@ set(DYNINST_MAJOR_VERSION 12) -set(DYNINST_MINOR_VERSION 2) -set(DYNINST_PATCH_VERSION 1) +set(DYNINST_MINOR_VERSION 3) +set(DYNINST_PATCH_VERSION 0) set(SOVERSION "${DYNINST_MAJOR_VERSION}.${DYNINST_MINOR_VERSION}") set(LIBVERSION "${SOVERSION}.${DYNINST_PATCH_VERSION}") diff --git a/common/doc/manual_frontpage.tex b/common/doc/manual_frontpage.tex index 160610633d..35036e7b00 100644 --- a/common/doc/manual_frontpage.tex +++ b/common/doc/manual_frontpage.tex @@ -42,9 +42,9 @@ % }; \node [anchor=west,font=\sffamily] (rel1) at ($(origin)+(0.75in,-5.0in)$) - {\fontsize{24}{32}\selectfont 12.2 Release}; + {\fontsize{24}{32}\selectfont 12.3 Release}; \node [anchor=west,font=\sffamily] (rel2) at ($(rel1.west)+(0in,-32pt)$) - {\fontsize{24}{32}\selectfont July 2022}; + {\fontsize{24}{32}\selectfont February 2023}; % Contact information % \matrix (UWaddress) [% diff --git a/dataflowAPI/doc/dataflowAPI.pdf b/dataflowAPI/doc/dataflowAPI.pdf index ac91979f43c62c920591c5f30034af3fbdafd5ed..4cdf5df823690167a07dbfda4b8f775e790242da 100644 GIT binary patch delta 117409 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 I6(r#P5AajU2mk;8 delta 107188 zcmX`SV{j&1u&y23#>BR5+cqY)ojkGqOl;e>?TKyMnk47l`+VQ|)3s_<*ZS36-F>aQ z^MbLWYA_QiL0N$;{WO4*GzG^^NtE#04@}=G81`$bLOaxu!f`a{_ukLYr8_`Uaj2OPD;9TeG%?Hs ztS54EDz9q&fhp()l3Nl|M<98nx<%K1T!U1?c{MzO@URNkf6nrOs zb(TB~q-9A;!gEs9H+hnr(O<(<(wNB_wA5+*ETQ#Y$9Q{5bVw$-VAMo*mtvEhX#p{z z)YLo(U7bdx2X$P=TV9FC1DMff+`5(`x? zLSzB+y16FUUf8DXdgqe;goKHPyNi*_N6&enE2#!;VHMBl?sm$kZ+@qX~Q>Z z+&gVMLLK936<Y-76*Z4|RJOCpYFoO5aBM9I%+n64XNAL-Jjb%q} zMXmh`6I?=%w~iZ(jz`K_$b*J(D1p!Ldx4j-Al3t&d6X?#= zb8f;FcBJK}wv_jX5X|}~_;V4?_nb^>(vS<%%vj}#qWWLHno1wnc0jq7*9(21j>?Hl zP60O;q@$|*5BcS43NFIwj2KJDqjE2?35tufBuR!H5c1CL4|Djf);a%7YAzGz5GX=u z`~EPfl_#rsf?!HEmo4CqN3M0td@849OK62K=5G3N-xWLti^am1&4{9X4(ssHl7svpZruJmb;Yy-r@+F_T_la&KyQt zWBrQ%%JNilCx@%lxT|#p7F_|vpl@^42lVjR;pP_oUvJgS1J%l1Sb2MaUv9(#rOzD# z!%TcsFHT@E!skNQ{aN+z+P#8lyr04mn?TjP^Ijh4mC{v>Z~3ZIwen(2Flq zkNO*}vZxutQ$2ip19m8NTq=T%19O4nV^Y0gjwMSc?J8M-0Og0T`}d);G3NENapWTM zHGU$_ju*BPE}7If?_9gwn3>z$ottLON#Dx0f|rlh^_x9CgwGw0=a;!tfWHsIfx->o zR3>o`*QN>H#ppb{?Z?jNQJZs<_>mF0Pte{|1;_Wq%kFyNsTIfrcu~;N6-+ys0qslD z>c<6?Gl#3G-jeFss2R3xgrGN{@=CHFH&`10Dv!3l&3r^08IZ$g3B!}e6wm(o)fj9) zQzJCiwd9SlG#RbcjdwC+xtiM+CqM%z;a(4l_i^D8LD*^qQ&Y!Ee61CHw=D`z9X)Z0 zh4SpEV&ElBdbyt4=O>bwHVM!y?h0^i=E1B=@j)4og>yBH$=H}e=wdibUc^?pQa%$H z_K=1W-Pd$fN$zkYl3o|*Td6Hio+<9XlT>_9ay(|dkVVdGchba60K(BgXMcdt(!w;g z2RFh5Yx8V+me3!?o0rgaJ7htZ84~!6#~$uRt`^V?nWR^n8)I(3dc&^m z^*VGDnW&`Js5*0V?t0tFn}-3ZJ@A;>WrQ06FaZN>#=+1v*Wry+*`fO84L)vm?Ho!} zhB(vmJhG83H4OqqgH(et+?@J_ZX7(0&^4EkztKTB@2CFrztgb7rfHm5 zC?yB`F((>N-SxwIxLp-Nn#JS`cnEYZ zv9o?652o`(prV<#Pu?ns3Uy}E-BD!V?7Nk2HT~OxI|KiA*!!(Decv{>yy-1=#NQwd zFAO^3yK2Y^{s)bAyrN+5SU7G%$QUmOVXE{Ja^6vEvlPH@+?#9ffxD;FYtR=;WXTQR z_96+*p=!n^E(v&&JeN=un`jjn$K+&uFF-*wmJwQ>T}Dt>V#@>;#b2iNc))5!m$> zWGnyLGKm4!#-p6np}pY27MpUI{#IGhQuLH9Vljin4-QhyVAT75$zM`>A#$=?vGu94 zG@V0lT8sz0e5j@QoJE-1zEp$`m)n_raq6T5N|^ZZc@9({1bIOTYodu}+(ndNmov;H zzlCwOC`K@}lxL6Z#%bkbq74%F(mD9>a-KWs{{uSj4qwhSm2@CMtJVYkgk7m5ktxKCx@EfhthWXT3%s--UEtp^0F zRR6I!nh5ONLbV~utzb{RhXojqg9WMtEWu#_4FN9V2!oOVF>u+yb~Ax8xD24aKu=t1 zfKf=yWPVfKyTm#ETwXV zhEmDPG)c>Af+A8&iixSi9Fs#nrirylw9#<+Yx+5v-(=R#<$Xr5s^wWwHg_PcWsu@3 z)KuAh8k{0|fn+lJXd4GNkC9x{au=!~PA=^ICj0Jf&$ zkP!z|`d(l3Z2cdf&yxdLiI}Z9AhXVv19rv(TMk1q{r%%FNzNF64-t3@{g3;nXPJjH zBxwlJjx~Nd@xG^l*7Ze5g|B)?JKSNC8QNRWWVMy;jUG@CpAdGR=u+`1wR2tb2aO^cDb7N*TrO>SY^YF-Rp_e<^we5l#(O?-}R(IskqrS5ki~qNO zZclMbxwZ5Rac~-~PRf%1ATJym?sAR-XWKI^kOQH+l#{>5J_~#|h)IjA$RaR;7JRQ_ z8#{2;7(7FJOtTal6wnXVvzbD=m8M=7cBsj9P=muL(-`K&!Z?h#(rf#)I#T%9=w)V$bA+N(4bLaDe$6bKB=%(pa&!yD!7WlPfK& z;-!ckK*Lo;{q(^X!j+h`JSJ?rC<-Jh3$?(LXpi z>je~GFtLVZ6s~=rb!!Fo@sxE8wt8d7LM;^+$L5KUL1b2Ba|8@mhO`bR zt?qMrBJw%oupl2Tw5~l87kGn}%@e-O-vc002dLx6jq95LF zPBu>OFLg0)5MoAK;XD#^RIq-Vsl{Mk{Jl4>hT>Ioqd^*A2ZJ7Vy(*YC0kcfnH`baKvn3+goz_DVdDnpI}{XVZPn%Ns?j@MWNB(yg>j2AI-q|z;={MuK z=6n^HpQiwPC)w<>9U)?n{Fr(A9f@$ugz z{F|H%Y=6U$rR-5{R{Vo>Lcq`pSnR_V%~++gGvw(IDB;tJj0e&g(%i40Gn)Oc>CD*J z8<9UNL&N`pW&9Qj=T)R_Gh=@$vj;ToHer^x{iV%oOywUq?4OEHksO|mOy`#;1QAjE zy%?N_#IIW4uS*NEfG)G_;8h5|1s2I4O3NXn^;~L$i1o|w14346*sa}?h32VheY~*? zJxT#>paY_EvY_xLbm#~Yho~iHR#9a=s4G~O8dRFJO4PiJ{|3Gb8U-`oUI`E?NB~QP zgn8{yvDPM_ie(D0ZQJEIi|wgyYJsVAn5C6*M+xTCclVqQ9D&<@%qHm=W|+`k;@!mb+6Dx`X&{wOuy3pJ7Hg>_(!?-xdQ zXCpvBAtufHXJP(9%u0jgEN4h};x8R$;OE0Gl;K%V#4e_l-|NpB;eiAu89CD*x8r4x zx*+g>`eDM96xSfz8&N7of+huIf`{LVtZO zs?Bn38+=(lxA%4<-RRhdHFgGWp>pe>(Myq1DJUubt-$1*ug+FvV=R)xO34&Lc)vj& zP29%#iN=X4V=eLVAfjB8z3b!@#Ldl1iXQ#J?g1%*mwY2@)9aQ9R64*UCiAfKsw`7? zPR56Q&=e+sRG(XX1F3tLw>Mq@&bzdmiCgI(~6w- zZt=dYm_K-yj(eB;G5cf0Fem)S5ks;7ozV~}ULL6=EsQMmK_1ZrFuo7I>X3F(FMJFX?U#SgNS)W59Z;G$j#eSNTwi`~c)!5Kt!bC9NU$!v3KnIZ{ z837Y8$=B9=GU=i|!l$!rYb7IK6&P=Etc830YM=v{rDzau4E#OjF*^#H=D(*@3_eUk z3-Rt35x%p0Ofr*cv;k-@$}?WX3VsCbp53?GK?zFCi;)Nj?5)P7tq#2{N`14QAMArg z>m5LbM%^#$1e?~U0sRB1?bU?CYL3KtI#9Fx4c zgQc4lF$*^*3-F$f7GUqV#EtUZ+h^LlARF;JVV5pcJs*<1y~=9DS?hyjJKQ6|yltZx z=KD(ksIc(D0oqwulVfJ_?=9or%kG!8tQm*7OD=-iu#ub&5Y|f^{oYR6hXe(`TljFE zjqGK31&!(;a5t9FjwOJ8zsEh(ju?MIypaaQkUQP!Evc3a8}J2l=wm-Y@xYlhb<{&K zcLeM%$OnHH29*_5?H3kN3l(L?2x8DxR05Wv4zV(D@DyfyONZn*`raO%rGsU zJ~N#K-9HdJ3Y@Qoi#jzDZqFIgDG<_^Td zowG2DRfd){1{m?0;vka*%QF1KL$GJD8w`yFT~-#0h~k-`CSHU6O8kAB6N}u-HpI%G zWJW*VuY-Vh$HW;saVL7IlIUozxwq|;iu4O3*ln+{xa4r$0$Ta)%B_(MJm43+Mf{On zB9cCt1FKULydv{ZhzdO!e>SrX$jIe98VGc&ym&hbApqr~8*>_ol>s6B4)koeOJps= zmxEkS$X8wjj1;ynf78-AFysr`HZH{CA^_uG)9mXvnEz;G?zK-=O)izef~nvx*u{Jzdic%=7>`D_Pl29 zXyjE&aNujb#_utf{rKs^Rd(iP&-SV}l}g1pt^#}n^ZaYD6k5(y+O(DuF3sGr9CHiE7>v3w3h=qsORQcnBN%IRkW2>|x7uRx!_ z(*VatpU57WMLt>&s+pv6es5MsQ8p0&uMaxbmr$C#1!%1wq! z|7Wb`w7HYrGi5`F3Jg}FIAbvQmLPqrW8Oz!d);cRX6Jy13f^)-e$Hrxj;H}F4cI@; zL1}3T>GSYje>e^88aN-6Uizm$8eS5b0{{>mJs~;BHm|0<0*sby4ZcpC6|h1%UqWa8 zE#)SWi5LWpf=p6=)6wULqr1y2LS^OME<{}CkKXIq%NjC9fU~`!6NNjzPv55pJ43E# zFBTq0WqPlY_kcA;J(%vCysc-%qI!>30-F&&qVIQX^EBBzk!J1xu#si@?E*#RC7`er z6OpGpR=`2y&)&khUjx7}o~}_YrKeHkZ#pUyk!LRl6Y3hsnoqXm2xD*{xr>Ln)KV=x zuH8d<#0E4Dli)x1e?+A9n0{Z7C2HUIu+?#|RpCf1YcU42NR^I=U%~+2?sX@!o$AjD zFS=ICCLVc$))Js`(xmnJMyXrM+n^N8skl z*)oC8x3$Uge@)s;t;*7@rTUf8FRtsytck0~axYG!Z1tE_I9K&UK zAx^iAN(l-Y3$k35;lg<}>I9Njg;#7gCskoq+ew2+LuUZA!qAK=wYyR1i}G+~^C-!3t{g>~Fj5YaCEhr*2Qs;m@@Mb3~C# z`U?o2+0sB-a7(j@$c3%{?o=)jrVm1=Hb|%TGkT0K#u~%D8rF-ZO(W=UkKqQYvK55T z`k=^Jh~vh=g1xVXv2tZsUVp>d_6NIV9aWN%KK^FeMA3-sAOgtggJZ=I;9^EZt$`(P z%~0GOel!$w7>o2i+b4@<9r4iNs|uxdL(%KfV%UkTP5~N8A!%Sj3N7W z{_#DSf`{#3ZtL*1VhVe9%%RHZan5x+(Yj#@MIH-5KG8D270lSBxJ*P1F~Fapo5t!& z_R8sV3)F9q*gfRmJ>vgnJw2!5?mOm$SeR>b2~b=4jj42qz%IVTQt6b)Ex%Hze{9kS z6(zoD(&&OFY{DkK63qLamm$(ft@u}%uwJGrRMjuBI$@3RFS8Ct{5qm*R*R}W61s#$ z^|kELKjaH|F2VmD&DZI$z_@w-E3d2ot0oObo8JQv!gon_t+LK`R6HH5l~*J?;8KO` zu^h>=#r&;m|A8iuIBZznOxc%wQpn)A(TJNmB6-U$9bVrr@{!B7Dylgn^L2VM4Vibl zmYftC88+Ujscdx(K|OnmK63iJAIImzM=jEjG7wYyW5JJI;PRPjsNaF0q_2ANCw3N|f0f!omgE8Z#>_1L;FfVAB6`0iQ z?=Y)M<Uc;&x zRae&0()r;R7`fBg*T#Q!N z_*B&k%1bPKYG)9J-Fv@~>_L#qP^VPUI~uBq=%JQ|h%NB)CF60<&Lc;-bm#Q+qd#Jk zutGaqc1o@BRH&i-S=mkjLazH+49^%#TIQqlo!Q3yeCwE1QN}Ivtn(`6t&$duER}lm z!Ablj<6g((q(<7{rh9kl*XLJPj>ZKE>|=&G2&$l8H~QtlauNWNp>vItFwc~lqRZ`?NBMUqS5?P z&w^j+(>geCTR9d`z1$u* z4N~6+BvbT~aNpQ}zFVp>??*c-;{GK7!x>oIxWF*Y35PDHeBG7Gv}eUL>$ zw3xQlYl})j9kK*`pIx2$-y-rK8}N1fbC-05sz38gLtTw${ z8|8C`s_=vWn+6H)IW@O43O$wRF#5jwUhN_h+ns1&flwPqhhK&3^yRhEm~ZW`jsg3& z_UHNcJ`WC~%h?yAyVtBSG!QL0PEM_K?F%`acQnFIir-;M%7QME+A>2$_m5~Z7)g6@ zx0oeF`i=|50ixHQsY>)g{E*x75(h;_8*HiU`W7Vs#*4T7aymEv@rbeUu$|-dB^_Cp z@6%#N@ndO%VuBiub!k@OJrJ=>wPdjd+(2rL%~4(go&sECyG>{b{51Z4J@H-405NkI zh;YKiM&LoN6BO8VY!3r?MQOH2{5Lw(LXN`y8S}L_oS4#c4KmsQISZwKIh#~`$_t^d zjb;F#D7j%Dp{Zdo-4zE0jyni+!K`7cKF}&}Lyg;nvtd}6&;>-Za1w@2RF1_Y=RMSY zG>&pEa$HQov4PMAWyVuYC#OU}{#2c+7%uFqmPm%SB|-L9g+3H3#6^vtHnjKdZ}3JY z5^GN52tNBMmRfv1C$5CZqR?hlTQ~3EbG{D%J7&(x<#hq4LrmwEp+zt_h-&bnf8TNb zMuBS7p;rB1VNt35nL^jQ-Gx&Y-TmP$LlV@6HRlY#SN~t!@AjHde4_=UG*lv?SYsnl33j48^La&zT|1KFK-cR<+ zWb^d|PPw>|#0YjEHVibxjK&0k@3#K*Jy?}8IV<7Sl`)ElHR`C{an(sJ^62=}8_C2D zQ1SWVHDAxdQU$`9nx)xGTqv%f=?MY=uM%$*xOsJoH-DHX^zbQvSKiHgx$ve$g#V>C zclPA^uk7bZN}%rDsS+7qK=V=#dZPeCK#qJWYq|Rf7H$xmwY}n%NQlE?X_n&S=EQ|} zfFQIV>6Bj@@$S1e6%c3zXOLRen<%;{4%LHNHq*hAlU2(zuI01EdFB<7uqg&u&115K zHM1mK7O?r?Jnq(c9iSt9e|7;37JPKu-rYOfwpv0sZZ!F?_k_U979SVZU&gBCCnt}2 zHm8E|oJQ$JxvGoD_p|h`@LGdk^r?#&ItS}$AkrxCeMu37`F;0ZZwPu>Qmf~c{<_7> zovs9eOW_-KS8{?r{3cvk>OjLJ)+6~m7Ue5;vL-Ykw1Hs#HTze0+!{vE`=dqK3Y z`72;#Iwi`r;`U8maS)Tv*>Lu~x_r*uh=*rmU&EtHWhR*fG}UIgi`=0Iv=m}B==M>o zE2Ms7wsQ55HfXVji*HjsA!mRid*fTSTdHgW{ZTqHc=O5s{?X{#n9>2Xa^_h^FQlcP ze(zb+Np2Wo?vw-*G5=+6#YKmI#*bYnjXJ|)dr`YU47mKnMI0g@?zsjT8T`z#C*EL; zx|Ghk%`b{?PAie&e){`Tq>b%Y@c@KLgU>8B9R$9&cWxKmx}OYEq?Qj!9S~V-1yqx#dI;1E_&+-eY9RT zM5g_Mv__~Qrc3Uiu9DU<_4otn*sU+{4*o$DOZWdoAwV<^5>WR4Iw5MnwvN5yCMU}G zj**F5KXDxgU2kM^vb*q#xkN+&wQAAlJZ8utcNEmvJvoKF=2PFTG~uqiYnV%cWq|_YI5%)K@|J~84Xe_O&9F64SBWg+Zoqnttg^a<}!js(-r!S|) zI>$fFyUS7bOA|lvKFM7`Rzt+8jUwO4x}$f}5Cwu8Kg|U#pRyS2t#)gmH^HRd;4Rh- zHgoR!?T!KfG{>tPy-r4BCBI>%bhT>!Kia^yIK;p#3#YlZt_zzgz==oAVEN&jYLL(Q zrJbH)ebQ{PF4g{JRt(RAR$NQ1^_Qv{OMKFWJ;>cgH&cUJN+KE{j5-SoOwl-kh4C|O ze$%++VTJ`SvEq!l|I43?+ciTr#8&n#Yjl}GClD6=_1}{g4fp|{GIhTREAD@}Yjyb{_mREz1nc2a+M>Z6*ai~5IEap*0nF@ zM6xl_-z7cM9d7Lul<2z52dA@FJJl6~Dp5g+SJG*flxl{lCS2`XS%e!3(x`{E=p($c zZBJUcZwUbS*D}$BXP`5SK}FWvh3ZJ^7UX}k`SNd*OXsnbbM6i{r7z?bWKy!|dokwR z#(D{uU-xoqX76*-cd#oC|0JO7UJaW@qgWf@$sUnVVD%%oVDJ;x?=kc1Fvw`E*H=w* z#Zu9$!>DR*>5hX3LrH{+2!b704=P0S>N5%=qZt6&YGMPys6CG|%*4u*9%TJ$?Aobh z6}$k~)B*#q1ZZh2IAZF5Gtp=E#FQ`i2@3w6s^^X`R?ln8dp!w(ZRNjU@Kl6XM3=Z^ z#%H+D4dk|G&KId)*E##LeRjj=oR>ZI&g)+o{MQN%XUNgZ)ZD+A&t?Ud;~(9puz7%` zVWI+drhBHCcDCk7Yt;Yd2Wg%O(zn^cw&^%5WQUVCd-k-5f*V;YoC%|!oS7bHB{Gjk zU=@Xti$1JboTk5S*v}-wWEQB0KrR_{)_kEOzj;(e!L4l}L|F8D?tWJL6BHjR7$Kq# z*W^pxU7&7pR_J!^nV}Gm)}6EB{mrPp^z8z;$3v=}$zJ(nu`tDIW>tycC$2sCXw`Rb~P=IdO&KAatg?^!jO;exI7IjfmH-P&o%^ z*vdA6^^KBge!UirP+8tH=?CLJZMZe-B-Y!^?{j%FBlZM298hjt@|k6!^Sn`xEKHvf z&#J$ZF%HAuDz!%ECPN4gN0q(jzwp#@3QpYfc5GH5y-|Kgug3P7A>8PJ6Fv?UHM-Q7 zdZrpn2Uh??Mbd=7#)w7?7BF>2I(q^<6}xu{e?*1w5V88F_pxw<*UJ(SzpGWN%h@!v z#5-YqEVY$mPZ-`I6U0ltKG#|}&LQa+!-y&Uc`avLwK5~37QEK>r2|oppnJa8Lur;I z6%cJ6i#%QL$`2&u4IPOHu#Q;sY8gpVJz@fIw|&A4WEXZS(El4A%@bwc*>(j;p*UQ3 zRGob3C@N1<=v|taTLLzb3Q z{>DLc;ap@_lfc?8qDE0sVHQ)K4avXsNBY2GJpFhIzMXDD^GWpSk1v!pTX^$Z2O&@L zBDRIc(g>W+kRkYJkxt@MJhldyKBK**HMZ03viWxDE@p;6c(INZfUoS7hu{`FN%rLj zJMkU~-d}bKBe4l}y8zPHQ2kP?{up8>jwKRYEQl*7%h|E>?Ej`l)=uiNGfv3guvriZ zI5kfqsIjf+tWi$udk0eoOVr+DUO>(b=zlrsQ5j+)pf3kO42 zHa)|y+Z5e3OBva<cqO<$5=d_v&>1QMR+**Y9{k=?#eDXZdfYBE`mOFaJ0(ktM^x=DDBJ zXw+D(xs?28q_f?lUimG{kfNwU@mVK%6LV2HVU*MbLj#sIXln8tJ;gc{JFbrOLcBumk#f{WM8NIz7J2M@Nyf>Fg4SPK!pgkylzo zL~VyPNNghpe7xS8i+Uw_BxECz&2%^i<7F*a^uUR-0m^kAwA)~+?KlKa05kd(ie~@v z=YWiJdyxrJ(dO3_^Wpcic0C^s8G2X5dKZGp@3-hGJ865n#tx621?vB%XVpg z|GlWFmQocFhruLn%p3fpsLDJr z2+# z8)+<(8A!G*zmDGT<{s}yg;r_GVeUcF%#8XOlueq?b=Za)vjpGBmL%MDOw$%ik--RU zYn|Y!<4nv|6uDH?7aToy+k`MMOgj8A(I8S_&FD)wYmRMH7+4CUmOnvs^XI#he|yiH zpLdJW1M|`L@qK$AphxDP)92LJ{c6nNv2)(plksK_kwg6X75(*WQeSZ^K}-Y@2~FHudkln`rE9-?-Q@nlC20wK-cSM*HGGK)z@|fST5mL z>(6E0R36gnd68pDVQSkz9`npG!>FkmvY63Z&nA3d8gMtu>V|)!PwPr7_QJ}0I{qs5 znj>L7DW{?4gq5$6tyT904$oA9%^5*My%x_c#OcM;CDMHITM)J(bdrOw5q)KJe6T@T zTk5#-KWhu1mTFMWN67#6jAKh}&`_RX!x4Di4aJHU26Oo@B+xBMjdZ_nUzwPbA2K60s4$IAmJh2^SNF<3m78->&b1iKXx0 zjESYkB-q%fO+V~4XMx**a`;Fs7CyEHhl}NBkkoBFG#4So`yVgdF4h0M3M@*m{(mnu4mJv4fd~n9%YF)x7^I^`Gy(AvO831{ z=z&lf^j0_UTZ9^%o9F+I2-p8_MA&!7Ax1_lBBRl@=>nVh;Jp$H$6Jdq$NAM~<9S?GjXK^_Q0QtGmm1O=vVV z4v4?=jxkVU3#Ce1;^ef~tVKAcO+|uIyi@z-9Y@wePNmPJ{w(o8UAT;@AQb!uQ|Er9 z88{*4CnU}=7b`B!*&J+m4w1)Z=j-l-UFkU-gvneV(=#MvyD>suh^Ix*)GZZ2nX;2X zQ4{R|)Kdiv;2KALtu7g6wn@(}(vPgV{@Yr3Vi8Qi1uKutjhB5A#-N{LYv#ts_{;d+ zb3TziF2Q7#yI%~w@>14(m3h?5!e%y0UXG+vPz;|Pj2DcRO7)Y-(KsKhKQAlX&}8 zzwu;LlB$gsB~tYz<5Oa2z!wJ;p=yV<`w9S}lQ52WrV>9G7Ebf>ioZ$0oTR&JllIEJ z#QA8xHc-V&=@muv5`o1!`RY0jYc~q**UAM%t#na|G?uq z$&Mn}DRUmK^7!5$OA=2Wx#jwG8Q#BO%vYQtIAr! zQ5Ghm&ML{Jazm|3!Qn&WO$~>=2`UUAhQFUQR7d)_A6mpX#6Z&90tVF?Ni;eB^_98` zH!NfLcLQb^|7Zm-oWJPZfcAp1F30)}mc=hTL&O9nB9Cu2rQRy^O1*ViNX>BO{R_C` zF5O3wSfj!5YO&CLHcGQAewnvt;!vW~yVSe^!B^@9 zEx^)xKD#UJjKmdBb>YiOqN5c+fo@bbpX_R<+8R$B1R4xv1EDqf+P{SPWuVqZmrWiL zSYc1E>$WK#qRu17h8h&YRMWwAKsFMCfi%@lmI_9(*8*LhOOk$d$dF(;acRST1CI`4 znn*!awSeZEd}-g&f^wi!Ck*3kF1~NbntBY;v=2r=Lo8=;d5o5mPIU{ITHfMRsFQSL zN?YnPSlg-jDrWjrsk!!Ta}Q~eUHcggh*zd4Qe@VpOv^$uC_*(CT&R3r6vbY2>7C!joFG{EXJazyP3?scd}E{i|t zlbq7A$;R!8dG7Fz-GCRsr|doOAhNUNgE|yXcxoF-6>+&kMw%DZ6?Zg&Yyt%?0)<{- zT?!6$!O5YpUTzKO1lx+d!6s~XY9EF6>U_MBTQ|AAWh-OiRGR2>C7rA+A~ipb8+0*A zbLX2>uBmQ|x3e@O>`Aoq54dSNn3^fX%qz?=l9*JfedB~}NVC9!Ce`;`pCUN+60XBtQhA=Tr+JMYxGJBmUGkI9i=tcQ~a7RMcKJGxBdC z`7e}%zQcPju64JhL6hU*L+^lq7ws6nf{|tMCjUjnS;ihrnPZe}D{QcS+NvTLn)2)r zE5{M34l7|nPRZJ=xoh9JeX=izEV}dPJE*D5e^xU2mB5A z%s&@&(O;y^8{dB)a5r!_Je5WZBPBmD&C{xP$M3x{eYw_{D_PB|VgVs!W**=fT=I6a z*R@R(sxcJ}frab)#$Wl0;6gy!$-?+@N!Q?A*UCJ&boT_Z25j&F-d^9}<-Y2&uKP+R zmjMD=^t&8(#=`axOEuC{aV%9;D6JqBknZT-dC(i6>R>Kl$fg$Aki<3W$12j?a65pm zJJ6@^I`FLkOtLdRjejD2{fnq>h!rO_0b4Rmdl+~hi2fh{buz>N<7WHch{}~m0uMFE2G+^b0AO=E z(0Pp%MLz*70z5rOQA6VW5@o1Enu8F>pTp}k73 zG^P=|>m_uQJO#-2~D@PfC?{1h5~Mprd0}>ey`NSszBHg3J=nSI8#8VdkJbWox;b zG&WH?;*0KGe$v6K=WhC_IfYMcA4%8!BVr@DGUd*cf=QFC5yp5&<3ZQ);>Vq2PqEpU z6g|v_X2bq*EKxycE=LuHxNQI5FRK^^TghkPQt`r+_o5C%4|R2OLxC1SJ3w(8?sA@( zWgI>X;vQV!60#iJqc}NCnINXgnq+taO7)$RSGvNF(N8{m)q_M3w1N|28JOfu&VV=Epvb8?hJpyrVpFr!HDXU#0r2VpLbQV4>L&%R%x>`<DxBius2r)w-QUr4cUDKhQSvm z*lII^0#ah|#Yu zE6M40ZuJnqX={JhM^F>TV}CS7rXsJ?N1y^kaT*TVpuDordG5&R`GlkQ(I@%;ms;~3 zn4ld0LxOQZ}1wMWSSWWel^1Qt7n7tB+kzY>gqDA^#-H%VKRYhQubb7m8$$l20A%d7%0sK$;Y> zl*ostY1BSjO{3!~wlLmav{XuEho3YCF~JkvN7%&KNaX<>0Y1JIi^LQxMX1uE!YWl0hfDG*D>Mhs-PsP};Bo+nO zXQ-`O*(Ke(`a38XtP72%3M>a7LA)k*^_wwCy&U5h>wh%$@#g=y?)m!SobB}a~E6;^_Oxwi=#CaSdzcExD>mckOXTcmjVZ#oRee{Hr?}R zTwBw|(TD( K}lCn0g#pEwn%v7^qkgS%Sw`~L@_KwiJ4V`-9+6o%fj)|LVNe^^3TO1oX)#g~#Ypj0mh zZ5`meN^dHIM1kGQrgZ}=B1I9I1r2!z!(D0tj6$-bFvgOApw2Sq`~eta zA`*E5M#__Oe_#|lFmecYyc3PMcP8a^UOns5TiSg$$QF$x_9og`frUk>OModai_ zo`kdK?J}?QAiFt{+g%<{%P&-U57?xK(zGh~OaYtye`M}H8lbHF@wHkv?X#P2)g5r@ ztV9I#jY$;C08$yD9_*%E_?+Xi5hkK*OaeVmr?czHa7ri4N? z?*&GI*~STeF~UT@$p%;o#pugvTW@#SrG-jm76}OY`yvek(9-RZ?$m; zhm=kU<9#SWbjn0Pz4rHQ(?;v{taRhD0^|z9f8u!GZ?#g3t{5XN-0-1oEa*sL>Z&~R zVFm-AgN^#j7xrd3WDi^yMd=9_yr?s_QNUa4qS`DVI{lRKTIQbe0||se<=f&1`_4+p zAaiM>Vvt9Il7#j`apSo{^V;`B^9oP}G;K}1AG#xfmZAp=B5ddiNG){7>u$$hBMK!p ze<7SQ@N`DvIO|$bKG2F{TL?oe8^_zu>|eH>r@PILg_qkVb2_&SwwOV=cUZRSp;eaE z+c?6uvG!2UAr<6>XJZFXo2E$98yGMJH^PZ}ZI_@qs58Ar+j4wWpq%27f+3 zxQ18{R*WBRFaEs1vIP!RLevX0#EJ9i(NtOgpcI!G|5;Gyv zuL^E1e(}$bed;mWI&r8$Ng{mrzN?X~Z6f?xJ6*IDUs}jIwDK|i8?GIDfR07 z3bj<@3ujC-8u?s>?%Q_?`rUioI>t?d>v5q)=WDg^{*D}8{6JZ{F}V*rAUiy_e+KX7 zVRd+KPdQtB`rPB+K|5`RV0(?#kPbhp{J}fnKe>M8aw zp}p=hKip#Zl69Pilzu9-j#G&N3nZ6c!|Z72p?#R%@tw_NLK4aPcGHxF?}cp6ac#;v zzgM$M?77}Q*Z4M=Or~wIDh)I!e;c5Z-IT*j--^8KXO2t0nf+gquf9t1886eDRnwYc zd=R;p6+YRqOYW1}7YM2c80ydQaCYfy_|0sT%C4aMTFAqz*;yTRX9_gb zQRZ>mKG;j`e2YLhSZqr?i1zL&=eMstb#?UAj{4BTz^gh2LSu&pMLCHw5nG2N=3fNa z-U$eszX9!qwpo+$fD-{VlOYiklb2RLf63XYE0#Tg0YRJXvhLs{N@LWu3tL^$e?RKw z*oo6-YY#z8S|<5@q)0}=O%Mg2Pa^mKaei_(jcFiInj~>BUk8{7l(0BRM1s;Z3FfQd zS9r0J%MnS#+tHZDG<@7hwUMKK3irguS%<`f8~8G z8(EHs2$lcHnw?#oTKQ@=5-fB=Rok~yP$nT7{hoho!}tGZQ^q?O#xy~KQTV5bGYjE- z(G=D4I${z0@CR*X2f6=7p!cAV136veIlkI)&20)4hQz_i3P(2H|LU z0|ei*<>pe}XB4rZegDsxxFz35$w8m)z5V?B?Z-*E+){v>s5x z2x4gr9GIx!O5N%-n28CIXwFWQ_N6`TY~k$A%+DKg#9DK97F2J0fzHZf7!aMPPMgw z5|o0=F^*8mQhT~RQ`<9aDET-u|!a5F`zJq?&v?ec|>y1;a>kKaPos+7y(|XhcSrsuN z!slx}Kt+srl=uUd-Z2&Me_ka0Bs}KO!ONja)z@~=drA=5daqyhZjA%PQjdz2t6A3_ ztLuo;Mt3qb;ESaQLo%JIYQPsqoO6Gmi^kBaJpsLU^0=ZVQG__fJ!S6Rq5qSQ@H!fC63MdhNfIDfjA@9Z^H@c7mQ?2S@tZiCx1nrHi|E}++-TvSzIapcXEcl zMQ33G!2yA%4iL=umL*X6gSLf0NLH+zrLs~8T16~8nFI4Rrsm4K>!IogIRJrRl<;;& zK(wU~RoXyyry9KTf3ZOj_Mx*E9Xq07_Tz)4)^0gEvC?fh@9diM+M*-EfzuD|dg7!` zYnLmlT$sAl&#B9w)^78srJcKG=ES@`dj}O@6YNYjo9dx(&sAAGc}K4FwXn>J!bf0| z(jAhneeYch(?_?L9|{UIo&EtOpq=ftn6{JjR9HhW7NzB&338H4l;)q2q zARP5R`7}TI3nSJmQIqk269P3ilYd%35>0R0I1s((SE!dlDj-GtkVLtY(OMOM|GqOE z(v}>x@CH3Bum{89a5$WK?+wW`cnH$q<5l{T|M$zQ>$|K7R8r=-43^uVWQj^ykgGf? z%RE?ag1^FDYoa*gS=ep2U(+mwA0xv$Vqw<~=56$C`T6=zicutyCn^&`%!{Pp1x32o z=FqoMEMyj%TGL1OH5Fpe#*Mar_@AGq2UD#hUWR|u@Si9v!m8g@tHwF>dLP9M{veq_ zw-HyN(Hoju;poY4xEtuJS`DVJ)^5k9i(-hsuFS4$lPH$C443r|V>6fY> z^v#z~i^bicT~kU(_M0t#49`x0m+&tO*Wa?p!tHSjG@}C0>ZbE?fjFEh06m{60FA!y zDHLLki%*!N{k-p0mOBOD>{tOatUEne(7gh0BAO&y-kRk=}2|zDbz|Cd@`whf#1%uzv^<25G=c>S%bZFy$CTKw7M;lgJEm4$*SMR0 zulve${U3k_Qf~>Tshic%bZh#4-Pgm}SpW;(&LQ^x(p66T(MJ};>8W@TSQ z_xQ|uI12Sw2a|UCrYGGmRXus+q zqbH5G(c9|Kn7Oj(IrH)!oTN!?EfxUz@@cP0tmdNR)lBm3+{JTzf1R_rYag6{(_Bj6 z_noO{_?nR=oYD!G%&1toa$+#<#ET-6@qiNoHa3&dxf7EhVtIe@f^+7y7K@wB!f|F}zA)A>=gi_JTl^U* zrk5+ug^phD(xzFiWTKTpI2w`BB>}D0sj3&oo-s`~w&8UGuTcNs1;20_5sNEI~9j1ba>m>R+_t62t zL$TY@8yJQs+JiDJgHgY%#)t9Oo4@Gcv6o%DH87YMEl>9?P;0rJ~ilE zp+!Vb86BGLY*-OEk`+x`ly`@s+0p>%v7|?UPar61U8J|WJh+o1-Xv=3&a|Zp%L*)9 zfD8#<&FkDdHjGs$Zt~VUQ$K(1%-FElCMTU~n2E)Sv=pWf$|l`4v*|6FmVBI-2pB%c zz~+%#QC@U_g6W1Q#k@;>#-KP22$a%i1D@RlMfdrAReu@-&sn&$60u-XCX1DfnKl8G zKU75)P=@g5atC(o5P+_Rq`kbpy14k|;~t6uE92tgx~&O%auB}o(M*3d6Yi)qF0%}m z&;}`d(A0Q3>pHEQ+;8#bQ2PBy_wx;Wo>=h;_#vR+^ILqMo!_+C#l;5zgsT35Fb)n0 z`}{XP0e+wPy(CUJjE4Y1J}IKvhKXuCHjVE<)zOkCFhCxoM=`#n@R;9Xijv9$vi z+EXWl9z(E1gy4k~CHPjcjJD|rr9tA$0|%OXpVmGe_%(z9r*tK6Hd84x-Ir&7!gAn(4X_kk8kcb16mUlsGNzaEZAS%r++MwAVB&R0kD0sp_ zH>i4O!%9Abmp|77{6EkQR`)sVu7KS!*=NjBz=Hi$U;fQ(RvF1;Y>zM@IB8vMz)y&$ z5Wvt8B-9bWcm98|4QXC&`VynL=-!We^ly!?kUgU~@UCjE!m{hvpH)lKmrK~Y2$CTi zeRCr*uP~gXplJ^G`H{J!{GCa(j%zSoL&us1WS;53B~!6G5o&-UI{*nmk*A~m4*GQB zDSu)RJ{0YCLT2Dw$ZD!Bl0a`@p-j3S<*2uWC|h$*?&*I4vCbky3tg0Pfe_sn6XNK5 z#E8)Al{1WJ|6h!VeDzfevwTy)9q((XRJqBu%8nQmhlaxOaE23n>A={izn;q=moUYL z1`h&sMh2}E+;^{hDen)#ps{&wYMzG&c!nzW#*HqI;rd{hzz%HE?|LA1anIw_3T7ze z^IU2YrU!qB^sU8gH!6gjlqf2!4y`{9?l>Y7$A{ziA+m}GtMaGJ;TCS*s&BJH2AtDY zxR?_qyO^*H_c+2bz&8M!W3PQi(1w};GxWz^)U&e_J&NK$U}v0y?CjrqJ|1)hK882X z$7a&T`+0*4P1kGCJFzg(L>cH8l}zEeYjB8+@&A7clCeylCS!mVtG}6wHFHjUDHTgA zAE#pO^hqj~oM|^)$Oa1jMCT?#OZppm$G;%)1(xVx%4z=9a0|T(%RC#QXUF_Yw@}1s zD~>1=k;V1D6((u_aQ=@+X-OXvv zlQC}YMt8G0PePS(`-NSOP5?f?!ILNM{T4IYGcNv(dq0@aSv1q=*prP;AJ&mCAnzRb zLKyEpKq(yqlL*JG4GOuOEcxZ;*+26a4_uS+fD-{Xmw`kD69X|YHk0v=DU*_EOaT&; z-)UX}^OHVm838bpSZXN&v9p3|76T!HoJvpyKZZT5fKf9}gLT4a2(!O6Vabur>+RWR zPjM%{lktEP0XLTsQw0+PH#RhrF~BO54sJ+WHbw4_cEvDZsjDKzW8h1m_>+0rnxNwho&`?g zWeaSIUMnConqZc)ZnIp*Nouhq48~O)d7nPdEQKNpaJ4Q*gSdY19Z=-2ZsxL-{;gwGP~MYQ(CPB0ZB7EbEYomRM%9mYAdOv z+9-+OP*d+Xa3ZcaN}^_|;-@-Daq1{bTpZRCE8*A^51ncoNqD5nFxENMUXvMcT~agu ztf`lVqowZ8fAyC7fK9j@{#+kv_;aHqD%GYs2qy@zj+%%Ft_LC`h0TG`YC()JKvfXo zFq{krH$=}4?l@@<9*Lw9qK0KLow&fVmVqmqff5b)=W(diX0ZYy>IT-X*buhyA zxS5<#fnisGK^-HJDlpF#mIWFyY*ob*Twz(Q;>4vY4tDv}!LV$@!Lz_F%PbvD486b} z!0f3R!T@{72w}`|3&LRYP;j4{`@*eLg>D8<6Vhd-1 z=Li-HCL`?_wo_KrT?pGsR-_)nvLUxv3|K?CumrJ|M=V@4uUxRKLRdoxD6tS$C6`CC zrPa^Zm)AG%K3{xVC%${+&BbQ3zPU>G7Jj+i{Q7Qlu~{dYFHEcR>#I#VJ4>r`lpLXo ze`nmedN0!Z58`*^;g0vDZ!piWKETj#lH#;{%@s@~TsbqgiN3c3Z_P0w2+j~aak6~NO-qS-^vn;^k4~^w@&FC$Vb4&C{i`eDKXA!zE`8;=sK3qLJ1+!goCny-%FBmzxVB`q} zBTEH?B3O9IE@Clr(WCzNOa(Av5W3F7!esweW<1D&y|p|j;9nAmo=}dye=mm}Ek}ET z9PJ5mw1w$pV63&1_SS6$uy1EAFQI_$?HyT<-8=f%J`n|;%hWanJLH^#kG9W;9?gfv zD{=>WKPOh-l=YLg-GjAsxc*MSs?k2HBgU%nV^*!aM3w!}RcE%xhsn`=XuQgHu!sBJ z|Ff61vd?Nin$__HR>#65BxYGUzf9lzp=-Cv9;>Y$%WC5|t2@|-9j;{mkIpyjf09rs zx0CUJ6PKZu0TYwDc0PZ08kY|V#)irRAm|%ID68EzsI@D{9pc|}ZKrFqMp^(N9;(F7 z{W|9!UpI@EQ5L;D%i8Db+1coZ=23}wQP60%h%hNp!Dv*J1>(GjW+M6$PpveSl}VaY z66=JN@qI#gEREaA<66!2rdG?5-r1#wmtZKxQZ~UtFT$2x)$Mw2!jHe+l*!JwUE;U$G%!^!ngA~xvbS?Sa^%0 z&on-lN`NnZ=E{K7Db5gQCm8_QLkh?+9h3qL_ZG)l9x=X$2E=1R1`%F~@6}u?w`CvE z+0r}LO3AsEB7}eVQQOu3=oJod?zCP9B34y1Ro9RVxbcLZa$olNeAroV0w39R8bIYI zX?I2i<4&D9M){aRT5o2}PWD737?p4eTBG_vO_BnDu=4b9peHP$+&-$Ic<ElT z12`Q*55g33Ev*DjAwEQO>^OS60+j<49s&W;5a@b9qyc}_zwsdh+)6#EzrUCSwXwUZ zmCGw33~1T6$E_<^??n@K;BYkdH}&I-x2ruGpX1*hm=2)Eipj(Qvc~h}_7>V~D%%4q zyuJv-E&D5wO`Fec8o33)?Z~NYt<|4Go3E>;>5fW(<`nj1vG{m6Iz{GC%_6*%hhqq* zDy59XS9*W5(JENgM?Ph&x8Brk0g|RQQS2%n&%)k;77U9Awu;+8o7XW%%x1 zCzFrX3|0SUA0`OBWv^E5(zW5jC0=BwpvDD)IeLVtCm$|RNgi&Q?x7jo5C*d01vDds zZ)Qa# z@-UiZc_xY?o2{$aAA#*vUzhVmD%0R?wbiTD-8>3-9KX$-d z;TeCxc1Kg{SN!r#&R&_V?m=MmMG>9Dbc>%7=1A>9X4LrP(!q`sR~$n2))e78 z-lNz--k!1=NiIhD1qwpt7&@l7f3Sur!|a*DRlIN=1qf94;K)S3k=ba5K;2G_3l;8} z`b7MU+6b2G>(Y_HSKx9O$JFaRlBorl6Uzcwb2#P0P75f{GP@%oWQKP=MtR&rceS1cm)`a1|G1BFMf{=5Fcy8 z1*rAO((cRLB{6dMLs!ECKFVvxpU9n?VQPzsc&zP?2^Xgx<|!s|t?nB)n2c&SeEbz) zp3ErVmJ+PXz)UPn30oH}&yKuZzxW3&78om&@qiQoHocTEZlL;CawAejK}jm zzZs%n6GXxLtLT~Mo8{H(n(De{{9!hi8M%QpP)CHip(ogZ^tX>VIP$y*}k z^tr)wk@P;of+aE|;n!Z=Y|cZ-AARmxFBm*J;t{AYy?3UZRMk}m1DBF4T#}(8tROgW zr!=0oa+giH>1mDATYp0R2w9PQ;pE5R3PeC1>}yQ!{Q|vt(iD%f8I236*ypXQ#;#0% zt4r|45M@D+<7ov)^bY6d!Wv!rl$01J4AMG>Yz(~D;Fn{`ZSE3@t~?ycF&Fe|6iv*q zi{XX>dx6`1jz!EMlCC}Gyv zMD7kqD$Qci141uqu_zh?{ey^b-L|_8me0Xdwr2&+uR1MUDHcQPjdb1SO>3@ie_kx! z?CatVugLJ_3g2H%*>>i?IaP(-Q8RXmUao=i9PZ3HcC${#S$*5t?#i69&?h85r}Y(m z-)|u*P~}_tY=6uV`-PgNZ%YUP`ri>J@kcWWsq^>)QF>}D&lp$Q^Z1HcB8oki>sb-5DYDg+Tmhq}w+tDl%vVgsiDzO2OOkUIrP&yl z-crM&OCPbXT(J?9kTF{i57uMN8gt$unS%<4ka2i0c7N+~<}e3An{s8Fo%u5JeJCKR zIB)XKPoFv$)Lq_VpM3&wgiG(1SASh`a4`zFpUV=u5~?gH4p*N(M?nc^P`)hFS#aNR z9)JZ{Qw+^M_;~d@&G=F5bjGqw2Qp4rtOZ5sSLc=rU4p9ofS?9*Ec`GW8)LMQN~@=L z0it0n9e;g(r#*=y7Re``NUgrZlSnfm;=T}vbvxHl6w~-0!oYy#CA`Zt3*Y$K7fyx> zyH>oTG}UWAICs9B`clFMW>ZkoRqtHOM4<`lY{Jb=F?pyFee|hC78- zyMI14g>kC|*!p<0n7U*0W@GH+VsX7{KbTEdik)tF!BT#K;eK|hfMK4-+4N2!d4_3_ zJoP&TQYeo|TsQS$YC(u#KKj{7K2FsSXF3yuUy}(zz;d3#oa_%CQPy?DeK!#8JU z*8|Ti9&)sJe6`AzU;;+nsLCPvt))8fWpQ3JeMLmw@3SwK)?WIz``*|`yM^y)*g>kQ zwto8nJggq$A!cLj*XtWdvIdQDN~>ec1pZqBXhrbz+NtDfbOiwPZ)8(F+zMrGWRvxP z4+1$dlhL^oli!9rf0U?SX)&N{m!W%TgEqq+)?r{IDi-QU21UmRhW+om;~iz$QQCCa z9t?}r-SO_b!EJ_g;kyvC!7M5kUxT+Vw z2Qn1VawSBZ2Cp}27?!IfPlJz}w$kSO{L<*Ut(4Wn@{g-uf1Y2Y#i9tyER$$1TCCzE zEM-BK-sn$JB0F7!i82k^?wob-A%YANtsL}S1h^`MJU)=?_rh% z6VG5Q19d%Eqbkd5D&<;8b7y%R!1X)sacgr*nlxh1N8Z5G4 zXzfnfw(o{B#54mRs?Dw@Q}BMj))1$mLGS+4pzAG7ICtQGyIg@c+BChnrI{A|D+2&x zwKeEX?<6W+?~K~;(&RF)JF`&c7fQ#42CYnmme)toe{p#SYhz~;1wu&>*N)}-_t)906&dsfPrePSFPKj>d~dU zr2}e|fh}NF+p)qhv^U+YCg%sJ6q&}sZ%YVV&t-FK$Yxt(2w06W4ix^aNG1`%4{Qt>5M{Y>NR7wKluvk~SJQQmSxbSX zowMr;a8V#Qn9hq$zkj2*-wN#qZFi=dA?ZYfNiID}1NwT#Vho1~93m{#Hom4Dzi};Y zecEZbckecvBh<&tG`{X06zUN{AmW~XAP%^~X3T^4NC*3Npw!1u6ORQLm0_BU$55j- z!)%BNNC_|XwB$)p5@k%;^TggG2~hIvN0&cH9;EPL{tkJrn)*q}On9HHRd?fYUK8cO zE*PJc^DaFo2RaL#=Ba7H+E*)^h$74Dm@|mCobSk2M{I+By zX&H*+RI~=pREF4tEuk{O=~wo$Z##==c;(67URr}`Acen3n(N9YFQZ0Sm`@{(qFXD6=rj#4$lV0xVR+mtcJ= zRlNnYrHIGVagQacOpUW*(yU06AB#4z>}xa~hp|kLXd3KWD4w$U6#D**{-HJ?#2;wz z(W>e*oO^ctr+qQECmyadpgL&1oa(Z<*U;*^=~HXP7a6MQp_SgFGBVVB05bTV4`mS3 zP2>LGU64NO0 z2a02xJeqb~GRKp$j52>hM#0;L*F-0*H-=?A%ryde1b2P$6-pCDSj1zo6RyA_AW&o{ z1>|DEw#LUI1>XRqYi(RU-_wYd1t*O%#fZ|GK8DEwPzQIF{ zi7*u>pc)NDHu!rme`|0Z4LtBg7QY7A!%Y^y8Z;-86Y$-E>W&_7LVKaf{TGL(zdbPn z%V2j)d`c%w8qoEi=X^fmz~OTMeJq)w45sd~Uec zx)iLdu}c9sicmru_DHi5XQe+7(LLDR&Ig!%aDZhc?|cM(retLi=4t*f&gM9H*CXNK z3iO2p{ZPE-n|oMrur#Q4#xRBLP!H=(nSZ>xH1oW)@l?M7wbVj%KDRMbBmY)iE6U}aFdm-&?a?OC237?`5hif^D*lT>nb*-HxUW4KFUfykctxJMLT1%LCo|c)~mIWi~36 zp0T>!)1d3AopGpAg&felJN7O0>vn%|{gD}>32Hq<*dd1exjSliU4O!Jr?;;+BHF?W z`A)l!L4+)i?%edofdLh%vE4#J1lUFjxWEJ;gT6H<_!C{N#^gJ@Oz`FY@`I`i3`v=7?g~x3N0*)9=yQT zwlq9HqNk~7)<3a#K-7VMRTzIgH)d;*eegrmR!hprWSpEu1$^@0w4f4I#CbMViN}_+ zO5nPyHwYd8U2~{?47mhtim9qk0QYulhoS2+a$SUz-tIAs0AMXel5o>BkldjVg(mzhJ^ls+ zER%r0__`%1W9PhXVZoDG>OUDrcuXgGwZOC)hI-#V@$2)PV;X82v`zHi5*`j;#9yS@ zMu1>E+A>3Dd9O_ukSTvIl?WyYx>(SGDB?_xH1$BXq{=K-*@Z1Vg9QHGj7<|;GNNo2 zcX45AY&r|ZmQ4dPj)p^bY$`f|f{LPp^hAxAMBO9mT7V5677X308)h*d8BqJZCmL=qe*QQAY1_!iXHz5pDL9*KW~ySq=WXDUBMX|MqBNiR}opV1H2jk!E%@aE>nYHuNlr(F7_9%^T+ zzmyvzq)C9QYe>V{!GlhKHK{ef60V(J2}d-m$K)C3D0#-7cQjlMX%|j{Uic_OO>0j? z)e_8AyvcR5Q%X7o?NDiNhhcZ~x|Bx3J%mhh3bSzBg1vtfDcJI82}HgW9Kfpd=r))f zu-Dq)_l`Q=xSS*XX>tU^a3qPq5VkXY0J=O@;3ae2_IQ*K(KGUHfOif9f*n?jjtxXp+)u|O zW3oUSM(BSM@=rWlW^qv#U&DP7=TL-BabJXYf_oYFVd@h1VKMN3h5LS$qkYWEff71R zE|hb(3q=PN3gxU&C_y&Rmph{7urRuoQA21cNA7o~85U(!adwX67#523T7tEd_^S47jZ7YKjof6$C-{0P2~PN5 z8_=4E!Sx2~e}@xk)J&6ACN_@SmWqG{xSsuukZJgxKz&2a6iB3s{)KicIY+>C%#kd0 zJIKRZT7B^RSYMOi_$hGVM`*`G*xq+XkTQRqMFbyjk@~0kP2>L+nr8m?HNh-jJP~Q} zKNqXcr%U2G(Px8xTBH0h`$}{NG6X7k3DdDct0A-~5PvKs@aN3=4ROeC80ySPI=c3n zhET+X8!$5e7bLu%cnW`Xkd)^HEvSU+S`h-!Tn+J(8t%AA@9_DsoBAJ51J}zF7hr$) zp<0*QV;hR&bS#cdW&d}CvZHyW@x<(Lcw*Ml@sI$Arf%tXh>yzWk~-r;Hk-W}+q&lW z`l4{D2r;)q9pVro?vWn(E!whXDa)ypNEcdQ5Mmbn4sdmNcu&C>)Q(Aee$=k_LEYar z@ns>Wz6_p}=NaP-hDcK8nPVINoA^LE`^R$wIvSQF4O&&_|A!Z>T$!Z0G)WabS<}ul z@prd?$55~2GWTIG(XsSl1@hS>;e1vmvpqlFzxh9pg)B0Yp{El8FqeTu1rw8Qm#u#? zFj1bSDp+lUJd3g{4^pF}ESAA)6MPDPu}_PoFk#(vcC%PYCBwEW)(eq`pJ}?Y<>L8YkFH{Y&lnn#%ur0MFz{bHFXG7djfi=~oT zSnT&S027k1SR`S$!%<7CUCqy3$t!^6Ii;_v1^nioUj!a78Hj?Hx!vIda)6BH)=AQsfKm9JznoL<$1p zUjG{FxUCPYCI~m-@qi*8oIbXJ4GFwV!GRbH8G~6JJ@>X~-4GyESz3E4FfKT9%EK!P z39gJoA`{Jq#T=4+7!oI_4~Y{u4hb&pik5^>Byt()X&{COkF`g*aV~~=y`Ax73f~*= zp*aVtNT|$jhyV;qv3E2f)g6Bg)-^Pog4UVud=;_!`Nu}iXJBm(Fe;^ zM?z#{Ck*o%aWreSG?8?f`Vwy9enZ_5W;SS%2X*xwOJJrcEAMNBam}#aG2F&*29=co z4#>s;e*a;$`tZ|Y2?)%?6?lO^E*k5PYpfk5QQMXedtN#agSEGg!#scI21%l#EKw*k z%9SEfNi^Q{X{mKefz=FqZF<;i4|^Ce>|x}L)EP(GL0_LiKNaCeXS)eMzpIM<*Vb=* z#x)mUIO|vyWCxw=$VNno^3i1vZERKHZ$Voh@QcHy+SN%=r^m2mXZ3d&-sGpGMC3({Q$o4)=(m>BEr^ zT-V1vOTub0N}5o{cVcQ7X%#71uqxxGCg7M}j{ZnJ4@+cN*~?5{NY)4DmlnM>iT&RTypMb&O?^U-$xyls0SjA${W z%L{P?YANV3SF6l4j<7&+G_S-_Mro{Hilc$F>;wH=y2=WNGCkVnsbLDWn`2Y#S=Eth zkoYCF;E=-+s+ouHm@ctFbM1zJemPU=*wNt5dVlntmkbZZ6Ah?~1+p&MmKs#2(u{?0 zoQ4cx10a8*Gd3oWMY8t-2zkP5mOHedm|B+SI3;Gi-KZ@)|B{+)Pw6ml>i>>OH_(yX zwmgvAHpe}0?uzEocHDc3ERx2Iox!R=Nz}qAqO`w9!2)UozRipZf3TH>Q0%|b8{U$z z(zrDAE6xvqUvw>wOO~*1Y~eT;Kc&Fq^54H!NdJG3eKdcjCJ;B>|7&3Y_j4ID3S`Qy zSQ^6xtg?uRBnj{E<3647WqUjvil%h#g>R_Gg!R6G=h)+UbFmkRaoOb2-Ohzxz?QVf z_pWrgwIe}*1eU!WDaIA2`O1n7Fp|c;IRrXOB9Y5U=jCm}iwdN~%9sCv1T0kp)5q<# zt!RJg*!p@{FmV$kRS!;VBp95d>ucTGF~PUj(Q{vGF0u3N?LTY@VR_s!Id02p<0+f? z`u)CMe`d0NfURTRr3t#zuRpZ#0gkctU4KIn{Ka<127e7m;cvDg9o;|0QOVa0V=BIHk97cDXyv&+zb z=gKXUJdZLX&Z%TZNx11ji_&xD=@*OZ<8p;*22UA26fGo*TYB&VOVy!kF>koFU_pjx!FY zYh^zARX_{GeK-OSVnR38H3YLQAY|U@7vc*ai7S<)uiCKPk8P# zFLR&P$u%aKGe&UM40z9wwZ>aZi~+rq6qB-XH5p13C0X_d$q>&!{l>f~!x2(q@){xP zIrG)fd^s`SEqP1nzX$I-@gL5J|JUdsp$51j1)3QOe0wK!0OceV zsk0-GH2y>eLJ!M5^Q}uK#^!c7_yb)2#}T3*AZn78=?)EDkZAUmS<;Q zOktb$rCWpGeO|RMU#~k5bV|=JZC>2GuJi3(S9ND+pcjyVYOh|={db!|(-5V+xX@~3 z^D>D=0LCt5B9vnN{#c~3-&WRuib}=4ZSa5O+l`@vFAJG}`A#!pIdNmEM3QN+#_?kD zGon=lw#uF^-)@O_X+8x?*QO+yFY|S0+q|%Jy9HHb>KD1Kn)(#a5^z*rEa32lUO0)k zx3A~`oyL}|-D`8zv}}p_#}o(Twz3;q z;=LZr^rymiRy_85CERGc}4yJ0Tqi}=Ur8hI&0^Y%rB7kW=3=d z%VhBMdPb}kNf7r0VzJaZ^?z-w=?%{2 zm3r#V#}f(r4h!0$!w($>O=qqOGLxO69)H&?YklOO&hpo(2vqnK|3sumf^W0b_NjrJ zt3%z_HtY^~(;3JBe&f0!vTIEa6+(R@(;`#JG%|KmVMS==nzZv@->B)h0j8i~l=^=` zGZo0{!I*lG1CRod!dwtRpx7x*v!!ld&iKjKD0VRs|p)oq_`2n!N^mv%e#(aS%G6pqUF|ze8?TJ8o2|Vn}f3G73XN8 zXwWT*a|<1`V~u)&U9)3Frfoc!#$lh^&Hv%tYv)-o81$WZcGc!}cV*g3V|nOy!{vXv zJiG659b#I}6avf-HOvo|FwZ>*qJLq|5XYVzHV`(L+wPPCi6>x^OY~#rhcod6N{**{ zOnEHl(|Zy`Y;;lVUm&mm7cQx4(h!ENoT45U9|x>*1%O7rSi-LTn%x=u+X zX$De$-0;Y5T4qN+fJFmDyu9pZ!pIJ!INH%o`I|alZ_QlJRn%%syLSzp{eNi6Lz{1@ z_;Z%Qt{KH&^(Ch{)#0Q&6a`EL!SN2D?Se3XPm{FGgj5kJphYM_G@uUu%{E7{sS-kq z3njrq7wi#ggc+=Gs#D&jqkIC(q;kW=F@8J3XITV>p3UTHq+LXV~d=K>ZpCMe4J7YIg#3i3_6P3_gc6;bk_4O%T6gbv*sN1@#kH?I7 zq`xD`Tvk_ia7$<7bbo{G1QX*y#cklr0+I@ZH3z=9MXDSvyz8Dd zbus2rvvkSda29WF-Hn?EK>luU+h_m*xI*+!y?Y!7S3}&UuemKt_V9o9VA!2MtWN$u zL39Z%xBrCzl11o1d&TbLShbh$P88 z8AT$3LUO+Q<(OrpY@K5TL?OUU8W6M2(`lAId|R5XXsdmXismhe0wJ>pmgp?~21{W4 zL}@(w0^-6;<6s;c$fSQ|9A+70N)LobpMR!~;F=}G2pF*kb@C!Co zNk~7dK>M$1>Y8Y{uXQfu%3R`ajVM;UA_b3VxLdsOj#CIe-?G*uREk|Dt z6K$Rv04}5X5jXuuv^sCBZFY-gBI8-5VpJ;f2M9t+sS)0Lv|E2o)i{5TqvnY+3PPcR zWN(wOrv(8rlhL^olgXzne^^;>+eQ$6&#zEl3JQ)kTrQ7gP#16x=KvB1 zwTc#Kih`DClMO{0Bo)Q~zB4omX0+K+DF!cR{Bp1*x^>Z{%*6$%}wf62^? zMC|!=>3N+dZQ4v{%J-ZE{}d6Lda={eytjs?cAK7 zeVFRd5h%!hvfU#8MQ9T!#Ew6sNv)A;8)YmEA4 zhKJyMi~ND-Ou8Zt;(erl{c)sGf9m6}p$+GoA#Ht^*xyKduiVE!koHdxrhS)P2W;2X z>N=_O25!w%>;u#3%+n5WZfNbYs&UX6yf$VV4-CE$(^)88rkC=~i=;`He3lusSxO6e zX(**vbyCm@If*t-5_eA0acj{9^YUs8HFO|y&4xVc-N~Q-yngxS)$2L0f0s+zcy>0Q zpS{~T{N_C$et-w6epKNXp{Ij)sOqDGo^C{?g9$eIRf#C$xTpXhx&nvqpgt;)-`U*J zok9cYT^Db^1Cya5z@*cq{vPaR57OxXANnnA*L7)ZNwR&z0Gwc5v^1_R=^y+dU(gVo zuFY0yYv;y4;D6v_xZd+If4;d`RP_=aff!ahj4!JK(1YZ%>CV*aB5fYicmpX(Iw_h* zN(usgJq2|nyjTOaMz=2`7|iUMLBK^1yG>34PSUs3ZbqnSp;X5XLI=5KjzX3uMcN1f ztNjQ8(`|%kwq8CWgC|8CDa+%0M2J`@H?#-p^co&7CGH#|5;MEGetJp)g5Ss<2fAmqC{0SRK^ z2j76lxcpuu??WKmfA!8G1>f5O09pj5^cx{16+Ec?W@&=Eq(N*t3O2RvMKshxVyu2J zqz66du85J4IyzX(^AQqSLHY zQ<_qgQD|?G@ET+)2!ed0x@eQ!q;uNZMo$Q@MY7=B1TniPe`x)PSwR)RLD%+Ao-^aX zi+iHW{rJAN0L*MM>mvy#)HauOb;k%MKG=xv^3*nuM8jOBwg%jl757quET2{8HI@zj zc}|fgn6^Go2`^k~vz#~k6@aI?0?=3im_Ev!S(mHIpuNmLy2?kGae0&FMMrN85DyTE z{qPnd$D?T;f7I}`8WveYWqcQ8xh6>xv>#j`RdCerka0ffka2-tm@b*yR5xMrFIt*o z?bJH}_69A+x=qj)vFT8ObBfI~HYtO1w3ozG|BMf1ZAk{a3>O~n;`Iv>3AWMg9=eWK;;1ALpp|sl>o%^B56>UC~!{B=Pail zz6hl6*yq~vMT%BV(IgI_b$mLaTi}~wl*N8=Qvzv`jTttdGy#N#`vXmgE%3TF<@4u! zX%<}kf8K-ZSKxnXnbugc;~Ygd`ZqDI!-t0j4>PML1g*2dJ0W1A72 zMVp4hXC+IMeo0o>1>aaVJXj=lM839<<4Bv7m&li6x$kN)l@*n@(2O*+Wc?C0Z&nzK zE{r2p1?jFqD&*1t4I^*>X@~m?*p4hTx`Rere`qxDUli+Q%AD9;wfR;+qXk(94wv-s zISSj1edeKW6JSz=sshg{IWn631aoTr;mGH_$?>ZO2ma* zfAC1bcax!~6qB5;y#X+jTCd}ON_vjboGQkHNX0Z15hiY*c4lc-&bSd-lx1zFV@{^^ zI<3s|%g$E6LE69L^xw96?NUB6Vi;2ug~3E5G-NTt&isC)i=vi!;k2-(LN!)ph0|b8 zh=~65a#JtMF`XkWlQwE7;1tvVnc6O=(+7YynJqny=@b|=TyEC+W?7kk;!;BMbz4g% z@<{WdrSe=;;2osVu!FgEGvdwB1jUhZ)h@|@ihP0@!r^U@Te))%E~_gbfAuemSmx>u z=deA%!!OmkhB=OJe#Pq{XFtQ5Z~JuP_OLfIKt?%ns=>Nc%$v2rS^?T&Odi(;WO9Oq zkrPvsN2h3s16Vfj&=p{Rjql(veDI0U@kB&gPQ0JJ!uWoo-DJq-(vntyp@^CqhWdq&$=!LBS!OAX+5Nva(vb zj|+OI#9fjYUHlCy?u9_1ZP^ zAFtX20kB6o<(s<7Tmp_dO4I6+A1dKC{I3|vuo$PNkqH&DtCM^HSHiugGnHL8ebEW( z(!ERzrQlm6U(lj|>sb;zd2K82dN&8%b(`8#OE@9$?FxU`PkE#b=>{vat4wY1?$Wy+ zln`@u;;jiMKVglgHfk3q>pR0ju*Mnneo@=p?ybRw-0#MD@d|}I98O;yU^Sx)FCixv zf7!dh$l5%Nef2!GdN|rywy&UWGSe4npg)O->O{3xN(WMZNNDoB;4ufc4YhWvRn#t8 zoI&XvoA+*Zr(kdb5#znJr)V1P-J)ILzdK3KKmvGRcQB7f7r%7XU4OcJL3fZ~smr_~ zB&R~j7aA%48v)U8d++zgzPmlwMti~FW~d>Uh*4S%Urh}`HC3vqQy~wwzy9qP5nqL25-x3}v&jUW=JO*wii2H&NGvmoM){2ZsOmCiyA z0cp2O<-kCZA=|xt(U8M}C7Zyyp%9-wy?Whf8Fb4EryCG>bkd#k@vW+5U{UQFJZh!h zi>jyXF`dgu{&Nz4Z4E3C=Nlx6w!derK37(CEsDm}FMaC!4|9KXqOX0(x<*yV2QsxZ zCfsuZ>*-@R$R~UO#naL;ASQs~jTWcFkO!VLdXYyRBzU8o<`te^9uC>GcPOFpTln$^ zE^!TZiOM3m!Gx=Xy%v%6~*c0D^UBU zJ<8T@w@|d>GVZrf_X88qK8fZmUw6mT&&c~hnsWof?BDjOb-wckB|M30VFiB8nv)}G z>D($?cVfc@4~}>U&-PST&u(2v3`h3y$GjMGhnIs>0p8>2tw5v*487exk&&j_nIf1t z3mJ6~CImizU{I$)=@aVKdWgo91Qu}kfA6!#x?VDh?MXm9lzur0V-{U^T@!+a72zPf za@hg^c&RIY;_()Ehi8neIwayNLkz}G z2wXyc(IUb&fdx?8AtaVb2{yuXCG}FZg?h}V#hypz4D%*nUyWOb%5H^Oj4Z^0rZLGc z^Wc!iK8GI$1ZJ=@9RgwkdR4CaTzNY$OM?&gs?W8+58L62=m6Q>>0{8}I!G#`FSr%0 zXzq;)Ga%)Ru#(L@5qcJYXQhnvW2I|l8nNwvOK2r_vc+DmmAG!C`G26OM*}uO8{aIT zQv_fEJVZDtUG2=!#8(1Ln=jvofxx-7YXO!5h&|s6)yNu-+aP9BKrMkTkD!th^j)Zw zB&0~$5+8Qy2B?8BU!Vpy9%^zLpauvYYJf0<8aNq4 z4QvOf@$7gl9;1qvrYCo1A|9fO|8I2`Osw7w6Yl=p_LDzLhTi$md(L;+kRh&im&%rs zk`ILfZfWNu`D8RO-zYj>lKiohEy$?->+mz-`;RgEbJGJcVuP%wD0}rT$yOX3gux$X z`2R{>`-bU&$0Z6)vdNXVyJ!Cb4++E?lcA>*lh3)m0SuFky5<2Tvvj+41Rft@FNxtI z#QsP#JtPld=AhK(){l3Nz{mgpV!NF2lcA>*lN!K^0qB#Zz)}Ipv-rSQ0s)MZP{SGo z<-e6&lcA>*lYzrc0RfZG!yN%BGaV-a$qk#%}tjl=+X z%xI8CsZ~|?b(zg-)Qo8Yj@mV<3-UFuEl!ygOI2CnqSPBJ&8*>0)@m!a_v3$PvInM6%dA#LT?k4(n5AV=uT;Y$d5}kyFAMNZ6>|g$IZwz0 zL}O)S7Qi9#-y^B-yKFu6WlZ!(RceG23FYL?O3l#MZx&;}Qh--Jh-~C}WyL=M$VxO+ zl2a;lZzz_kz!T)=CoT_~byI0Q24}jMWwlEiBX7)77029R!1h=Gx>HN8*lJhE3teukB(s7-?FVE% zv*}L2U2>k+<9%K^%h@66x^=MoKy-;1Qt-Hi0jlNDQ+97Ll0=3bjQimr+5G6tYmC`^ zunVQGA?8;me<^CaWE7AEC1 zWaKTb;8)CC;x=ldZQJaC!C~&j+XF{+tF|U(EaBu|>|%c?bb(OYq0|hN32GX}U7UkD zwz3Bia^snd;rqW9gA;naTf0jHa|sPxxihfA48kT}D~zmj=rds6+{iW_EoQ$B)2=ZR zLaY0ys2VdI%}8s;m_V9M+kTw=+x*U?lk>1eexBdu)e-CQQ*y11Ez=L;MDi0f;OI7Y z>uhju*&TnV(J1Y>JjWQG5F7;8A{eu{g()mWd89bx)T!q7j(Hf8kB7PIaC07S@_};? zd=2-QJ;5|27k!h!Mpy0>BmMj{72zx^PP#=iBK>Nze+Co+Cp__#X|+27o1rjDPKLsi z1(GsPFqmE$bJOe11g6$zV1=b`=2$2BOe1O<0knTv4GU&p&zxk7`&Q1#%f1Lc1^-X` ztn#1gzZ%~|QX#eh?hLph4rC;}F^70j=L-xDRbB38wJxh>Ag~E=L%JQ%+wt$ltrN6y zV<~~mSVLd6UR$n>dpH^y54CYkm#3a45(o2+gGhQG(rWRQH%%) zQpQ4*mnbDcf(eR~I7rhN)lFgVBF9jDnOVE<;`k2x8%B&|q)Jd@S+`@rWbZh;H=oy58`uAEw^31C)KUHBvPr zz$mx!wypPWTl88sPY(TJX+{e`&5_@2%0mUhawJ}L;cp;2P#0s}#$xs@oF$$J?1k+W z35LF1WP!Z8W?jX# zD1Ns_e}L>Co%`?jvTU&iSblHx`)loZk=pdUJ`Dr-A<~BZn{gP~BW4(o!yqi+9UPGV zLh*lz8(!Axb#ebS%kGqcM&Fus34gQUjkz`N1J{yoYH@4c@2a~6=i2b?^A(;8k&5CV zVbS?(Sf0xc#%Ho)P5X+q+n;C*Si*%>&N6mCC`RfD`%OJnI@eH{JvfR?;7=($V<(e< zfcMDz+Bnq4<*2yL_#)LvZUw};2h{*u3)462W;{D2l1vaU4)Ks(F~6#eB{ue*g+(yv~!MrxUaJ%KTaoGdD2`FHB`_XLM*X zAT>EKmqA?u6$3UnG?U?mDSwT12UL^YwyiXUAkw6_AfTX>(0fOa4$`HDBtRe}Aql+* zB1o5BmEL=iqSB;@fOHiBrS~Ge3VLHX=iL9iH^zG-Vi#0dxsf@FZIx<(e#KoCe&5Cjqd@bDPJaR}I77{Fr+!(ibkq<_r+BB)|uU>qJ( z1LN>KT@(_i<&FRfivoouWP~MUKp>z92qgV4A_^k|R0Dg!p+H?hpcV=V!vc6zQD|=r z+|db#-{xPBKwbzRP*_@8lK*!)P}voRfkVJZpe`8a1armj2mvF2MkojzhV%YM30^rT z91blbB;@JoDF}AO3V)(7jtYGIKu6D5D3N(_;)-k1OrFou!2}P;@5~mzslfG`7RQwigI;@A#qs1um05F7#IY9?A}6u zZq@~f@2ncfn!n`0( zLchuzd!u2$gMY%mVEhFBzGxI0=zt#r<_~v(;ePSK;_meeVUQiSg;r$=_@B0-}H&VB- z(75ww;(y0fR8U?(UjY$mpn$Zv6i`@LOadq=DGBudXMY(3F#K;Dp#S7*A{|gb=|A1# zkLh0>d;Apu?_YE90smP`4~17P49NQ*kz0YpK@j|x@c*~ef2aK46#lEq|4Zcm-H^IF z0`WV{`#b)Bgu$+Gg!f+pUbOBwya9AkcpD)9n`#F8V_IDp6z=Z&-%(8*7;gk+q$6I; z0>WZ~Ab+txI2@}E_kuwU;5dlWAIbc|O@3Jo0Y}0NP+0h{cMCoX1p2QS-d_+G{QCoo z*X8dJ3~!%*?t2#rK|z1{OhjA)2*zN*-T)9@P9oysKwn|JA)zp@-%17w2_jKAd+D4P2g?YYmUJ=nfOd-5k&Mb<(+#t}*JSVh62Y>`yWHToO9+$&cmsx069H zt2fVrrjzew;V#|nUQpQ)$mu=Zf8z*ahoYDrha^+N7pS-64B05{EQu{|C769W50UH; zU4N-u&cA5It~`+50J;JTkEl44S#Z(HnXMaykrtfXbGSYWE2{XrZvkH{KoKr5wo24@G?Dlh~>10Lo@#jVB2Y&7d z5DY(@bs!!+%9^j65dxo7c*-<89?qT4k?M)<)W)}D7nYAd?2@_1))*nFQ}~i7K7W}_ zs?qs#(f+sZ0-e{tgfXheY^W?Y#_{g1r!xEaO4}uss$2rxxU5GaP%TVB|8&UOWTtO$ ztigNChMJ%%vZI@tZf2rUXJ}E$q_qF2_BDt8du6J=Qs#AE~9V}pU@9Jr3`AmP?R*(L}7u_um zGY9S)FO%Nq1S6}XlF4<@wIN=!2rXT9rM9Xj--HJ~D`uDSZkEUbJbmtG>K;dbB-jVb z1o$vTrgYljq$Y?eLmZ>S&rg>$yt~`>STE7HwFWI_=QW(c^|H{mKF5bQl7G0e>Wnxu zhEunT?TRnmOp6pyWcKW%bL{ilotx2S-S_fy59-@x%}iq47+z(G94}6u+2y*PMl_<$ z7|DA9R_rUesA!>iZFfzPUCo83e*I=utaH?t>oL6wE(fg!e)L<_<`U(FW02HYHzyG_267+O8M1j!d;CgeH89@`P;Sn+JEXn^hpXjFqp#i zofpvHYYDdi{8Vl`?vhisrxNaB=!E!@)k_8=SN1w>1`Dm{ZjOUv1ebC&GdA>}s=fqI zFp6mvBpB4>a@dr=+D3Q`Nqi`4P}HIiRxaY$S1O5YG`ir>6`su~fdnWoK@!GJ46|~e zz-k_?sGSrVTJeP1F@H%`Ovnn?VD`?m)0j*XM-yYQC}d>%X|-w5H44j0>T&M3)*C0| zU&#FVM2#Hm(cZd0Cl<`!MV^x;=wwocNP4_;hK zzYbSpFBx5XV0h8_$Yz~u%Fy^sOvQpJuPP|=xk)3u*p9eSynmLHhOmJ@zFpVnt>;KG zV4~cCtT?dq^TU=`x_;%jh^L>I=JPb=_ZRv7*ey810*UU&rEY~VHd!$+^V+F2@yt3k z8u06EauF4gi*SvP(pGZHduR4MmvQ(x2jb_aO>K=5w{F@c56D8P*B}ZXP`Q=&2p}1J z!iuG8>+|oBSY6j_KERVYu3|| ztRxpEehU$vdPXqW*fIq9@Yp>oiTLi3O zsG>C~=2`X%0zE9I&x6Ewy+^Ey_hx4OHak!$qE^oBi|oeYkDna~3aRDw-7g-(%x!wN zw!Dk(Cx4uox$%B5X!;CLZ=y3?ZNc2#q^lOrnNwhyqu%H0dCk^OVp=jdxKd&B{oW(3 zmDP6v~R#izJyh_V^XW^{{$!sqQdrtBwPiuou9$}PP zW`A0!Y!u&5mwIy#LTn&!ad8iBTH$cgHbgtSCjZD8y(?|rk(e}kyHgQN=m2{_V@)_N z+JEywGg?}yp32~a|QP4#)feKVqz~n{ou)$Ge_oIb#h)o8PweR z1i8U&jari{nNobvd*f`PLK)*oe~$_yfwz z%w~c`aCTy!U>&L3p7yA@Gu1T8@v44I{a9+U7VQlxOFcRT|tEybr7jHa`@a=t% z+u77~w7-IhNV=9?GF0yR{ROP2k-$0ZR*x4|CV3>?DWO8~pcP*Q_l%P~{@sKGy_la@ z#b7GaE+Ud4$(=P`d9JHz@%@MNUYdj+Im)aS8x57JWL5q`a1b`HcU-5=RgAJjlYf1& zR0d|*-kipzPAzJ*MNa%}NUZV922(5<(;VnVKX=36GtgV{$6)&_=`tj!6Cf^C+dMwI zH*n~hm-w#cKCOw#3*6{wgk!JFDNc3oJ*P2YSt%Uz9F`5W z)0$?dn9N4GtQV_iAU?GP?N0F)+BUh#b=(*A_fe}?lCgD9tX_#*h+sSAc7Js+RuiyG z#SxGp@ROad_T9tH(7^#4F9}AM?p?qGG{RbSl{6qJ_1mz7r&x!#8B6@xLVtZA#o{6k z`8qQ#0dDZ4CdU%c zJ@yE+px8;*d%~>ZtHb6du77W|+8okN7xr6&9s*U{udbJnkubENB@V+r8mn%UhFsm# z_9s<9^v>C)u~@qNjF+opUT|Anexe<^u*%^;MaRM|dFspI@VpRu@5Z#bvx2{PM$CBi zKGiK{NL}*wS$M)!Is#$WSf9`JFbIX=7d>1PHGU*u$ZYpw{`J;ebbs0OiK)?((Lk*$ zL0QUADR|IZT$H4MHxs9}=2?&KG7ockGBIw5$zs`<2FKKho@#_X>J4A;j(^wpn86w) zN_vVT_|lLXvieYbp7nW++Kry4xAVzApPF%*wa6!E_A|e0iLYls&t{{C$D9f?N6kX}_J$H3lvb$=raX>UieBzH$}*ll0SD$MfC%P8~c3)y0nWbWKKWMbm~GFf7o zem_t2Fl{!9IEWMK*73~v`}|^)fqkmWk_X@U<6LqAT%Xe5T3O(tjpqRIhX1nH)sYkybb%UOx>lN$CLytD5x2|a`WOK@HK4QNaHNZIT!tiq zp;?`(boJ_-6@M0rV9Yh=IGdhRoN%teSRNJZz+YQzViVhLD{i+o`I%`cnJutpPvn*r zh{pyFo z`F47b0|FwsxI{e+j~yOey3il49FMzwcwRn~Jm}p)YJc)t0msfS`U*9zUmx2Sg@qLq zc03Ne3R$$TotFvdaw|+b2b-wGs){SqMBa1}*@aBsxskD-2#4g^ z!@LkJ-+#gxUti1rN_u~L)TpM*k#TA-78{Q;NtK(T7S@rt z_=vL->YRmBf~-c=3htQCU#yQSz5DDOuS&(>vNl#@@yMSuXRd5`co?x-H~76FU(TIT zT!K#>qv+LGsKYu2uhwm+&9X|abq(yppc`PLl6&!|@ zMP2O_=%SGGU8?dJA$+uviAEFklRCi2T%sN=a1OU#T%4VgDk&(_HSZRCWx-Wka#6sZ3hJaA zckiU1p)^I>3fm-MegMGcR%GT8kbaZnU4P3+hz}1~vwv9@?iDppkaX^sPeU!kwLp1k z5}~2Dd7_w}meDvYz2*!3&N99#GWRb33p(ffoAxEN?jO@nh*!l9phq|;G`=Tp!D4Lqn z80JbN$VMV=Q1XZ9!M5Up6NYkx=zqs0$bF8TpCq*O>vY?`bte&XjPy5;0wG%Cro!sF zH7q1c_maMOv{#IM$dm{U`~|edi=PN?k5gCcXX?wZc$>kWV}6l zK$#VQ9&ac-s+Z8@*ndXeqY*W?p7eA-1H zNq^6SM@{CJohckCCv1YWb}(Ngk`AE0p0BmusJxHPS7-_1+|@8^q+_RIsa>H4WS zj92;Fm9e#x(-#VwR1FVa#^>FZJWY5EHn2>%a`uA^))L$iY7%Ya<+(i#Orv9%HuX(&*%`fT(Rg56O~kX}aQ3CF&e=Seu{O==F(Yk#KEvoRfSR()x_ zEB2PJ3waFR*>Vb_{YKiOfRqmO){NUw!9AgsCX_HWQ#s#sHxFZOaNqG>3KkO+Q8p!S zQ!tjIzDy?BB&Yo;CsX8W#z5pHja93;P%}pAn0}S)kdzBA591NoANM|a=F4tMHj#I)0=68-i0g9vGW6XbY(q7( zq&b)2;3mBZu0N#v%2=at9Z_mCZ7Z`3ahBs~-=L!41>?67Yk%iiJ`qR7we?q+?eXcJ zaH#;m)0@v5JA`>hKE@KiChyV)Z<4H$zxRmOl)vlK6#w8@Ui!w~hR5~e02{Mf_qFiB zE{n||^35nX+Z&d6DU(MMw8I?3>+NrIV)Cjkp9u4)*M9YRb0Cf}}jNfVe zF`38^H-9VVh%~I;^97q*VkpYCZta(O_hNnHh7!_SYt`wDR#0RZrU>upFEFLM{;c6z z0~ZCKrea@L*z9$MzKW(F2P^3eFo@Z)3~ z&4AYfBnl3<^21f{D|%tIV`x!22rqjAZtj(*oqyDUWh5vuI!OzeqZQt3QN$&-_i8}l zC{mt*FhyRFz{l$;;;O{FUW#L)I~A)|7`NV1dVO)Nod}b4oCrkV!_C)%ln%NiKjq_c zJiqfs=jnHgvZ!@!iL4Y-6e$E#ZMcAvs;gD0kJqn$e<#%*^mSD7QT$LdwCZM&fR$|7 zY=0GWqhQ-yHvEpVMPb-@E2*aiZeSa+`T#CPU?q0hP^d^=qHWP-@@CP|BrQ|jA{Z_+ zVq*B{`8V>hOv$EPmZ%ECxdHG-1#`&e&?u?|m|kZ++~EZ<4{})^bj9-tBWPqQ#(0np`EiFF3iVrKqDsNJW&2 z>)U;oS}fJ%?zO4j&o3WkFW1e>_RxQilNsdfen!CSGEStfLZw7u=W=FtXJ$&wm00X} z$`k%}Pz<@1D<)=HzV_LvyTQ7PZhu(rV4K*hb|XNEaJnuIxxN#a`qNdAwY*=Ztyq#) zSpPDTrJ~%1d2pzJc&~)m?>X?>F(7a2c}pyLvtX+9G9esAJ-dEB6Zf8;g&e_`P>1_z z!29&o%EYP#lkgNNp$xD*(ujGMoOLmO=L=0VP&|T*7BTytmvm{KVzs?8&3~UErMZ2i z$2lg6Bu%TFw5M=CRZ+5fDzKS3IMX=;tmC&DkfiZ$<_$8XFuVHw8~M|%ItPzO*sAFB zqbH#}=F%qHl-kriun3D@OAR@T+G6h?A@hva(t%IJ)0oEdgU<-%$Z3vDg+gmr5+#Cd zF?{8Rp*jS^5e1m`n~-M#7k|=HCNk>{#BVRI0(7!_jS#XSi*ChR^)JmL za5CgGwhk%h8E%!*Jn$lg_2hY# z)0RPBaf;Tan+v-yk{Hpre9M<&tmeORuc{M>Np&_a`)<%t86R2x<*N=S8eZw5TS|Azx5NJj;dxCcmjP1& z6qh?R0Ts9PB>_ebmlab16}M0{0mUAd+-m_8w<%Krvly46mH{HS{%ZlFDwq7&0VB7> zmH|0JmkTEXBDWve0qjke99;qym%h3K47V*O0`E1KPKyE-w=!J<94?pF^#UTdaEk(F zYL}y910w`CGcq@qVKf001u{1|F*cXsmH{Y#x^s-LO%^TOw(aw4^R#W-wr$(CZJVcU z+qSLKw!U{}?##_izC8bItV*rD_D&^FrAP@y?QETuJ?u>welyV0a{`n^6=mo-=;;CU zv`jFhq(Y7+2F@0Cw!#L^CY%5@6Jvmqi9LXU5x_`K&j3RT5VEuPaI`QpcLq=xQT{uB z2vD^)Ft)IDDVghhBHvyPhSepQZB{*MDNva>a|_!lQ9+J6(U zbv1Ex{)d>Uqn!;vMnqXaR8CeIAR)qs_mnqX9Vo z&$2f7pJn(z>wj5C_y1V5FboU;V+$i^fT4+*g)I!-zjTwZHMIk<{wHkgV*lUNKZKnA z;Rm4jM?*@0v5DzFXcud1Spypr0ELj9jlGMri6cP9&e+7!7NBTnV_^GVl!1+Zg|)~3 zFYf;!B%BTY(Luo0>>uUm{}Zxs618wQF_yP*{zqz41M7bz`gdH- zlYjL1r=!Mpw$>j1XUl)e`1gi%N^%;~YSPsI8-RbOMQn}ij4f=<07}mPXldYR{J+4z z)A9xu|CyfulKJm60T}+TFJs_;>}cT*(4wdP*LcwX>-(>z^M6r-f_Cm+zZp1K0l%3T z837C|^o#%wCN`h{hpv%}qoawf^S=fEr7E-cWQ!qlW4)tmoO@-Qd^b4!*#JYHy{lb``(`44gE$kolgX)Q z!f>4xoYxZKN;BWu?RSNOw}x=tzhJ7^Hb$~wHxYNv85`??@>EmIS-BUrk`84&$YKo9 z`sE${;7B|1Ym1MzVw5`MD4Ckya3%-THAr*jA%%Yp`Cj+eLBjHb_TX+vvGvRgD+26~ z!Zhy9zL{Xvb`5QNofh1GG9|4GXPJ-4?4xgO zeS1H9o-~x9kZcJf9@|DqS^u}_e39mB3Z1u zcLH~*u>EMsCV-YT#7GN*$}?HTeJl5?8E6u-w~ir+-mNvP$p~bB+*d}bUi`FY5Cjlb z1;g_1fzc3SQk~1H)pfYL9H-hy-u7p@p=vidi-EOk9vxn)*6VNUoXW}NmIS)6!%HzU zLTttC(Uk;N6s#u(YB#F4<(~b;^H1Xc*kh>4wZJ-0?w&s$<}ge?mu}2Z)?E9^jq}kD(y-E zt@gc|*5(;2VOVBG^W@~PKxyIiFGXC|gi%3%I=s==Hunx*O~@(JnSyaA zAnrNRFMyoOI!D{iHJprhg|DGwndW#uuS9=jPbm-CpitY4{J!J^^h{Bi@g&fAMg`b; zXzLzBPM-#9|FXJSO9+yoDu2Ht5!KEL@H||N@eP-kvc2_sHq4SsU{OeRwCNcK#YK>B zCWs8NarX{?iwP@9LHM47SYy$h6t=Qt$D{3l^_|^jT_6cC{>Y5igP`b zif^iasaMgKvjTBcMxwnfELt*8ma)9wcN_YhIekmP__u#Tpa>oft&xj!w&d-gTtkMt zOT(K}EA*h0UmyxM&QDtA7BQ0ZwZe!_nRk7Zw4F`mj6p5f6mOgRkp^NFkY%9mQ@qj* zr*$3*uGgI2kGcu4v^;09qMK9WoQm=7X@vR@!b1zrwbgZtK8* z$aR<)a}=(Y$zV$Vn)|K;9xfY4sBAaD__&$koA68{w%sh8az8mJqNp<-MyOOy*M_Ah zTklw!4F~2bIKIBT8(B9XZ6d7P<1j6KFhL-8yyW3ig!uN80}}BHcKFVo)7qjU*)6%| zUH)eE4CEVvYOUX1@U;1UPaP8p;lkE`CKJpldQnXj-<57MU;Y}=`oN=SD#oN9n2Bx9 z^B4XlUSXQd?pw$+K}E2C2lIra zrsS7yCet5sqH!6l*ZoG7Wr0p`>AEhjR{Mu;F%d&SvxObwuC;0rHfiN`qNgkjX!&pG zs(^NmLyJaW53Nl~tYU4Uo^1FqwlqFw*j4KdXak$jCFlE(LPHsfE$w9j0>U0V*L^ok z?G4jj(E(lmqJ9IrlgsmrM_z${hOQ9oo6at`v{f@x27`rA5QAcaU0zw3@+uT!mY;JG zM)JAONYzG$2pH#)wsAezG+*pE5I-olN)dNgG?OVY*U|%aTOrkY8_y|Ef)tmvAG;`n zicU5sCC1n5?>$dwA45<){Rj6mJMY{Lf7TyI-s_A*BMW?XC~&CB7^EKlhp3PO~ z1`Y;?No#V}6zWNCqiP$mftYf$%VB|%!uP|~K>Y<2^b#;EwxPAzAQUGSJIZcwyBCmE zGV?+bwq~V>)LK)=uODoaP2jnd>nJII^UE8JQdEbwAmps3cg+Dm>~Av^D^f zp6ThWQ?1rC-AY5U6y0)vaTAdy9x-;^Q?Ox!_ifWR?TCY7vh4m7A7%nASizS{9$uQ< zV6)fYw-)d~?@lL_TO3f@&Uxo`XCmAgR)o@W-tl=rXc~C2;>UFNqP(gCSMZCBH-^(o zNkn?D=5X2vtN#@^L74he>kSf8l`at7-d1B7sQ_brng+Z#w}C)^U2b|a)~dFby?@bj zq=tZKtwpJ$)55XZ0q z?52S)J`!A!0Ou?vTVLk#YV6)cy{Ba0fCC&#Y{B9{!7lL zS(f%^tvOcuSbUFvUraC&Wkd7w+p_D;mt!?2zB;qA;(CX8ajH&D(tuaI6Sr0QGO(I# zy|)vWsb@i`HKX1!1q=-v5y5@IBy&jrFNDx){Ae4+rNe|DCWV~b!;jT4A!`mxS- zkD=`EdO>d4=|i{oBo0DL$^MMOyoB6c(ws|0ZpxR~Nyf^5b|AK@_!r1M$?R#nO~esK zu7#YTiTwBoMq)>;Un73el1_D!L6d;YZr(pM@8)wTYc@vbKbjTG>6K7HKVkWmBiyMi ze-5W&&_h{%OZjrHT#b#hn1fCTraK5*siQKMOY>mOfGx1c{cVNZ{(bB5d&DnDlitA!7#~k4j373U z>=jQBBp*_EdXTpGl^e-q@-rg&xgc7M&F#N!(rYhVV%KHMaED5qbhog>S|2EHz#J) zvL_Qa@Jg(zVB@XVnEB!l$R6IIu)NflOb{}`C5-I@k#240iIr$w<7bu6^7;u_p49C8 zt5N<&d>kKktu~$97j>o5fkP2^^>?6#V0-N^ukw*NKD71+(c_Pim9kUsS0r=RJ+792 zo$$z`oi65&06{>$zgbcKKcgYaI`RkmojOO?yd<0CA75=VCy@C2xk+j@Mh_x!3yY>F)Nbr>y$hfT=>z4@js zOlnJ9+P)fU!li#YPCyhS)? ze|GW{n6}nYp8)R(ArZ&Pxws(iWjE9cV~NN;H6ex#P?gbk;~!&w$8|!*vC5+FpP>%~ zK_7tv?!S?)C|L#WP3#q++k_%6(l%%_6g1TI5m};wTJrEf92;qOw%d%0!+F!(HRQmM<*7(PRXyz$rp@S zgmo3jsUu_km0X|c2^?wP#mh26rlT%ysM_wa|`1Hy!o8BABU-^RL6SWk`~)P;m) zjls)ptLd^DtoB&_m~|q~3+uh#{Ae#8oJ!hr6E9aZ9Js0V@i0^I#VlydM^8kTf6SNT zQ9=E?N0Jf6ksWnMZX2tZq%$S84~1l9;x-ouNr|gpR&^jjfLk74PYlm26|=gnn@&3< zV;R58-nHHF%n3l2&5$+aP(Lw$Ea-Lt8@Yiiq<{AnSN|-MI23Mojg5}FbQ_6yFGNKh zpNdnp%2BjIX^eIzd&F(JmV{f-e}+~ha4X~zl>4L%L*Fx%&k!XzFTQL%wuoNaa76*W zKdevo1dXJK&%S78ttmjmZ&oUbc}zhUR%IG%`x%YF;zyURPBC78h14_#qa{%La$M zc~3tJsia=F?9@G_r<#}#G^py`N{Zw`Y-9~7YSlKn>>e^^WsJrQPA5L5b6D#g&<-_`aFN-xMdd6!- z8A(zT^AVu0U5KoL!`Daju!=*HZbxwv(V3}iZ?TMWTDJD~3=A27$(|kp z4bAPm-+*D(-sE*aYEiImozE?2t{S}R;0o=0&+@b|)#Rinq~_D6#hKRT%&J(^db`!g zX0<7>FYap!36)AP3dR%U?oG-cE2dKgOSqYQR8zw4LEtETPe?jVPPyr)!q9b52{8?xJJP4-0c=Ci`HZc__*48Gp*kUKN8w7eJ&y+^=hT+&t z%0lL~qq66mpF^*MG%SWfHo=6$P|Jg?Fx)7ZPN7Y$oPg7!CG0ZJ%6tYp0h}bxq0Dk|HfAMqf=6Rl^S{FNCSU=OH8eV5Oy=0-r$jW%~ z5HkYv#vfS>sJ?={n2n$RxTzZ$K|K_Wi{7%Xxsi$F-T3$wQ61`9mH1UQ|1!s;B^m6G z2a`J(%I1=7?_(bn!d-FukjbK!4^<E=c6dv85hgb5INC9{0VqOhdSCB#QG4JY&H8f;G3gjm-p#$Rk39y;xHzj&TW}}> z^nlp-imasy12r4>UUxmgMLLOC_7VQx-p&`J*Aacl)l;f~Es4B5AbU=hHp*`uz~h;K z?(XrQUv+JILdBS&hBsyA$7}lmfAct>r6_I)SOKJ+nxiFtq$6ZV&2Kz5ztmf&;I4qN z%3QNK#fiH}ev5KRuObBH)_ z&~RhIfGRQRX~z>Kb{Mx+Hwo_cZ&P~iJuyCJCWUdIdmcQl&COtGx5o%Be*skp8*EQm zt|1R+T)Q?&n6Wm{059WGOs~!QD)?rgNCpff`s1E^2O@NbZ0L$M@vo@sQhuudT1lCA z=l+!Lvu&na&+)C!Zl_=TkzxL9r^K$`EvDTXrF8;cmJQG#{3D=TtfnY?iSb;)p>$hP zJN5>G9|)Ya2DKuPdSlM-f5$+5HU9T7cnTQVYNPPHdWVZi{<-K+{~B=l1(lt$J}D_) z^%7|9EAE_l4}SMch&PNmNo${Xir`4%+i?L$>6fPQN<4Qa-wu1$YAa6o0{P|sQr861C+vX9EG94j`Nk|3uv~l!FR}fe(ysy=ioR9G8XjX|sc}*^n ze`fea809{NhHGwUe?>o{6Z7$du8Pk-VQRF6+#xO`O8*+yCNiA~cg*jagiEC8n=QuU z&rJd4YH&Of*d;R6iTl%`g0chuy$bYxIKUERg?E3@+VT*!K#)>1+cb(wzA=y0%bd`x zg4{qhNKfH}7kV@4J*{3%T1w-mw6;x&cV&8yXLJ9>CQLbrf2>OiG)VHelC*~(68zgP z*-(s|7{uYtN$E|orAyh5VaQJ4$0xX}(15T0I^g&3y9+EyFc3;A3dDtR{h{4VDAPKI z>A9wMH~SR=_r{g6m7htn>v*JXC~@ogo4eTFY9EU3JeFdY(#N7o+4MIO4T!tyX*cUB zMSP}=Tv0m^fAyLUXiYq>I@0}}@@E8pi&e%7B?2&JVtF8wJ<3^OAUKo#ZEz(d52281 z64Fh+084s=!XEWP9*nWHwoB@o$uUVFP)>>te^g&_1Jn4PZrf~}bGor_W!!h*Q^?St zV~DD&Lz?zQ*+rJ7s!CzozKCa0(JnAsi#`D$uxPh9e?*BzwDBaVev>yVh}@0s599WA zVciaZ8w8)_B;N)_9(0Lgsu)bOUTEg!p$|qJ-Cg>u^yKZbG`nhj|B%)fQFkXUCKr4Q zp;o7;(ZSZ$m#WR`Wv@a=%JhR`?PC=}q$|;Yr~8LPL$F_2{aW@q-EkcVb2OMA6yx4L zj1Vwhf8@Z@jPR6!UA|PE&<39KO(CegF{{5_7Z^T79QBYDeLg!LpbBbVSa2YC+K5?>0u;m}$Rsq8#u56^X)XBrB_pj=?J z)K_toLEP^Q#Ym;S%=^!eErAhZEgLpAbRz9%w4t_%_NiHvbWcB@QA(SPqkjId^ ze?Je5(t*?rZucZf`0$p0l+jfZH*Hz=@2>0(sD%v2GqIq{#aCpPfcXWF&zlIcL4Zj;g$$JlhWXXRdnrU0CzyV~blyq4} zz>~8&@=-7{R>o{7uCKjnAhFv4f;7H)JY|^f$0De+yC`7!hs@ z_+v+!w1b#Dy6dz_=OYN$*ki9Y7K`^HfDZpeD^^R=CgS zCjW{O*Exz{O(aDqVPnb8V>>J%kMn9D3>fvWWnq&}5NAVr9?B{a#1dwtNit!U=7m5yAEwbDhgnz*_es`~XT(3%!EXl_((0Ou`n_&D$zw8nn-FNmWI2@H0A1<>M;<1k^7Q%2@#lIGD+K9CNgB}~ z>~IJL2mAI1_Q5sre{ist#KCx!9atvv%g5=D+_##OdhZtJR^JZ2uIJ(%4_}dx6+I6e zyNuIhz-FOMvUM$90FU!$^4dP%f%DDjg!*yKh1ruH@T_IaRd)@W(r4p$ES$Ot+PP)h zH?NZjUaA|u@m}luFK(J?nvKr!ltb};?_pSX>2{&e=zEkuziMTb&)})AMlEG zlt^$VDWLmmqGD1QGC8Nrk3$JN%-3WdhZDiHGb{FyB`CG_DbGfxd3x3eD%8X>VVEQsR4 z?eib?yydSFCbjG5M<-&smduOf`X!<=PyL7pt!7hD^ zlcY(0fB&`nIx}tAAvB)AyYbmpCy=;!s|qn7kP1mSo@`@w0{d~#8W*ELJmj%xvH0@@0Bf?SIx_6iBs z*dtx-pC*bCJTJFb^FXIAF9O*M`m(vc?ra1te-fHxyugjrOtmtCt)|ZVj<~D}>l;?Z z8wxZ$dTU2WM+;EgtrV84?Of~sP9m)uQ9aC4+9x8-K$wWYmVq+g1Kq*u(U3A(wcefc zZQPn?&Z^~5L*McJZE2Eb+QGs^W1*rh-Af}Lbsw5%%0?e>GU8R>B-hNx`kMj5BCQEri2jZdOz*Z zc@Fgsh*7{hoSeu(s%bsj?jn!o&(Xx=5V~@}ylC&ah>`P8!0n1?0^*llio2ts0GD{J zfM%Qq_EA1eA>0QEpKZ5;b>t8;O1*-4e*vNm!a$@kq~k96c7H(~*;NSKmx0;=EZUe3ec&FyEz;I3KcsE?EDc^DlcCRxDxv4>yP*>$+eE(u!yxvYJp^8@y zzzUd5VXo{R>w2`q9ne24YbD8oRd{hNQ?y0(!=AUBa=K=`e7fB^$hxABSjtn_e{zFV zeJl^FVrEvjnK+rtEy1AZQuWJZHV$xz+Z*3ZX3JQVZ9vJsKZ6}o*-T2Xlf|RBUrnCf z?KpyDNgDw;I(WV+f&lhtP#ep}eMp9^HO>WOjaH*9zLLCLG5LpI?8bOR+Lv`jy3G$5 zt7A1jN^}Bg?^B9Emu&Qs1+2Xje{>`)QKubj5)5%Zc+#bC@n0*oca%O*JDyD~#@gubAGD5WBY6TM@E4n6Bi+tIX=^L7_%$!_ubD+!k zWPykaaod~xasl~d-Lvx}l@dDU-1wTx%vE43hGr6ne4t#lMXo?h6(ZyMf8{h?i&xu@ zwh3C5dJbF+{ZJW?g4y#`wTc@?gl&W2|7jZMj`nyEvJ16=&(|v=jr-~$jFI_@C1uBJ z_!kk4!JJ7fQ1GqKX?YwSMDAB&W+DO=;i7L}8^=$s7J}%iOyNQ~2zT+|^>3QtA{4m= z6m(z{j;oD$_1g&11rR;yf7ujN6r3$ZJYfXmMED1&pUnQ1Sl0^T8QD@EwgZIPL=+SnE{cql>1@)YHY{z4MzV2#$$3cxH{}Sny4?!*!(c`CjX* z50ut%%QP)veHlov{DN@=hI{-RUcD#Sz{pjZOv81^_QK1Sv&jf4f2xIg6xt9jfqx_k z8<>8Rr*~YkQCIHZNNbCG0!>rabMGFVDMeH71AT(2|CTAG6a_NE^5{go=khvcQb#V& z2s(?5hZetfF&#n%=>DCP*+>$kVS&09aTI>C(d(UPoRu1OAsD}h+RsBdrzYd z8@0y1I5a31o{HFET@$U@bYIZ}AyixJ uJ==I9xAn|j+e;x(w(Yx~XBonZcSByh= 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�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 SxOpI4Jp5Sn^wO#_SpNkLC35lr diff --git a/dynC_API/doc/dynC_API.pdf b/dynC_API/doc/dynC_API.pdf index a620d89229a1e1b6432779af64ff5160a69796a0..9988f821a01abd8ff8b60ffc152d10925cb44ba4 100644 GIT binary patch delta 95576 zcmZsiLtrjU7o=m`wr$(CZQFih+q$vs+}O5mY}?j+^UroRz3NSG&Z&B;x+oWAcpD{= z9E6i8g&2W4NeK+F!Gsom`;Oj=D>XGB@DuIXn&6;LsjkCWrf=6(km#`>wTQg73=pLB zhzugD5HFQxa`c;h+~D@0>Yz;3i$5F4S|=rs#e!fq7aM_zRW?hC`$3}ZBx`jM3(C<- z29((JRwi`CY_FCvrV_P~R0tKrGIovia<=6YdpL<~@c*7SP#=IWNx<4hl`ze@%Ge}M zuQeYKg(3jrP;g92I$0*Gag?u@MofQZgL>cH+@-vnh6D-}`Nn-S6>$ra^Cu+Pu?7_H zypwVuFAsWg968Ul(`yXXhV*$(rtCZAJ}Ne~@R#Xlh}d;5mHu#7fq1iq@s#yxvKM7% z6FW)1ach%5HYG5hy=O9y`)4i?4f6;jB;f+bjtl`}<0>q^l=$l>YW)U2b*o1JVxKOkVyP1`X!<+Gn6-1PDcQ*$Ba;ix>?|M%vb+r&$@q8pLuokm!sfg zJ!3XaJ@^aud^kS`5zr+^|5{i*i_kDq&M8hHk+(TeLQpn8C>&N;)k%VVTQt*WF3UCS z_NQH59SvPIdQf_Gr<-bdQ_cn(Bj>^wv40QMetvBrlkuTh$8&qQF$uu&sK%4u&(#9< zY(lD!BPZfv#my(*A;8|zSlMi;H16m?(VswaXzvX4%?T^FFQ`X$tP z+B^ih00SJJl7>JDg2P4oKkpY|9Qm7KQOR!qC!dLwjjQnpYUu|7A zaz^!Y8g%Otl6Dnrz7N^YEo}&F*xIU8GvwHOdb%C#rXZ5RfpUvxcz!2|7_u3BT@htvDn@@v0z#!>q^dX5bgy~I9 zqhj2CLRGuIUf0>VMI$J;N9)5DeE9zZ<{`JL`Qv-X#LiO94g?wY*X-Cc0U4mgJiR7>U zMZTWrNI)}C9tv?q*F3yO)yqD6d*;PQ85_u%ph-UZ8{pvt*tQyU*eqW3n3=_W0J5MTUJ0mjX-d^?fB@G($rH}hx#6;#r+FVLfp|rP-G$58HT>xfZaJc*TryG+?H`K@_R{3bq80`H^7a7`hs(Bn z2Cg=}CbB!{?4VFFvsx!>DkhN&FPy90cqNlI_c3rdH?o4sXAeB$!Hw(S9vb8evm0DW z

    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℞(z z=cl=5BIuWJSco`LOFS;14cHfZx;Xivu^mHT64^n4Monmt%NzxXXT6Wf7J_~EkhY4Z z?6`V&&YXBIVIfm2J9VYS4?5IdrLH@@>zE3Xj@a=amtF}?e;8(O0Kizb@+u$T3h$w3 zOUh!a%v6R(HRNgDMaWm9s7@nupm2#48iL+0^2GTCn-uuxkzpUZ3WFLB$n0cH`i z?CCD(CM`_Wxt1eLrYE#EJ5@V@Z|lo?w9y4-cw z3PA4_TrnGwfBdxv@8adw?o}M!mjF;glR|Qy^EIrw_qwh%1 zqRrkQ;Y(B$OS`JnWQXMy`h`j%Kq|qOTvnedmZ@S3Q$;>YzwgXRNtwCA8#kjO7z5$w zj3xEiB6~%YUrY+b*Os0!2%|npq;Jm|MZ#dy`4l=JemZV`)vM0B=(zUAkUqQ)!|~nG z4EN%te_ycDmoByOR7I_`Osdt%`r7GmZsL}jp2fL$m=gKLfx)UXs6ekfXSJ#}*|3)% zo!iAUHcrZO_?N1_%yWcCOHq?AhCCdbNT%W{NXTihtf+zN=8K)gz!5^!ZZqx_g;W|O z@}I&z{dH``8AKY6ypFyLP6U=Ro;d=QC8=?}e=oF;%$xZ(2+<+7W~f0MoAosdnU2=ChGO$_!Wd+V=F+vl$Ig$zS(Q9W19p*Iu?V!0>9Z`MM*0}Jdfi+Z9s2!bH>3!Ehw(2R$&{ zf5Is9>b`^kbb=~o(<~XvpqM|)OK-}d7-BDzcXgBg11UI)mwp6WmGXE-dtQf5GW9(k zbN2gE);H7_HH#WsK&rz0X_YTsp4KG;bje4R%gl*baZGWe7S6lE9MWQ}23WJ`LdmHk zZR}MkHGxLI;x9VpeY92eShUR{bP1*{e;TaF4UA@WI~E7jN0#gM7@{PJswQ#;dZM=2 zQ+IS3i)j%}$p>U6S8RGs2o+1ksE2X#25g#}erOaz@+V9%tjmf-1J;1MQdBPvN!*=N zIkkz?WkQ62blo@WxqPZN<*9^QrA|7pr}W)fSsMFro`y+vu&fG`V=+?C9icFce-r)8 zsE>O}-PgmXqWbo8!dbR`Z!LI57YaW(T?;#h+mWoy`^WrMshe1O*oWXPUwF&KK6P0Wi6g5qtbG; zi>>&jj>`6#`UgEzHr{QEdkbY5f8QBIKG;C`N&6z!C$C~ zG#e4$zkaq@G*#OjM6NtR^Bg#!VGtRE$Ye{d{ycQfW>6>j^$Atpc|Q@uk6ns*^je*zil)#m8RBTHeN zMdZ&npMiDo#fw?0VqgrUE!pz8b??^$oYGx~Mge?5me+M$fyE%uHkrYl! zpwM0V2P=NLuW|MS(>q+U=Ra2sw@saGub%bTjV{j&*GOr4bK`MW+x8aC*KsyiNzazN z_PH+@}_`ty_kSe97OTxsErF|L& z_fs1Re`wEXa}$#o4u#o9x$ZX;R;Nr9_BLE^X>ybxU98sLe_td&8!FK45vsHm&@bzT zx!8?*(^2v3fW9|9IwF;O?IF9UYd<|+in>U;sold;UTh?!;D7Piuw%z-Sx7`Y6a9%w zG*$1$u|A#R*~-1} zj2*wD_Fm0Fe^b+-#N}j>g3yiZKF)j7%T``|3g~F$)Azn)cxv}G{^!kUCD7aGI*b9?Ad2C_rBu*T@Dt=waH*FIrP%I3%F9`|xgxbDD%=Si zhYc%NZ%3P2Ml|VpLDKEJi&T@QV;amlv%BW!R>y&8f09dBHXLT}V;8=Klvxdfy4+_m zpGa`kV4z~V%5Ui_m`(uQ?C;z0__-9(II6;E^jbDL$jjJ-95>ql154SlK8WNt!r6qq zSV`AcMp^Ft@8Tj;8j4+gIoE3Z)x#Tl{p~jyP5_7(!xRmwbDLf@_SB=eJ6}F3g)4$( zNJxq7e{CGAh!jv!o(c)Ked9kbZGTV&XCYvtdo8o+FxlEEM(Kz=!90Xs8DNF6-x8}E zwy+$I4GgN$IZZZVl{@u0OUoW^!^*+65X^!@>h`*f29*fAnY6yz!7}`F ze`CBPv9)HJ-%mKJtNe9r<+~?vfc&eHEm;u)Sq1y5N{tGzQmwT3=CM#=vEMvfE(0;; zR(~LZ|8vCjAVyPzCEt<$@#>-PfL`1X#;49kR2KOWq`H$YJ&6T9)-;_qT=FB6k@&=l2TRxSQ)+?ty@C~fTTxbU1SfUgl zb@8ZHLBc;$>n(N5(T#n3J7qarIQ67~g`Y% zY-kFi5sroLAApRMkZ@wI2ezg#f0!G>j>%%4YiwYDRBCg3;n(Edg`&1KOSNEp{)-g% zHDUHdFSsg|p|A`Qt`+WdAYmf}0w$f8`;VWZb8@6_Y;NvI((nWr-^NETxGJ)7-}ay= zyxW$`MFcTRW&cA+V4r%%=%^SnEkYBm?yDifk)0%L{durf3m5R@|CrO ziLk2gI}!prpYo9Ol^Z?$p>&4)IeGA+;}btpAOqV+V=Dl0r9~)}a}utQYd~FRU@aq# zbi3PHMwex?yfWGR)gra#xv0>YNo>wgT4RRL%F;SGHD%K(GF9RG-HF?1i7ltY?mX!W zN(Qijdgle<&x(i23xT4ze}G%$)wd|)bB+SsgV}J9(|z92@+WJbT0c7c58U(siaCcL z3|Ht@*hMi5XiVoMiF^B?3p#PV+iQ}s@C!8Ycki;>Xx%moj!P22t%S&jGuT-}k&(l_ z=4@bfCOW!e$QBxTwk*a-Qe^hsq4qw2WvYHTOD-bMF~LCMdt{ z;dw}W<5@#jU2FP0hbf6=i#@Lkt?Bdgz)G`%9IgtDAUY}9wl!2m5xv<>=$=-6<{)+v zHApU&2N_MCmBVuie+Pm?Ca*0F@FybvFmB<1Sk7GP;!b5dkm85f(H6u7z9}2#_KZl*D2^6)#fWlc2wxY45ST>o7pFNdRn(OGz^`Q#4lNv#f4@} z!thT7CpEh0OJ6AbC`#O)rXW(o@MAJp*Lk_Y8o_Ejc%Y}8WN(7!Wb*i%98?DN zUA%j4w`YF7l(ryyg%dQN4#AjyF0B#XVBRt|rcnDMZ;~wRfpX9KNF)Q_k_C5hSX$Q$ zfJD~K+;CSCG55T=%9>jMY*=qd>eA*V=ysr){($l}7Zxg+)*u^omKmppte#^kfAT(y z{+@Z2Ge%hIf6OpUad33IhQ9A3%t?;;RgkMnr3xd%nJCK-H)}gcg;``p{$K*SV3W}L zkybUlm3fqYswuA%>WGoVjsI-Tbuz7MoYl^xerxyZ@r{JvY+0mnvbA6?SBpO<$`9>8 z7LDi9e9V+sjNGq1iLQi97{YRCM?eRn7F*cA@XO2he~DTKsWkGE{KzgOCqfuif*AYT z^gcX~f)h=pRYtw9sWLX0a{}Zbl9(7L_6%Lm6%!RRb?69uiSOiyKqz!b^#H#vj#EI? zX^(yC5cpmU2V|9jQMTFRs|UW*iVjZR!g&7kkVRCgeMR*oFuJfF7mupENeB;C?W}|3 z;&_DHf6V>sqvNh%BfB<#eNkwbuT7x$(Vl;OnFVU6EkD?L-D z<^+WZNBqf+_&Qn8FS45Tr#PtA)*=NKR*dg_f1GHZ5(zF`Al>7}lShl7GqLQ&x*>%( z|75SLOs~eEBQQO?T=N~JRWnALz87s`^byXbZio_Qqc&JpI`uvfD|1<%L*31>)bAL) zoIu;FP+PW1e1W~&&??Z+kU)y%mdp9|fRjgwzpP!VFelP!vYve$N@(ounO#Am{7^Yg zfAwiu=3HjSLfx$+#6VJ*SRkr%k_+b-dk4iPk`=gsK z@j`uHwS6iCmntpXbPQ#y<~0T@;l6Oge|}#)WS`2O2h3U9eBF6Yu@vsZBgc=PP)|t_ zyQLKM)fTgCn0qVDrEDb#mV}v4BOKOQ?&E;;iz`^kAo27Uni8D=I+|s(51v7NdGsCU zru5SqQc2*{szF;vtCvch&dEi4hNFf;H&4J2NzIGlHtI$x3^$7+VPnt+z*v*xe?5;G zONIs8bGENbn_1Z)39YyG8HgXNydMCb_}D3i9WxmM&HEl!r3AwB zfpKXR;C|x$VuK;_g|chy$UvUikQ+B|j=Yh=&L)g)KcPbJfa4bv7iYo&F7JZ;n(@+m zGqY^-T}gwhs+(xItz*Y*PCt1eHr)dOnGm4^VQNn|c}|1qW%rYF)W967Kw3Yo{{d_3 zO-~ACZe(+Ga%Ev{3T19&Z(?c+GdD7maA+qFIXMb1Ol59obZ8(nGc`Dqac(Go?Oa=L z8@CdE_pjK;7KOFTI|&p8Y$r~g#0`r!!?jCWQwQooN~1+h#`UEa=Qw zp9P;;A$OEhnKc%AedY_9DPLrNKDbOkJ!k>fFrhclk8KL3&V+!OBz!@a!Y>%@bta_L zI|@jJ(l`&$YYQBD59|<4$bc3Y0tTgqsZ!1^`GBYk+&9wTBwWT38DVB2uDoVMi;3 zN@)ZD=!8XqJm4k;%qc9^4Ao$)w4h9(0VwHEjRw$^K_QgTs|th}gb_-Do`r#S1&Y}b z2HQ}%646!`tU}@_&>mcW8?=jH4e|jq3E&=8C_o-q$-+!p3j@Z2HRF(9_-Kb~03@)s zH#-vf(_{)@ZLlKLw1W8zjDZ@^ff$Gcwt*lSXhj$Wn1RGl0p0^LtwAU>4g*9P0%45T zI}V90ln#ji`}Km4$f)Vo1|RUSlZ%m9@2AX@3%0QCJJQYi)qOiG*O2h;I% zc78v+D#6WZ$mwu@u_$K~aDKXc`f>5>d@)><5EQUsCqJA{7TNdTXZa!7Y+$-WU68TH z3qcmi7e;5$E^O|Q<&MfMh$eR7!PFUyaM ztQP;}U-u}-W@LFhWA2VV9lxIxRBfLJvMVBQa+Rbc?$^e<@bF+dMp(A|ST z$MDkz-ERT9-vac6Rys8Zu!Sk<2C$JlD(aTv`y-;hDzYrUzj=2*ySdEX);#4;$`7Nf z^6c6E1y1#U7IuyS>~T&GL@d)5CG@~G+PNidmsSoS4FQW(nE^#IU1MG)2e3nmfaA5e zfK|bxwF!d|%hk0iERL&N`8sWt5C~x#5e`?e#F-Gu3>qRDrU4LzGo`3s*@1yoEv5!v zKVR~Bd=zm;;|5Tt61G{;A(sZ66mkw*pbn{?wns{TiM>jC)HzY=ls@T&yb>&w>)iV# zWt@{rUL`FduL1wyIwTNK_qxE+=mF$HV9gpbQ7W|}J_FHfKtOAYXo!MZ(AFK)F@FTZ zR*}eiT)-C&j6Bvo7UG`NnfDQd<++7YKUz>Tl!8hu*X z6(Zb!9&w>|NXCGHh!JTkj!o#92GUH>o2_-2_AzE$rxGm2g+Sk5J@Oy-eqW#-K3!sz zM=gN`!L}SrZ!B6Nl}0FNfg>N%P(5wuI_gl7kH>dM|2u@8|O883H8Fkg4~p3AxZ^*B}6bu+-H_Xz+oHxk!Rv@>6(lR;TKn6 zN-9NR(6Q1c3(SND6kO-_6tpNZO|4-WSJxeH{tb!`Bo+R4xa69uIdo}tqPpw0!mq8zeZ5q-J7iZx1hzqv|MX5fv1cful zu?aoXV9E{BYpMffvzJlhI+f_z9@jU2hT;#EUMa+!O6C;rU$|IL+qv!>rv6N$Jf-JgL^0EvI!=U@n@{M3AX}-N+R< ztfn|Np=TNu#3~yn#ihL{4A-b6$43)WWHwwkjsn9MlyOcfeV~LoDRCK0G zey9NNX}6BhE6V2;(Ie7$Q`(Sh0k%He$p!7w@TDV(Cu?w&5Odwr5!x!u;~mqGeemK! zc+8+9CsevZl7p_$;5xT6=dss+P=ukW@r)d667*mMZQQ!0qBNKY2 z(GE{A+EA%oP078C8P}=A5TMB>wk+Asxbz%2lF|qYk};qZh!N|Fbm8f=;^@u*XoR9H zQj^9CvI|Q`DT~R8wVYY$ip0~w#~IoisE!7q*nunsa&6+WLV#8FF0CL-39OWKNhrA}-7E;Qq;!gO!{y%Z&Nuh|y8oW@%yW9qoHOTnXWqnE zqvt&K-zs^iwMeed61E$O)D4TTDQ)- z%q)H%W)*sZx(xcyf4Ta$rw^aa?~nX^v;$ST+HG`PU}wv{WkQF@w`4eGlAUaFTvXnh z76W)(2_|7b#v!tUJwl@cu-StC2a$iSlU6s@{P9boaeZElJ2Q;PKZ zD3mpan*VTl)2^vmi5+%2@K9NXjEhDlRYWTnS!5-|g0Om+_q_Y(EfOQ z`zo~M)B4`w>A+@QOByhw4@cz0KY;B-Vx;I2RJN5kC z)yS3YjoHnDw~QMue7c(|Cz~yYeOGpOam8CcuwCR*v?B&iuHq^~bToKeR4v@87XNvK z;Wy3OlC3Jb)mB33nl!1SAEWdbJDxbo_cHswGmCFLy)V{Q#{$;hU3$bCGPp$Kc~4g+ zAHlT|m9NDKo-a|P?s6_P9U%m{*|cZ>Gz|ajsTZ)mEZsN|>P~CWDCAm{X}{jSY53GhT0Pt= z*LGPGo%h?>G4OijYrp02BT4(%Ch)ff*tW#l=!S)F@l=r`fKs|Uduo!L6f*-=u_mFl_zd3Gp?HXr)Hw$4vVTnhwWm9a z2q?vOnU*CU9~$dTC^#m7`c|K7>Wi==xS*UsoBzrfu(l{M&kUR7XWEU5cyuurC)4QO z4Qz;AZ*K{_K6;&GQmvRnk+lB;%M)_4V5m|WHsxZ9iJAYxxSwmmm_qye@Jn)Qs(vQR zOQj8WN*5pK_g@@dp8kQsR}4~z2k=NA1m=4c_MSQ(pOTqmUyN&{J7jA=gJ|emi1P=_ zuCrXK(7D@az84-r9VP^^2zBL?Rq%%IG=p2&zmPh_!8lpWiMQI4fZ>}nJRwDcUDlX< zc)^12d05JC!ns)4n)HBEjy6TVrc&d>BfxR)+5_j>mgcC8$Ff;G)`1@_eBN5rA?Ppt z5BM5!e%3i`w>Phne7|x-p^ScqfQ2?#dK#ym?kVgLzcXk1IPs6;ujyuGa31 z*Qffhc4*-K+(>@&z$%-5ytw~Jf7WWIAt7W(JNRL{z+yGr#QQlzt=IF;0Y+}s3YE^R zl>z}%+37%SR*a9fR`aC?`w9OP0;wrk1GCyR$ZHv4P0tAgoD1uCgB3Dwgx=k_vU|6wHVwF{Yz>sZ z*wnXW+bs2#Wfwqn= zsHRgZoQNM@$Fhr(PKN@q&RiC=8_M?`Uo(pDkXgiUkEPDMmL2uO0(E6uJ)zLsXnw$I zF7fb>mLl=vxu*efJk#~=Q+Q7vij?%&lmwBxedSf^FfNt7ysMgofVrXMCfQj;$g(=| zuJ4!;9XHet|8s9Loup;YY#;rs!bHEaC#YWx*Qv zyVM{*%@)_rsAds#)CI?vu4i!qfj=si6rF&O`;#~5tGGX97%X(t>r_3!*)pf>M4=9F)` zLsTVSV*ARot>!Y@h<{7tS2`4IS|w>!68|ot>B@+A;#wUt1LrvZkY$Zxbmugm+HEKU7)wQDhh*E#-(vMSLTd7x4_X!X`IE8z8X)^gJS$=?u5F6IKBHNuX)nBJs5Q>NQ<0P zi$haKk4k$QOew4Hv2w$lXZ%3+GQwm?y(*bEwdDvu?kqX4KI7V+6}t)|!AUBHlJeTe zJhhWZxU+fz3#~$>uyb(q7JDD&Xz>oIaV`(K5E^_~63m?EviwlfFckW$W>Uk}|HB}M z$`&)@y!P9W(=7h+vbn=9&xSLm?)|mfp?^1RpI#&>Qk}FFA_&zImZ3YXheW)xkyiVn zHxJbkb5024RAD6X?_1&;! zM8RTGATbFLP{73gIZ)Th-ySFd0z=c7J_9(2z=Gt8ifJ`408>g3oaTX)B)PbzledpA zP!an_rHYU!qggcD%e=QGyi&;lV*^K@BH|=I$iI&RZ<98s zQ^ty+gnSBCuyjscf^jy-DX}^)>?TdD`gzyPC-eGMk(_Dw`B0Gq^BldaG-WCY2VKIKXx8J{gda_<}K=X6!z`H&)Af$b|DXD$dE%&c`qd_Az4Ay?& z%SF*km)1VVg(0`YQ^)^75LTcJP=1ESLz4pWnHI;LuTM^HPRRBjHJsNqHOYwgdfrtM_eY9&FjRy*L0nC-pL#s(xx8u}iwH&!#G2$k zg5T2tFBM8xqP{j4{X+Y>o0q%OL5JtZP!X`xbxYTbIjZEB$#bc9_#$3X@3?^Kd?c#K z$sxRmPno$0jUKjK$yq#03JYVS?EXoz`T)aVeZA9)?4HePwEAjOCccu*uSou%m= z&UeRq!FAcP#`hXJRF6oF%)vl)`z~-Xd=ZtMM%eN z<(@@tK(m>mHdL~&bf*lVgU&+bzw!Z0wZ9k)Y1PUE1-aGv@;69Q;(sh`8LnkigJ1cI zy{bSUSCMQMkBPM!4p0=Tt}-+=&pyXKM&dq#=rz?kmooZkElPxdVihK-NSf3abgELX zh&l^Ri<^Mz*Aq@cMO?4WKUF_F6VlQU4hB%+Y@(AeDlX=$hXi;PYHvQpq1Nm(k*m*9 z=0kR4SOLuyLrW|lmwFJ^KA!wsvzEJ44u(Mg_NP8K=axZ5-mM&*iVRw3okg4XLwQ_f zLdzj4JvV~pQ1a0aI9%>-K7;*uM9RiAt?y~nv?@p~O9-@SjLAN76}V{F7bU(6mip>* za1^M@cu_~uPr%ihSN-^XKZRjVDTQJ7T+?t&-2MFN2VSM3%5FjlXem=o!;JYh0R&LJ z3I<4CpaMj2f~d@?o;`i(pGgC!=)165Lef~-je^Ku$(qolPi&Y)2}DAgo2348py}C? zfK2)RAucX;zQ>wK?L=BGp$B!I5pai2^Ed-Fe%JqO<{1qf4KR9%4$t$)hRej@o}`hh z`htx$kYbuSny&I=!}Vte5r|4&i0XItCR@xaLTAY-xST{l9e+z@XZqTz4b?R40@IDA3f z!&qKQL7XZ;{H1o_bpNIHt_ysQb@ZbBvbTCJIJ7Aw`0N+T)y(t~omlvj)`gS{?A3fa zsqA(cd?-Q#|6Z+yQc-s}4=i&z}|IqSip)PC{L_xgJC z=>FB;d`HDb{fQfETxj!N&eh;Ke_Iu2sNl?-t(~Cp-s?SwS*1;{y&e>gVtAX6C6#heJZMR)GLiDX3FQm=3qr5zJAzg=*Oafbv#I003F1|Is zo@JFA9+vQUY*9PW7R;B7(;@JhPg($)#rjxJ!g$=ydt*oV&mH%;L;;*3jI^f%o;_ z^UzDL5AUeAWzEb&Pyao+s#-wI$X_`Kb3cAHJ9fdzK{(Ja`~U7{a2iJm0Em!+NLZ1J zKXnSU2i`$)aWkML7$^w@-;u^19=<>+Stt+$G$t2+;_l#aCjtF;NgZe@FRLak1Ch~? zlu`w$Xo8?nSy>1~N(Lk=4V96S1xZ5{f&Zt3TJf%<|F&4bcW;CLvRK$t2MkgjX}a&S z{)Ktds;e{XcdsgVev2y(%R`#Agvly1XlRY6?&iV9O;h}TRc6&$NzKX3`HjV=Ncq`f zeb>8{KF2l0-4MCq4uWLb2M5m=gW5CJGh_=t-U#yvpG3%1SA8_Ls+~Bt(jj3=lx~Ey>Li9{4DPhAb}iZz>!8!Rt6ihgON>Qj@qB zOpM1J&!QX%zDM&Sp1_W28PAJoDfWpnedOD&d+27bNvyg#zYX4JmF#suFaLye6DtME zq34*bpX?*O0RN~CI!#$T+?t>jU`$p(r^WYP8<>h|zax4`%7DLVI}S)2w5uZ`<`@R$ z)88OKhogg4udJklX0XB1AIORSd30B2bgau6Qv2hxW!Bia1N6`jZ2D#iEZ&eP^p>x+ zP}fCXqkm$Xb2r^^FMdMeUuOqiu2ob%lxeyAMx%CN*DS&4Y?Lt3$jQt9=fD zHsdQ?n9x3+u!>|eOjKb#wDpwNW?=npzYvQp@f{MHgAk#S2p?t6UiSAjFo*h;H=bl7 zc>elr1QTAUP=|qaRvX$`KqJNt(>9`G^I(?f6cd6m?xha@E34=53+wPsG5k{02WrQp z+TMYZ(Q|MLqVK2o^ZQF?QMSVRsCG5~d2trX` zgl`xjnjVCUFlTCtW`=htQxIE#MkB(R?$wP(&)9C}dmJ@b>%dx!CLA|sGV?-ply1=i zmVwQmi=8K13*nfZNJA<3$#_q!vjgJ#GrU*Z2PVkUfDNc(NO-=Pi(pK!c(bLWVf!r9 z(Q52lD&p33EXovxFo{wow;Ds-t3s#blpk!;waayT#V<4WfD5-_v#ZKLCr<(CsU%K?;{s*!Aphq&%k!=K$<0ZfR vx_du`1HFs#XDWSN(mky?kQu2`0~pC3ZJSpVomOchZ{Y8bFLe_N^i6Wr z%7Pc`^$F5m2~hBn0q2g})PGz$URrue-NuLAh(-H*Ylh8+YiVWxfZ4V14=~)%ECLXIzVuW81I=s~lrmn?z?ksyIx*@S) zC-#Kc7QPaz3pQC%yx%E^1@-JFP;X6~$4z@?N@+GuN_zUL!d++6&Mt8o#$da;SeEQ(ZpUr{M?%1h9DYp29dF_fP=NIiMghneS ztRH(E0z|w&hYC;CSB`%an?iLadTduWl0_T)UV{P%hC^EbMB22UsYYxmu7e7DYosKd zoE@tzu5{BU(B3)ujOeYpo<~MPEg1*Kpf*T1#kDPAuwdlT<78O~kdVYH+Wrk&s+y@Y z7OhV^g7e=3Pq6>o@Ev~7O~t=ATn*$u-f*D*;eq=1+|(Dz zOr$3zm?OFl=GvO(1b25Xg2ppvxdF%v3=Qtsv7J^!+4Rn%TsfT`eAnpD!KY_aaRviH z1PPZeP^M@lz3s~E;M=ndHj8Rcas{KQ==XcDdZ||AqK7NosE1aL7c`gUzx9)2p{aYi zY-(b~RfDpJcil^s$D-K#$AOl1_0N3Rm{yGS%L5G5+NYz# z00XoZq;N74dln0k$wi<%_CL->?SX>pHys{387_se;s!l802v=3^8T85AQHw#-@Yso zX~8AZIBX^x`R({EXFRNXuliXe!nH^PKzafkmct?2gh0&GN z!j<7WgnhT1LI<%r_BtwjHp**=ehWZN+g@Le+fml*Ozs&ay-RZjT~$N z&6l%WUNtv7mZtyQn5<3OvY+%p_&QdO_6Pl^Ux={{?Y2JuHVii8e{7h>7l_$^r*L|G z9WZ+G9uyoPW!rv}2`=>J87=G@b=?ZXRXoR7aK69;yn`=*WU_@x3XO`~e#ieo;j#%o ztf`xsIN|h=*zWb@X*lyJpUKh@d@_w%CM8+XS_AX)x%PdST}BwK1`Q&cW=#p)z4Oz3 z@kDJXWQgHNv5v2UcT8Lh8ADwr1V~L+vW`nNHO(3TXRB)1pNZu+^Gc;1q!H(go{ydw zr+F{r4C(BU8tt1}f*UsxA*n7>==WnD;rjwmccQwgzt9X$#}}kZJcm$){igkEJ7jzT z7UKFx@_@lYyXbswv#;Hez2wZ$EdtlNW>Tz^4_~OK)?3)~7F4ad_9y!W=)g{%rMf;# zHTny{;-)j!%e#=r&XxBmc($bBaaFf_d;QeYVprkm(V%Q)Y*+KDD>Pu|<+>62a(`A2 z2|vDC(CA!$=z>S%)yui_9oYf^{-?gf+8u$Ff6F@#_8-gpPf>9J>u??bv?;th>A743U7=*9_Oqp^t^`f&1Yft*3r%MTnM>)9^zWsEoLzB7 zU80CG?v?G7aC{6azgK(H4isBEi!S6%%oSbgR(y!WHZ>ZQAK8*$f&y`K35*!dvWYjl zt-a`udgKsdo?;r(nV(p=pFyHevxX>r

    (>W)|I`SNQ3Q-N}SWJ*%u@@N--n15hy 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

    gu^RfWNH1gFbaP#Zf} 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 !ju>bh9a8nC7_v5~(L}m9~(tF=n(>;24 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%0AADm;^X#K!)MO8dn> zh|gvI-x(<^j{j9bv2b$zUly8!D~$*g6eVr&6@(lxIYHBbwEa%?2fw~(p#>+p;L4bx z5$A;{Dqh#@Kb+dPim2KxrM4uNBOzZ?%g|Mw?uUJB3n;W5!P&*#(Q17ai7m-s*& zpe{*yQ8h2Gn&f}z_Rd#gb0 zUSca(g%n!kQPr6X)(@qIT7k3Zp)04*&=4pJ z!VbwCPT=5sUcu;-Lo=j>B-uKw@K@zU z47Na|bhi?(fb=7dF`hB!!)Q?5>C8>}r4`3%e0WpWTZM=O&&Kaz0IK@56jAl|lUhlY z6fuOgntYmZw6@q%@|4d4rK-(`YO}^!UJ(VBn?S47Z+097lb9eb1!Jv)z)N9zvKuCR zw|tA8hRh6SI`w;Hv|zWUidi_fZX2??QyKgcJ3InvpH&AAmaE~S9J7zE#%9~fV3+{g zT0>$M3}dGVB<5Xm0AgKaqI%5$)bNk*_wJunO*ntKBQ^H=t8r-A#JQ2MA=kAa)^=K#?Vy!t?-syawmJ{rp)>4AXs>DcCc4aB zyIu)_JY@v><{JGX>b=r&)a z9B>v@rEX+tz#S}~(r6(aoORD`myRRsae0hU%GQ$RE#~qJQ(IGUY*C-t1f~G6$k909gScGv{=jL1V($Z7PHixi(|eo0aH@ljOILczEYG) zWjEm^XMnUXTLurG{BQ54Pu(4*b7@un42{{16<0Q8~+X zpnM=1Ui&qwF|0q439Sm3OC{g1T3EHuv9U?deI_Ae|L`f+H}wec@kBusHU}O!Xa}VG z)n-6>0Y(i|_^W*(Yf)F2ytH_6L#`$rwk&@E=0

    (}o0^Irge^%BX-}PvXZ_UY|e9 zO-CtrU?|Xryd4v+M>L3bZtxg7(L|XB$E1JauTtDi6{2mgmDwa+xAhnuTaBjLH8Mz1 zhn@pM#n%r9wNjnDaWY@a=yo84TZjKHIzk=M04rYvI>Nu5UXMtW8pIKZm*rZ1t3>fX z!6D!FF%-%k2@kWw@xw1jWZ=KAyf&=KWU+EyN;dX$ST80NIw*3GWKF{w%*QSVy1KHk z6}RfC%>TtrnCP+{u~I`{r;*DHmHjMK)uG-K3bgJhtHR71DXC>;SV_fiqaR{1c+RRC z06?8dM<_j6CAQus-Zz^$h8|%MIkZUIoj51yaRc?yBJ{DPn9iO*RK?g+q4~Ks_La|C zRTL@HEx(o{xDS!eL02ojM(L#So?$EbgqT2xn&O_mH2NK#`%8gcurqTpO0rB15Zk&FdbYE-Bsz0awnSV@b9sm@im8{ASYZbdD4LXb!p4~r95h-(JcvC9sM zMZ((N-BwLgXGk-kFolefpA8^usBRsCr10nqYmc<&ES!5Z_qS3hbKrXCMWZFE00zBi zaP%AzZq%~w29WCRnLT9-$v#7?i_?g(ZlZG!rLBZG)?FB%KIfIG_kj4LwXJFbGP&&xdF0P#!MTMO%_b)Dl)XdlW8alC&iH%~JgQg3cc!TL&! zr*<1Ll-cy3X3Dz+*_|s(mc~#UyVYZGw0|#5&%#2G$uAf2^;E99b#@x>Jw_MaUEQ4e zX;r1ph&AWX(5Y|ijw0w!ya!na=BjgS(DD-L-}H&be66rv4!(rbZ5J#ZljGYi|Gt3S zHzc7}1!Z6TW-7ua;}6->M;ubZ@$HU(zxyDtMe(HgPq&Pd@qZ})EXpADdZGJIC+CNh2Z@1d^xa)HDkn#!#9usjwL$#w&y4KdfK}C2a5Z8vk5?;D8#YE ze%)COnv*}+iS@K`DISUvEa3V0cRT6cSdGQQ00$sXp!H(~jTZN31bZ{jc;1{9Cl-Aa zrhdTWnO%ASr0BZ{07xe$Hw{@G`-~lOgT3GX-PyYnvycAxxOfhpoEps;F}z!W2aXPB z9eO{0N@#n}ZZC%2(QMPEGb={ze?B+%p~p@n0x;FNH>2v>I1Y}2&7Dic|Evcm?7T|n zf&)gINC|oM?$E+HbE5tbdujs1Gjt3}#^pQ^r4zA+w746&mySXe>;E?OCz6Y%jJ_4x z1db9jmma}^bjRAQk*E_!lhFr@W<$H}>aqyinXmAF0y8g83m|90X0Si2c2da{Z(jtf zNXr#IUfIDwKZ59qrzZm<0u`=vC1GH=vIX#U<$e$VD9HL4@xP1v{~f;eMq*!jJmN!+ z?y+J|`elvw;(b>{;y8>ahf0XhJC-w{Fbm@I8#E?-0?ZcfK*?e7v{}yD8C&8+8dAg1VaswN+tt~MAf(d0EjAglb&q5#5! zG=yO?Lc4wSm!8LH$fF27I%{8gLW^!e!-=X{)+FbNfBtlgQ|k{s9Ab^yp;k1wn64B{S(?Jz^x(*_B;yjz**I~CUtgCkqJS)yG|^>{&X?B4d7!;r0`L@Mg>)d z$;V(kFN%#xjqHBF9I+{ddP*&VKs9kn>3k1?-K zDpC9vr_Dwpu)yZL=c|!w*!wxvLQ}gTd6i*T+~Wv!OTP-H{BvxP$DV#G)gQA$WKmDQ zQYaL7W~z90RUaLl5b&h&ibezxW*kn3t1wqBT?cg$tjxdu4H^{h2%OP)0ty%#?(H~d z83sHayi0$VI!tQ2A=fO(!S>J!Tg6QXot@MTg63?j*0gpGU}U|w&e2_5Aqlox+e@4%wv3EFm9q?VIxB=VW#zkcR>-ZTC~udIC0 zL@K-at_vmNRSyG9FmhGoInW1M8&f{Wkn>TqAkr2xhqPZ^^Aj)regW`Pr@TerU6ETm z^8t$OJm1?dW zYI>mOl!k4ypVVm+1q z`dj4LAuyR+N$P4_rPKJLB9G&CxH%fb&X^&xw(0(4m{jv>mb~ z=k!aK?2$P776234y+|@7DeI4Ue1WVqNfVzGyOKkd4obB*zC$|6cr-X(xW}&tI{R?< zUYzm-oAO)eV_a1n;>fyAHaF$O%|fRsNQ;$7pP=o<##0vK$(g&#!y8h6l|5;NjDE2# z?(>J@{43QjRHr6W0!bw}3%!R=>DTqJmOmVZ9qr-wApn=AS2y@Dw+GFlbr?FLG=y3< zuv1ac12(-0bdLi1E0#^}hOQLb%?<~aWt z!7`g;X8_|E$xIOcBZ{u$9@V=W%kue=sh1WHh_{ps8#!83VYED%sM~>pSfk zYUIXz9e=0&0bThG_j;U!6M7%XDh^`YSG%BE2(%gHRAs&8%Fpj=7+ANmrQU;sfT~X! z`-eO}l00qK!y9a-@AclcR2#iNc0t;I_#t~Xl@QR)9N%n%3PzL5zG8@MPN6g+Z9uc4 zr?Yy|TSd=gow=&-N@P&gp?6R}Kh7eAoL~;ff?Dgx**qetIn-V}-amfy=CNvOv$u#E zME;kvwH9RRFCCkBNU0sz@zh>THfwh!%(rnQDV^0@zwi$UPvrZksU|alCAi(wtL$>#eC&n+HU>IfUVh@i1XIRUCx=(SXh$- zcOfVbK|r98SZiJ98q`oJr@!UZ@J%5u?#-6*dI{Sr&zt7KbD#shPA zc6MldXs%UvHfh_XXM}wHJ==_I74qn2n+TYyrIj#nBl{0V! zppHh^QNM_`<;wp-D>&sSWnOHwWkuPMvI^Lm86g{^XJnGZX-<~8YW|1?^<&`RoZL|} zUzVGGmQ4Z`icr6F?f6inZmA|Y^XV+mme7J*9k%Z=z2);!MuhfrCg^o%X!TCvdBVH2 z3uHoFiB_*hA{G69Wx1ykSIhu9V7 zo=Ei#D?ew6(0d<+dOL+u+ehz-3>az~xD7LDvIWY8z->`&Pm}r)!2^6fnBh!C_6?yK zlU6MLqP~#GJq(bPT$k-Lew`20Fh{`hlI5Np>tl6n5HiH^8=9G-?-Z=%=F}!u)X(!E z?o|9v1&dt@k~46|t{V$WiZ7}}`Qr;bCPX?$-X$u@yqFsnt75{cgdb7;WW7s^^Ql*y ziAe=yuO8kE;*NO9qzxb&T8Deh_mo?0cauE^vp6HXoujyD=B)y*tHT)Q;dX&Vi=)&0 zyO6;3R^;p5tK*Q(p9s9gQW>@mu3R!Afz%?g7|k8Qo>vB;e+j%DY5d zE@vp;RK7Qf4&0lS6j4WAzPY=sqkw*Oy)QzZ2%aE$H#{h|_)EyDivTbrZ`+;`!Ha!7 zjWj|3AmK~!tP;rdY~sZ@L7=PTZ4$wK(glrh2mf1^<~K>ICEk*TTS15;_Vb~T&u9%!OKSdg6=@ln8mMtE*={t@Bq1yV zI5M+H>_#h1L1rKCXxutJq~3)kCR4sBoi^U#-vb+ zhTA%~#j6$B#%lU$lEV#qb|oH86u#pUXRI>`49+!e2OybF6gj&lwPE&M=+GmO-xQHnoGT!r##{~N&;p7|*9#ZNKB`pZ1;pfnR`Ua{* zr!}-Gn*a(fgc7SMi;gAFY>skRN}TIqP0++#PnkhSKP{fYV#`BKV@N84c&|u8vyOiu z`TTL3MBi;d2_4HIgR$Ij)s%{6(P%AD&My|sq&7{kp^gz*f&{gMD7W{QG6*;kIu>4s z+EalQt_VRA2quUDyoiqlRmmKoyo4K#c{g+pmjkL$uBX85U(ClN_xiI$c{lnUD`WmUnvCSa{!nxFN#2z-$zbD~~tQ?YAp$hX)AqIp|!k%g9p;c1)DH&nN z>>X(g)pYPj66^VXtqwml9p&HJh!0Sx+yVHvPKy`9x9mVT$R7TLE4SOI%Q#8}3i$ES zU;*&*O7jT|9D8?VvxOXd;*>QErIGw9C8cYYCno*@%ecc-lu8KtC!;4AF-(HItk#HN znJNv{Hl}Q@6t(~%e2W}NO07uRV)=r1pH!2|RHBY>(+GDoGl+^$3%|F>GGZg`yg4RB zV&$#x!w`YYWq#?WSnU#gJjZ3nFdNY?2%>q%_<`y_@|j| zZ;{^23-nTZuFCS^GUVD0#MF{L&|u$Ye9pxbErZB`;G~T|DN8LI}q>V24$M3NYLRKHGixmJOHKRbZO7@rJd56Fk!<> zC~*pL)%ICjH`{$5EB{MK9`$DDWtcVcH_8$jQNV+CL&t9DmO{tJG{e?{R0=>(Yn6px z^+sr`5oH^DQy1oA=GmqO*Tz^>$!1y~T`rVFksI&cojLA{(LFA1r5>Cly(x3wu7=>Om8x}2(;gJt z<}PrfV{PcM%^OSO;9Z1q(&>jE8-*e!`jwzMS1t7$3+?{dH(JH?lIT6a6gjg<3@`zX zwe9^uJW*BcDeNksRio#(CXmrWt+Dek-Xf+fy-c{8EZ*AXETNV_qNLBfhJ3++7VF+K z?byaa;B0>&n_^gZo)}B%@DN^(P=qYY8o-#|^(S+R7{n!I=40YSehJ{wh#n6XXg8CD znyCn@TwW23Z}CWc*;qHWwHv9o+^ouqelNYGDofcq$;bpnxv%HKb=U1P;G9jZO0%U; zj}y!eMcn$n)zP~rmIOZSj@D2SMEv5Lwd9lVk;&JwW@#yUu9awZySa2W{cEV|=g$?< zo!*^AK#yy5=?bFuu?5H?$iQjw#!Hde0LMsZWz2M?qCVp2om40dU+QSBCQ*^w@`DHd zR9u28d5m2<^{0@A6fWa<7wt)OqUyW)) zgCCbgK3&cUcCD^WbLg&6y|;&49Qch_^LV$XhoVOD`TqcnKy$w{_8TJ`e@qGCy1&wh z7y#LNP06CqDN~W~8pkq>*AhGov2aQI5t=9;A@SUOXBNUoB_-TTAi!?zvjE-o(br4r zp@tSJ&4nY2syCg~qWDtb^j@=~VxpSfoJ02N&;d#6-5qbMh$gX$@$D0#(7}Y_w<&O@ zl^8dH^c<+1f>^R=$D&B3f260L8x$BzBqr!80vx+9L3TngIJ3ETn|=mS@&D>83R+Ik z7G_hthDjMq)`XsSTc?tcEi)y*c$mzye7Q2{HCtk#-Z!OC#EncicDee(iSBf0_yfV4 zx{#bkpqp!)@Q|%)6?*wVnR}rZ!WCSn{#Pv5M_C98D^bb!fC4URe;s#_$jGSaJ|D|zn+kdK3zAoA;jlr-Da;iQw zR7ourMk=WhBdVlc$c$Z}rMPv*(t03u#;B}%;r7aR#kvx|Evg7^%59DQOSGn(e8C19 zxu2z8%Pl6|p~;l|e~5qh^ZQ5_rTf}cdINx(xFXX%W$w<*;>*%M1|7r+SV{F#0wB-j zc@5eOx#PRDX|egPgwSs~?jFl7n=sqvdTWiX6L9*06>XgG(zS>C(%$;TU597Z zyT~5JOv9_*w=OS6*Qx=v0R;mW_h#cYAH#tE(raXwTIS&$YwIlYUc$fi@v{p?v_fW zs!v~4Nu$pC_}}5*qdKayGSe|=eNIsyW8(YQ-wr?jaQx?>kNEfX_rnR=dH8Jb_V zm*>BZ@~rrY8+Q-6<>8ORmmhdw_yfT&?+34@vwt~87tZ1M{_F9_yFY4meE;(KV&?0~ zUbMQ}i;X&7PvN5P*I(X$I^5n5pGGlOt%|u=Yu)wz&$T`phK5cqus15c}K^v8n zQ)a8DbA3lp8uFfvt;tJiNHeqFyKs z+0T;c(els`LrAEtU}12J&9%&`D}R#%$*$^nHP^U!MH1Ep_{8Qs~hjEPuWM-oli$8e4#d(Iiqr)iJ3lLO*y1cV~Mq19#$o`5x#;4f&4 z=y}1*3{&3bC9k%$0{l)H-l0SwTD*95wu?ILD_RdHH{~aiAy~?Cm~P4<_J6f;8Ui?q z8w0q`t%02)ubC#a>J^sgzTMnZR@hut?!#1~k#R##8Z=`U+8Wp1uAVY1Xm1hJO?&** zn@qBU(!?qp+q{9*gqqp(es@v%V9sfvHW=FmXE%YFY~Rrek}+s1gAvGJVgNBoYrUDS z`LsIx=S47PPS2cI`7XnYNq=*~#U~+J+=yJ`UXX403L+92x1tK;wj@m$z~}5`3Jt=p zh|N%wJmRp*+_#(pgdBCO48zM5TRM<1?Il)B0%FPp!NX$W zU@_MQQr!!4P2UF;YAkx7DIbI}kvz@KCN!D7Frhv`thPD$6hgxwPJihfkQZ^-D>*=E zPj}1fc8k)ihDkJHpGi{%Jqy~%yp%pdVriQ-0X%)~d#_2ED@&nv?4@S@8)_OR9yj$u zSuNj|6q{-_yvK7|$c4X@BuMzMha8s@ zq`E^=W??;nT)JQ?$$u(Aj>vopAAnz&l=TZWGg@?+b4P4iJIdDy6zV_NH?*Op=@>+& z%U?)~=2=G4B*_?*^dj0UMzauidd(YS4q~S|CHpFKSPn}H(ywB4oV^jR8CS>7`6zc+ zoPkbF?Nf95rdz?suD2%Na7#&CDo&}?!0dguYLj9O;_o*9YJW&)Tsz>Bf2q`s8)RsV z>-!glF^X1eZ0K0(!#;LRlBr19-;`s#Q9$!zlF8v}s4B1$!;-DUOdjD)YM>o!LWaBR z8z^t$$om$S=CcHkL)_sfM8@45-I-~zWO=FIE5GJE$DqGblb~TbPJuUDwicVYe_(63 z+c=F!YVOe_1%Jhev9IZ~;MP$xZsS_sZD7wENj?&Ls8g)>X=qX+UQUrAg7xv-dp*)7 z*{=JvYO2$3a39w`e)d9Rue_?U6&CgWUrM*f6dhpoA#pGHx`LS%0%JkTQ6_TUOUIndb4-oNfwG zVbzxkZyAYE+VPQ%1TWc^C>s&6WC(SMa08V?9KbYWJP$(qDiDYWDzN>w`+1l!Eoie}x6cpPZ7Ie59VMGN5~>lTL2}EJfOU(6S5XPv z?dn?Ir^O6S$=a4|&6c`C%3O?l^_#tOjFmTV%YXFHu_4yK)|O6-_}B`-YTN4aR8yBs zw~e;E1ya>%U~kHB`wYc`tuG>SIrBj35ciE4TdTzvG31&Y3K=#1=qI(*2qmf9b*_8E zIrGN!a32;XEw=l+^QbmmXT9fgp>|CkYE75e(+=!PuAjY%FQ3YADkk>woEAFs=qMaZ zYJYAIA}V;wv{tFNHe!7!GfrjOurZBSG4HljUn4S?mKc{-RiQ4eeWz)^I8$gVe?E|v zYA%-ffaW&h8Y?Fv?I{)==CpgF<6%yF;PT8;>T1N8eX=|f+Vp9w!fNO#B36#r>g(e1 zYLHEb^CnAo=ro?2_9Il&6zM%7>^o8|bAPZt(l4tGR4|r|z~w3VtSw zgYH>%>yVJ+a@9LWbQfH7)@|()nq>Qa&&6{+*@m8SJg3wr)@+V9I5i|CRHojZL-78FKA>!!Glz|=5vxd?`Oi<;Vsvf!m)`Jq1CId`)=Q3Ob5S9fq%&j z6rcKqQY$~Oy<0HYbCtCut;0kJ$t4mFWpuluXd1cb?zUkc9hhnp7H6G;#av%#+hY+` z`UoDCS{|k?@Yo(=t(+cZ8&Zv6M|`?iTJ3|hHmv))`@^o`wst90BpDWV_yB~*12joB zHg$Ol*j4B*yqhyaPMP-(cgc}cSS+4peQ*P52j&Zuo9_p5TmHYnm9knxA1hnD2JfEI zLjH$|W~2Sn@qZfLRWq0IY627uI5{9NAa7!73NkY@HkaWb18xhqXGDWaRhbp*i!GO0 zApaS2$avfmT!iOOL^S@!S3+yX_S}9PZJ$c*kvyiKGn;qmZ81 z3w_*AdmzQloz_VNT(;`YTj37pMDS?Ul4$@f44sb-4V3lNNl$e>xuc3I0+G|GTsE@_ z>Vgjp-~%`+R3{{f)y+nH&QH(ufnvC$ypI}<38{M$Gw@d2qL;)>-tayg%u{;9MRLV| zk|%&j{QrV(d)ZYA~+N0c;bUHYb9NM}jm~1fUy~wtRFD11;0Og5 z#pghGo{90!9z0RYFbO(N_P5eB1Rp?Cf}|Z2OdQj99W!HGOsZKGg+)~a@t-JeKvSE> zv`+<1hQw3W%<3yzOn3RhG*;lb3tmwj^&pv99J=Ip=?VT z@GkHkB3pJDeQZ!@Du)G_Hwqxwx5>OoOV%n;Zyybqn5^5_#>q@XaO3T9JlT*}+NfH0 ze6)u!u0F4gKGwq@7dU_`N&3vpU>ta z5MMlVfwyj&=V#pX`kDt@>1NfR#y3(ui9fk!e9M@F2mFbnz4;2oV$FLd%6uL=0PY+d z)f1h}VbbSD`%y>~_ro>Wf=wiU9?{oSu*AmcgU!oXUXf1#Ib%^EyDC|dJ?lF7Hls-Y zV-VOe*TrNEkA0*qK_LO6$b8dyNT(rK5HW8%721#@ir~1X0~aKq*eBKU%p>xavX#pp z3KCRrg1!j{S=KT0i3H5lKQ@fbomnLui&praE0VUlMsuTAZnan!L?M!YDU%uI(SU`h z6ZQ#88jug;jbct9?QLa-o0u}9ysClMbexoEuKLXSDfWwZ(l-K*M&{xSx~P)D1pCm; z7e3~FVm34=l3=Q8ChY|~B685J=|b)E^oM2-LT~Ok@*&XBd+*hfa2v-WIqcD zD%LA!$OhuH>sbyInk!UJ$y^#s+N`n7^48d{ebZ!0S;>^M=98&x$!3_9dx&%u_-LvF zfk&TOL}EeE^09m}kM7IJvs%LUDJP+;V7;0*^lCddSD3e3Vkucbj;$nB5QA(4zUdF+S3+Qk;bp}Di^dH$WAAI_(N+5#-s;9Txox66TKGD2+&%o>{kkzu?K4`Q-^ zg^_HPAA*}?FRr#~!?WPsQw&C<1yaED1fHF(>Jqsh6| z7IWo(kd-U(reh}?5enE&?c*`Do0Z3YWCHCbKYq6|hn&*3&YSW-O4x#1z;_Iv*rbkC zxl{lRiDp!NCHJxW55`BDs+aL<0u+}SC<6=uG?ykQ14e&uJGl+N`&0P5fL&3~8Ne{$ z+-!33{`JqbJ;|aX5|{;N^EAmMi1&*{mgeK0Zsuiv+^xuDBFcmkxtpEJ zeL4IGULh>7YLTATcMs5y^(7iG#%d5QW&c$y~_s*0@_L(K@I2&(Lw=bcQS?J6@`8Xm)<6 zv?PB*7BL@LR>cyj_1d00+TE*sWS5G1HXS;miI;}HxoN|l#WfP3XZ5bZiWOP1VBQ#e zzxbJ@3h3UB4&<}C@GYF&a8NCm-Qc{kVjTJ_!q}&keL+0VdgUarrWGnAk z!9t0+6v2cs(cvAbQsNb2F_C%dNcj9v97ulz%jODGp~~KXxxn=MiJzy?=#;3AkP1&! zGnllKx%_N4%tpzk3cnH~CGz%D1!kH!rV7)Pg85BR?i{>)#A5@QiUr_%C$uc)t2Xpfh68PWh7gc^;s8N#;3?4(qp9BPLlFAkr8?MYWNCIuCSY=6e4@6y~+Kf5Zd>hFh^wqfd}p$HAWZtd_0(U*tdoVTeiqutvvF5764sb`~|>pE_t?B_TE5G3;Z^*&basMJs_ zm>nGx+P=NKTV(Bg2HM{v+6Em$)k>BU%X>zF&T8`Cg?2=U56@N3Mnb8h;n5Sk+Jbe%x%xIyC+}2>Vw2dGi={dDMIAMnvP`u|s(z`Z zKcc2JrvF|_&_ha@SB3MjN<-b0lFr#M{& zSvC&{qnct06$vyCN^XD$6_98eD&i(vH)Ln^lxjZiRyX^}*Q0+3#M97e(e`F`weqK% zk}UaFs1@ef$Ff^AR)BfadQBa%NgpLO3uV>c9r&|}%jTh$(aQvd1E+JSGm%(I&t;mM z5IL?xhsTQp1Z5~}3Y4Yh$|TzqX)aYN=3Lj1c%3*-Qj^8@i1KnfPW3?|ZR%6bkBvJE zExk(8G8|zn#d?3T8VYsC(DLj;A$#+_YI>@vzcNp$veE!{&+u+`%Wg%cMwxFOse|}f z=k@#mjWySrS*P!`Qv9HHBn$9XGVKM*9?Dm(Gg8E45+$OwSzKPD0%}(708(OqPA8iLF$3;4N*Ndr8pZTKj(%*H7o%^Um`%XtrTtcFmvW zMf2l6Syh&(eN^Ua6X}Kg-PqiBds_+@;199PEoBT)siiREKB1z3N?Ds57}-s_=i+O6`eti%0ysR&L%eHM_|WLGL(v zMZOnK{k1h6T3ST*j{M=mZn6dPfrh$k^xx`M?d;zg?dqZ4O?0_ER|zs&z!K5N50kVq zARa)!9V{mHtutFP^Q&E}4f9&L9E$kcOJEM5o!1@0Rht$UL`Qa_QYLpqZhJ5U4r5?R zovnYw(E61bxx@#cP7CDGp%F1$7WZr0BZt0bs?pqG5mtTu_7uQ2l--`JGyK?`!AutY z*#>oCkyelv|zKOA>mT#T0Kr>0S!$d@nG~-Rw(a%*8eS~(W+wXEw6Ap-1 zY*d^}!d<@mRK=TEeSF($yLEi2wWGlYLdk!{#H+eRcb!=8d-sDG7-h+|4oCK45GnCa z(@VrW(A~f2c@m`q#Qd+rYJHFuFnXtN=Y@QIN23uQoyfq2^Ta#38K!A*AHNLiUcsI# zT?0(3Gj__Wf^t=RlS-S=e{*C~6>_Kohquj}H)pGtRLdF5fmI;Z4)eWH*>)Ap3Xgxf zWBom&vTseZcaMm%wfL6RP&gH&+?tj_?O1-pv`oIi)U`Vr|GhUYvpry3pO&dbWm?vl zzc(yXeb%b9D}_s;UDaYU)E%eSO4n~ruNCp9^8DY^f6n48u0n;glk&QG zdG=fW{QalX-+nm%c9Q4x^ZUO}m$=Tx*D8JddV=-z{g-q3F7mg$xcP!BPyarB`yn43 zeBk<77E>@c<%PU|{5;#^Rb+%0+g0Z+{wyV&EbQIggt}kUO=$SN9i1y9`VA05U%sh# zX(Qf|hFxxn7WFRn2s;AIkIfNOz{~~BfT{xYf39xok+>mEV#h_gn-&RV1a8Ea_&R>< zfVAa{;iT96e-;lw81(xLEe6ArMEj$;j2nJ6BBt|cx(d<{Uze@A)ix-kk& zfBqQ?M{33S&JH3(Ng!sU9YBC5I&}tIwmW#4&NHUjkwvCu zdvH?bQDL;0Z6yq}kKBW`qQ#Rmwyss7k|lLkj|Y4t*4v^mS*;_^6}@Z({Lz$3TB&`r zeIr}QsJV{q$i%uOLbGWdA=DBb`2uO`$x>6Sz4}p8EI?H|NjO>( zCp8~1%HPHxM>hD@$cOB*LlzXx18vfxSh(6r#2`w|_eZ~mSUfb4JIIXgwg?Z5<$4z~ z3J^aFfD*9PfSZLHlgUb#jZlFjA??OAu5C1 z0L`!Q#5tNu`F1ZuGwYorBiSoMjm{WmZOwlk8rA(02wGMmSicvIW#O^)?H7CFe8`~^ zk1JZG0)|-9!NxwMDC^_GF^+%IFHEIG+Vz%I!o)XJa>Jx5r+axX>#)+aSgW#WOiqxZRf4&eMD9=cq z(MEoGi1h;V0(z-x)>xv60SD_T5v!rw$QR-aL0&`$T5}v7*pY|&%B@||(cTbkUjT!m zuZ?h>(Zd-kG>?Xa$;efFUdw$D<1@Jn5r0oS1W{ZZTa)zfz2KOmJr)^Q#w`59?n4Q| z+gD^`(E5%mBlIH-3v@UTe+NixMNlclg!5ZFY^o|Z(B9+rAlpW9CJ%@yEE#_)dR9q- z4Q{9mD`FCYI(i#-kja4yqD7paC?z2G5sB-GUgWbF6qeXKF;qEYU7NDB7=M`J)Y>z? z%LtFvK#kQ8%lI|OCp11xxdmeZI+5vq;)YxMa6T)sxYkpheC0w5XKG33FCXyPXMH< zu?zwpEDjY2sq@piqsD5_4XMc>CRC-=RA7)sDc2+;_eglUz;(1pbx0y+K7*No;{B2G zp~T&>+_!clGOz@{f2HzJ2U?_#vT;sepO_?cLaC@~`nCvGYN7y7f|b>3NKzIhBVP9C$jRm*~4TWP^7tOFXy(8diGOtU}=z*pi4X}7!S z$J)rG?fa`bDhnKaT#TZf3=cjlhlNbHD`;N=QbPV zluY5EIih^$Q&=Y|xxW{=Q}U^_1M@CbeJnTltORj~rq`zNq_S@l3<08b%M96Lw+#NY z+8GhuSDh4_Su5j_ydk5eso&n{Fq<4zrD|-iyugW_9H&u~^gWZhx7Tp!+~p*t8rcM1 zZ>8MEdUgm?e{VKJc&g%gtwNt)}_2YpIN0)(_dLw((*0?Fv;bo#O; z!H@`JmKzrXq%I`4?xFShDX*g^E@EzLt~Tsa=Oxuvf3-O}5%M2$lx>QU;(LDKc_+Aw$gT`6pN9)D1C}Rqdys@Vit++yvAU2P=s%-bPelPYbX*tZ{yCp z9Ep-gJ9l`tkqZ4uX2zhj^BkUulnnA>NIi2oz-AZI7QzeMX}D7BAJp zwOWpKe{R{j7$tn14Hlhna;PYqmi^i>X`}zRV-oMhhF$tyb|nRo+jA!+!`ORy&od=n zZETt4o8(3wHhlQ1U)logK)FKyecFB2~sGy6YP zKT2(kjPEt3T;S(rDS*N3kDhEfsI7)nIsaL=HVCpq(oRS?Z z1N|uQCj$ei>`-AXN+j8hS@ak3f2U<4EQf1hRhD#Hwz>T}pPH7q-%Q`e>l2M$91kGV z=w;HAskdzTB(WRZvpcuX#`lab$D_0a=x~zH4g>!)yNOq+jTN0gF2S;Vr5q>XC<81l zn_!7W@Rkm9a}2PkY$86}I3AF$CDjG98&8|>k-;}o*d?A?-0l39cZJD%UpEgdRvdI8 zL_If6=TK#_3f@RX7=k54WPQ-SoLqbVDG*1eP6$r!QZQ&e+dXeQY>ls2iF)%xuAuaH z`@Ltap@5mS!Gu;swMZEx5Z3+YsNdo^zfgjKR1NyL?m*Kht6qlSl0}KK*Fqf)4 z14n=3MiAZmE3_W4Q`K*Q5cs*sZorU5$SyMpAqiwQ`Td-Js#}ufYiGD{rS7h-I`uA@ z4&42_`=_Ih4kTP>m=C?>&i3*7?aS_`Pu<@;?)=}k-*$V@X&ejx_-hyF%lgkQttqY| zakI#jyWe+TKSja#1LMGY%_mz&jC|5f_k{7VmX*8D&t(RBANl z3`)3S5eHLw6r0{P`k?3DjreifR2GVwkgHT?7mdw54~TG`BRmCo1PrPeCxJRD^kHp; zPr$%G%i&{j4ZCT3)8++%zrSYnur9iCFAHFK;~sC&EU*p;vl5q(kVk(^(uaR?Z4aL! zjhYCb6&>e1Hhrb}U}wIHSCbkgPNFIcd@(}VBzibA@7ab?fat-Bxso*QU1mZS5vGgb zRLx)e(32eXbir9F36eI2)g&wBRJNeqQldF1mdHM0vNbL%=j=F*`gbZ?ViL zmfcdjJ_T4g2n90e~HjV|AKc@&$4T6^qv)wJ& z)xq_!^pvnnA^UK0F{_>*q}!TXj8OPLE8lH5k+CMp*Nd-``DV&w?`MD6SL{+Zdo&^S z)IyYL8ly8aDFGj_Ky0n+C*&gqy?nD#BD~ub7wp34VVX^1QLB$j+)G`yP`Ts4M(hR#(=)m_C0$GnobGDJx+rP{;@wbH{2aQ1S-oEmh_jikbMXe|u+EVQU! zRH3@uH_;uYG0t@`7k+;~LWsJ&R?T}VxzVg54;E8dZ-Q}3x2lrlRu)UUsR4Z;DgEt7 zGZ>pUOBJ`sLa&>YP4N^%VAlWKN+YWJNi~z2R(T!UZTNpG^GRa7)o65Ymes>0c+^+% ztE$1LRk`^0fgoovUut|qh_(ixIP_p}W`z%xUI=j%$7xSqS+ak?+M+`68f{xcK;$Z_ zBi;lFoZP|`dm_Jc#)|oZ!lE7oegv!4LA?YP4p0uv&sami>u{M{4o@K}xdaHto_!H1 zG(^GzYw+f@-x;1PgK7bIBFP9+h}M-2tK9%?mFhc#Ba`deHaNr}?8i8Yaq|{9)AD!* zPB}4emfNu>PE3EuLa)1bw|X!BM8D+n6so0#lh>l~0l?QH@GXE!FC4vTOLl0qOlNs| zGmACe4QZ?zPEUbKm4C0=vg8upi&^|GJPZQvB|DxG@-ijO>!tfP-F^m5_HM0IFDy3$ z^qSpX0%YZyE0?x{K#eedvtQ7$zK{CCv-30c5*<`AV<=MrpJ%X*IIMJ(1?-a_1kg*p zP3-^Z&Zg$`A-m$kNPnnkOMDz2-!IsBmirr^!uTXz9%@wn>6cLL{ZFdl16BB^_CGL$ zSqYyj(~$JJ`wwth0g96WeiN5VLIVu}IhR>N14VyHt24Rr?qA{afE|_AZZHPFXZInu zfd@H!%xyM863ATg_fw1ZmfABP5A0`2RjMl0E~zV=|9ATDS)J8Y>E-MJu4{mESmpbV zUrzt{;ryQyoayh6-%b}?=Wtrn*S}A^KL7sLIsR7iOBOdj(#q5Cr(b`Njqwi=e|(*s zTCRWk9IU_k^ViSkzisXe>iqTVx0`<4FXjg7Zf+((xL^DYw);Ty5`sWBHXcROGqe!*{xWN*sd!%e>u z{pyJ;gfnGk8!%x$tQCGOgc)V;7hplq7b0FqY%ko8w#7|Do}phi+!b!>K_9eI)&*s) z!C9Nu8XebOK*n%NEdtAE1cMiFW<{Hhgl` zL;y=j9n%6{Hb^_;D*Z(MR+s!k115imr|#X=^{1YMQHaIOR#Js(B%edt9Z%J0p0;Zi zk3y279{7Ap7p>ERq6>vLlT*MJkfV}vZp22xh3WO(}3ii1_ZVk==dR0@9w*U&3P zG#l5D!j#QDmtfQWY9}6#L`!IRy(U3kO5 zAUL|-y{MzW@ev+!qSVe<;K9m)yRDTEgv}`WfjVoW#4Cld1~$=V{C=@CMcLV7i}jh; zAt`QA>4>b5a?^_rdY#0cRSkcEIO=f-VQr^if#*TeLy4mI2QWN?|FWEvXd*AfkBh^F zTB468ofxdfqt@hYQ5ZOg?r9o^wCOm@LPlY_i7YX|T_nQM_9(tbHU}HkAUdgS4=ldZ zSFT+G1A*b3=#Hz5Ym>vu=>g*ML|E?(EQ@A~<7>1`5b&rcq<H0<3a5IZSR!i@$sE)KD=&>Eg@)&dACC$yUOJ@&t9r?j?8$&)w<`jJ zLJuB7>qq2NK+%%9qiF;8Ko@)zb(?);)W|3W%cb8Q<5);Fa~V=4|Ez+h*E&iYb~${V#nEn zXap^v=gHcSslDmX347XGEE7f$PY8G_6DUl@$55+w=szb=t7?CtvKDGfR?Fe0&4iM-d$xB(W6PCE*iXzQqPDa1~c;hF1v!te!YxKz8KWPQy90NLddb((}PTv+;4JS z$>oJ6%kms^hD0lk<6BHo*)e1fno_UAper7Tsu}RvR~CU5Dafy*LI6tmcp+gTDVu#0 zS8f;H*Tr-(iVJ_wUry~whx*1E0rpvfdcLv79S~+YVk=z12nn15L#z(tZ<3JKbjp;( z#=()1dU1uEmddj4GDmHO98Qf_rm!s^E-~ zH*0fU?NucJtC&QxRP|}r$x;)fQmI1T*?m`&wAEf6p!9!M&y;evtHM}M3)rLaAUP86 zE1o)59h$#g!!GMNNDD1z@$K zkzSokWL#w3jBkVWkFOc`S&IVu21=@7#R_DG09DtIC5KjNG6`J6RBfF~Y`ZGACVd1z z1tdQeK>dj*JSy>Em*`wEKc@87!k~)9h)*2K( zV(<_b&v|iNdAx)C%Q@*FMsjVC!IO$&+)ADVZKxk5v$!`V8!6j|G8(ZP|#`t`cx zB0g%Nq4L{F5p#S91-c}7oM~?8-ucW;G}9bH?2>;6Uli#EX`a(*$#;bhFqly6NjnH2 z5Xhbe5EwwvQBI(Y9zuPS2y$7>QB7=Z3*0syV$-Tv@0DblJ_8qok|^&Q<_Lq3hOGx9g6SI;AkAoO7&Fb z(-y1VB&1dk6j|CJldFTY*|bRr4l(ZW-gLmacV@|WnnS2>l`kbZtR_&~X1aN>L#B9h ztY9abFY8Pcx$qeEe8a8Pn5N%2=|`77N$h`W#nLMWs_$;=8Vs!ApshP~Y0}oMz)M>f z_@0Wpv)qtXF~G1saduMN=e6uHXhppEB7{=>C8TiN05@(q@VDZM0wv+y z#fFYE`@`stAvKG$R}i>qLMz?G+W2^zRJikxsY~{CH}fDsED`OvR*w23D|WJYhj)LE zvucngH~C2V7bV+fN||Hc`0)7bu1kM>uNEZQVCHVNdHC}Z+VD%gD7}q|K7PfVOm-=b zz5wKgbb(2hUO2DGlV)nVZ}c|roWfc}|Dl@W_S1%FesK+uPlZr+e(a`MfpPp@aM0A*QDM zY4{r#y0usaH|(P}U3}reaERHKecm>I%MomC^&%*-i-{! zw8e>u!Io4U)g7i45R?2_3>wo$5>C6e?#F>Q*2}9jI3Nbc5J7 z-_qNm5G^MsFRJVV&#XsU;(AIfI&})Sz7t<39W+dlO!tY1s!8perXfM+c#uhacP%hZ z!V1TO)@k0ZGN`hCdbxNMNwx1af9mE-MVowjoe{t9Ue6ypNU@-?T#J9inE1}lSq0|P zeps)y_3(k-{z3m~XN?W!6FwDC%NL8l-8yTuh6U%52A~!Z&?>5!XiO0+WLb2_NYkH) zCn$&iS)84{?u(RyA5p4afIZWRh%pcNkQuFM{P=WfWlIfWGb{@YFZF4j_~-F&=CC4_c6VL{ zYtQlYWhYqb1Ax&-9JiQ=Pisbeigt=5STieap+_T{v}6HjF#dlv-r2rU)pwb)yzf9e z)>X!hDrjuFb##q4M~d8E?AI*xhN{}zq{u?dqMA-GC&{$jkm`JKi(;9FG(-KC*~S_x zuGtkn-NH<^&2I$tvw3zSd7dT5FD-&}^O5^+QvSBmY(vPfr<2~{lpFo&C3{Z!^Tp!v z?f+pgSYek3Rm^{H&3mYL4^m#Ul{`}KnVu?&*LYrK-*jBop!r85L7%)iupjUMl7z9- z&V5h~vcBVnX$Pcc4#lx9*WkwtkgDsCQl;laLT+IuC0fGKTpD>Cq#5kl24r25D3O5dEU2Rv*{y znx7$ZQ6@#^TG0J?{y$XAZLE_4eiN5CP6G@9HkUze*gC8uRr{B`sWv%_}_1T`8v})Pp^@`{_!RA%k$q)>DlO$PVOG^%&)(G{rZz` zO#g`Re`YY_DK$_G%-<+c{iex&86`_h0Yt zub)RU)@+iwV#IL!{@d1?h@^-}`%h&F%FZy~&Tuu48(xhw_ZwVkd-_4Fn| zhs+%R5_Qp3w|i0;`J`5AzuM{OoB~j~uJrUMXFv~=C`!%8yz!M!8obgHb@2+ENQr7yHY)i& z71{|dv1-I7Q>VQG?S}9+Py4bjWLw!*sdF8LqElMT%46%#+VelCygg?1^d__NGS)WE z{|9Y{kIIH4Xu)7Fu9aX<-!|AisIfTE$VPu}_D;xRSnaASU~h%B1b$nZPI$&ni5bdF z#HmH6f>;Rx6iGxyZ?c4hM2}ksZ{=iI$>jg6UwrGBE=dQ|QJWOP5=~~~*mgn~SRu=a5&(3sL0Un6XcqZFXFz3C+tsU+CCK zv>FEby{qmVE+yfpg4V1hao%oQWdU~-_b5TdR>cJqk=)M$8M_7Ys{NQ3whw4gX12~B zU##_34qswWhPx_A7n@xxH4A`f8xPa&aJgkK~|3dGqi}ndmO7myh z71#5eMTCjolPW3sBxK}Sl-z$VJZ2c;faIn!!Sd@T(V_T7zZ|{Y%LNjjaa!|9eoKA= z$n@>gSXQynqJ8)c(MNe-IR@I#)5uK!tpOy6p|OScCr?SV3YFP{yd|-SBFelweLk6Q zO8VGG?J?ip^n9a7Pqf~&%hP_48HckG4kGz%gt+0RIEbEhq>s28AhUaiewYnco$h~|~vf%C_*`N0PE{luHi`CUB8`yL^( z1H4!z5>Eh%$dR*R1(|={2$0UWE-(EL&e|=5m}R_`D5+?D*0P0^^1MkQx#%kacFXYk z(s52n>yrB|byGS*l1j~r@qv>Q%Qzk7hsmWh1wwIiFv5_*3N|pB;8ah?TlAkq0k`a`APXsFb z<;0{>Ns}Gmz|F{W=AzM%O>y@4@ac2a#}Qgq8FjaMzLgImKLmD7$6*@J$2E+mNMFnR zdJ^m6h+t+O@{WITP7T6-lF*HNMgoP6ln>RirM}9hQPXq!s?D`lORT+? ztzrskVc95`t-jYTFG+3?nm&oo>So7jsLyQ!i1m7S;C{NqF;lH}mdwZEP#qG6WRGyr z7&7bML0Qw%;9;-8l&suU8^{_-Yn_nGe$4ZvDy}A2bK-x_e^eK)Zm4N(!jj^Zbr)%j zT3DW#%>JvLJmXmD*aWVF)tb{&W4H_xGMBE@1HxzTVtPg-7Vqd;y^aEA+Rs-fyx z=s{9VD~EqjuNe~KKhkZmFw^It`TN?|Rn+D{GXnTfPJ88)P71W<;-8Df zuy^lMS|(Oa31>UfBJ7S&cFs70L0Pl%AO(}bH#Dzkb{Y_=41LHdyf4!=)==zw9CrxT z2mPT#V2xj8Sz=~xEUqgA_sz}mUZ~E?j#|&EW)*)UsxLLbi88Q+k`M~L`$jxCW+vLB zhW#{ClF?|OlsJ9SAw>n;Dbp_n$X+2cLr<}59g!pn=jDb@>~CtpIB5m8wbH6@h*N!1 zRtYfV)SRw?^ClfXEhZV-cZtGUV zD1(2^W&kZ07sI*9xN`of5rolQ`qJ^2s|(hXK|LAorDryb``P(P3B z?`|Xl49~7#Gj@);*`*)U^V`z7L#P!{%)*U&gY;Gggy?i=> z*ya%3#ek*|&GpCzvebKm?(QTN200UbjW;9Rt&1ROeXg0y)LroSR2~k6%m|*TB94Ds zl>p>-TX#1H`|nmBY!p>r<*y8yrF|#hFn+B}ol|rsffl7>t7F?8+fK)}ZQJ=fwr$(C zZKq?~HYWGZ+_mPZp6j7@opts;`UMr6*CO*|yXb z*IyeYz9(*uF4X#`J%3TmIv3wkIYbEiBgx%~Iev88wzmH?(2@vyl@%vL)D|J`ZD@VqQQRhTFB|awHiQxIbjjwO$KzD=? z=n1L8m5B6KJLO-GGD^|wyjoP73^gvNu`LcwL3s%(ubGT@e5}-4276ovYb+Uj(PO#$ zabw1N-ZRtT!JvsOJOxJM)(;4zUH}EzRZ&)B?9=-VQAaD?>OXar3E;knDG};Fds@bn zH1+@F;7QxyyWiCwJb<}9rNCLRPwF}l+i3L(LkL@pQE1qJ|AUu15ezFVR7^5Mh8uQu zI~BZrjWY~m_jsL|=%L>u-U@`lpg3GVIvlb)e7**Fy)MY50J=t{-k#sL^>p_+a0n_M z&U5HJyx%|8!TBQY%HT{1&PG!Joga5fs~mu@2w1?ocO7wOSp@slln&pw=j*_NZeiOThzs%rz+0hJU#e>KVs%JRGSAG9z)b$Dc!?HBdj&)&vqW z;qzV$+H+G}6nkyWvsFpeRU4i6WgEX6oFymceXtG@Ysh{;J8{vVRs4=~C;mDAsrM|l zco0Xx|7(eHcB<`%t>TZ5oM`9lY)t0Z2LfyH9+61z>08sGSv9aUPwcR-`ATZsuC7QQd2ee#6`cYs4xq_ zoK@(e80&pE`tp(R7iw&HwCzdFb0;y6Tt{I7&poDzmFC-NdgHVwg%I2?^$tP!wD&gyRiX$JCM z@z|#fpbQq38)p!g_5)xPbq&(J9W_&xIvv!<887s%^IO7sD2;Cx=Q7253V9jml9QEz^~$F z29!Z5!Yf#9cVHsKa{z!MnUJHlc?F1F#W}pldE#aEiJiv`A-W-;2FU)}*Fa8+U{GLs z>hYpl{`}xKQr6fcZ89XIW}RV#X9zi&n!`<_3@*@vNB@wjIjn=-V2S#m!4VUX*XQfI z)k7Q5gcN4hyj0dF#ay+8V>aJK1WcGu0(-k6KZK{>%EP6v9|2_HHwRVC{1{m&2yMW; z#h&=0h}{%n5Ok^Uv~;7bTEjKc94RF+VRq)wVC znaO3gz`AH&M|9c3I%4jrXd#k?6i|etVt@YFmyDK3EBG(NU2h)S;^u~IQi@(xG|Ctp zEcU3*uqZGf*?{HHUQY*gixcaRx)>{ZJUCc$0y))BGbI}!rDi5Jq>-3lT+a1*VMJ}s z;y6-b(jaqlt5Yk<@(2n8iL01G$F5s;MTVyQX$E{puJU((=)hRf31F!(t?h~RKLAX3 z7$8w1u|c?OB|dIK?H8F&j3ptUI-UvY2~oa*e9A!|IDp}OB1C)NNOIR67warqT|lIR zgGSr~l|py>+%By~c{8K$*69{>4{;);2`f4TPcc%4yR*fP`l6L)ZS_gshJBuSN>B&+ zUHFKYz-mHfK}n+2C7g6lSmxp9O>Qx|Od(GmhqQzAjh$9pP=|OzzfOEk?QPFGw3i|n zAIe1682}>8{+HSx*uxoRXL)vb0Qr_kJbyTJg(6X~McHuL2iIb>k7s;$nD3vK5(qQ0 zVlv;ViC@Ff2AX57Vwtb_4!Ih+it*;k9lYY=(?wPb>MV=yUINi+TFRrpoKeQHD@zOJ z+(B_(Mo}2qr-al0*}T$aEgUk6?2ok{QpOV;&MFp3FR!VOSp)Bw`tt$V4@WZMb%MB{ zH)Kixj1lKcV{%mKEO3)dqcxu zv{yFI;%%-bq!8(W;sA@K@almo0tckT>Vaay0jGjq;x&WI$mDF1q%`V*%42o1Pg{e5 zn4+rLbkIBSA;NVW5rVtBF^U2Hhw4{{lgE|7P!_&A}fDuaK z%Tai{j;XEh&q$q)j*EV6&4UKKEfsDbGHJVU7G&rym z-HEcW=vh<{I3~F5N5%j)o7k>Z$Dc6?w-4Egp2NX1Hi*j6hTH4Kjh7(AE4ONvk)bNq zP}z)ZFkoq%oVdfYg`xmHFd#u$L~&1pF3#)-Vk_de9Vy3A4^u460?&(?RAnJgqwsQD ztkk!E#aMdoXR~)2Rq3;I$V{Tc&v!V2`>)f;i$0lIuZ}w6O*Kuj5NVbTM%Ef?y2iYXSa30$UCAfV(# znM{A_{MHVUZlCN2Tx(dx{beuDD%<&OH~fa+hG_;<4e6kT#b2C4P!=%XIFZW7U->E4 zv}pHcWF>v*C}%QsOX@J88cGCEQ6lY#W|fUkRbemU3F&hG9*mz~gTfeAZRN}+sPEHh z7i2J+`dipsh4~B6{#5k6{uwmy8HuSw7RwQLT@sMD2pwDUd!jDPA=B3L2#rw8;YC+8 zlyG8?CpwO-W*13Qyds4)5nChzm*2Q-+4Eu5z0ox*Arm3gX1ZOB<1$}IXix0ku zG{R62rybQA9LfFVdnitO>Qj598nSI+^ec39cQi729>W!mZgSa?h%zLl$c9X>qkFpO zC~=mFJs%=~xnB2?yhTb@(Y@*SU2die>8GO$uSjwNM%;V|qwg7BXjp7PO()xNsUlz8 z)u|seR7V)VeEyc=vGCZ4>a2V>lQ)Zvr*ObNBNpDGS1oE`H2lR zYoaN-J-z*?tiR1^60-NDJIcMqQ?|HCNEhcr;2a~gANF*xJuuwL42hrV^1Y%~FLX8+ ztgsYeaTYMqETTB$l%X$16#n=|?0?8Qh^+Uz4Mwu~X>UPSPJAvP+ldlVXNY0FQP*WtXoo_1)%fu+_!jy9$@yIc?IiGW;u2m8x zB+K6ZHB&$6c$PW2i_Q;4r?R@Iwm}A8lPdTP@GH=3ZT4#^={(&oR(H#iHm;@nC&}8a zSi25A{I-2Il5FGJ<;fjN0y;?03lhJfrN{u2HTG{z=8W=E7_&7>N3)GJ_HXo3)u8)( z?RbJ%VL>WqJ=eEl#Ojn($6pv8NQyKzuP#g1OGO2dGP8?U-#n~|bgB2PR@9*$6425v z01!H?J-bu(*u(UtvV*COEod0zGP-Luk*n>dM9SBFDR%)NspfoorCkXB>g?qr5L%`5 z`fxs_TB1U(8+fSrS2dq;4MD9Fv!011dm(G}v3j-7A5lTDli=c_ZnD4)7-BCR&W6R1 z?6hXwxZ=dtB@WhF1&Ak?-Rbd`wtv-FE;!6~+OxQ*}Q2>|eN1eW=K_q&{? zKjAh;h7>VVP#FR<;iRVGM0r%_o@%B^n+r%j%_yFE%siB`c zh~O@&)lOdc2gv+-38k=-)dRe(FLiBAe_2jV>G{;3y6RRxIlRCBBhbCl)APmcb8mn? zI*XTTso}Sql0blp)BoHk=FkMJ^4OZWvED*_qc^MpVf_8ul`en?OrfRMv)g0bf0>Dw z@1~plhE&7ME1Aa!18xu8gevcx6;P7K^M-~$Pwd*qIB{t$%(c?x)V&>kyjeruUtiHe z9=ybp8PGArQwdsF&_uq%e$U{Ade?UyD^3*2UyMY7^7dx1E`U9X!Y2SQ-g)6m>MD4( z1OI9q#Umqs#TN!iHm6E${Vh3hR9wSH06kw1LFT0rOa7<5!V9t!sLG6ZE~Y${|D=CY z18-b)S&$kUC_`fu8^~W^}=M5bv;sW7d6PKMtby?yLX(=#-{f+Mt?bG(j{xB%bk$kpo!w%D1l932w#4uMHdzg z1}=Md7$W{bv6@!7@uvEWX4G@ZnuP^H4-xJlnm69_T#@8!<+TH5NuMv)gtQ=fGlGNT zsRy9$t-&~ULX^-^KdvNJZ-j&=JUhMAz~5XEnr&{HsLVDg=n4%sm1o+u$WUOq(jxs#Hm+*2>30XMzb^e;PCD<-^*K{=nn^E1XoM_UsxT^(t896sFHdZ3mDhq(N)&}J95BmW9_xg?O5i9t zKj)!gFD(|)RO6k-sqRI2Ti0PW0B^^JByv_2Rygu_`iN+G2>^j5aw=8to6 zH1+ep)T=C>SBi(DA%hn!{t4LdXzs}MAlXO|G!IXm;^HlW4Gy|Q+EMThJ#nch9Ue;h zbIGOZY0}v&45;6^6v>xwRt9ewik=1-h6*SDh!h8+L`8!+>if~Ix@^P}n%%&F-O-$I z6oN8+DrNz2v_2X=IID1z0$uf8P0*FnG_`I{fBO$j!0Btt8i#xuO$M?=)E638b?SUn zY}F=&ed2EfM%;`m)p{xtVP;Fvplznw**JoPh?TDD!Z=15gLRHC_`?JVC{)1ekzzy~ zOx%`?)@zX_+()}HO9W>AsJgB}QP6iPz>Im#jI#mab$M-795dtZlLM@0YcKjQDKfy7 zQpm4!r8VVEjRzXor=YFiQTo?dHU;%3-Wbh+Be@vj$VBPb%>Ow+6&~-xon@U)jp%lc z!^GHAMLuW*rih;7ru3aLI0-V?H=SU|?(O5KB%)La*vs#d0nf#ZfmHll^5YLfG7IMn zLAnAYCHPQ=7iZaRz;wg5dB*sZX||Y>9rw4Byh9KLyqn)zG+|dacL<32DGbU&6X8=e zPq|7eD(5pXD(GZv55W}<8sI-vFBFnC2v3|g zRL#a75EeCZF*M_f5*h~_$wtS0N~0@Fd8+~AvX{}i{LS+L<2q;B?55VA)r-Uu_#|ui z!ppEWa22VOOy}b5U8G_UD%-2 zIzpoJh0Sk(SaQE^6>WJa(=y^crY!!Q4_h@h)1F+@*q&&ivb4&M`CFS0Uqvn08vq&& z+)9gIiqCx29J)^BNd*c?wAu}R}Df^_%8q&2hYR*szb}3KWn}^*itccaxXBF>6XzQcSCP5X+ z=xuewR?~Fr+s=#*cPb9JEs^B)sh`YJ505659RkQ8Ic1%vJ#?Esg%{6(Qz%Ia5df+& zM#l?E+hnwf9DrdIQgp>(3{wRh_e=ZKA{4yR4{DE>ohuQtG_&N>M~#4zwbKNph@?J_ zuCCfXsibOJvWX=u^K%h}*TGy^{m|d&Md-7f_qz5rcmd)!(3}m9@lpWrg;gLJbwzJK*P8mk4Y_Pk^+Q`4YK! zE!opL4AHEUE2GE_e1l{=IXQ^!1630_3e0(zz9L$S8k0af#%jM9aKFpKKXhEm`I9rz zT4GX_Sy1*t6(g&^)oWxRrrR%3fj;P4Z!D)TU3oJVfwF>Dq48qRIV*U3(c(y&T2`U* z-llp=rbniOZ0Xhk&)6OOHh`#rzfw(8g^IIwma)H1M;&^39&Sa0v8Z7>>Zt=l+4?uf z-2ZfmR6Ves7ou-J3Wf0KY-oqCl-U=X8bHj6I5m=`ce{9q_O2YMnC^7A(IJIWk>xm` zYQ`x3RT|pap~*pPrQx;VdD}^`y}S;qE3DI@QPRK$sT`#-fHulESOIV&tB=#D3|fo5 zRg;BpUP;H@8-!V!J|qw)A$mm5J2RJn|75zPFc<(|C_K|nXV!*FPT@4P4|(3prqtSjVgcM0huxmRZ35ipeDlg)5Tr4&|NPZ= zgLU01PH^k(nM3s~TFe_h)0lj_sPed2iv&L&k8qu|S~%#7mr6KvvXDb!Fh^5H{?*@3 zFpL5`>6oTyI3^DS9&U8muVAHDDb>weO^4IvAmv%+nPGh9yJ(w`0Io?N4GQNOXHxbx zS^`Kfw_I}VLHmV05b(puA4;jz+xE-wlpii*z~qJ+D>Px84{aIumO#I{D8y?+j$ zReRkcX{P>n51^e>i09a*o&>s>&(}_?0^BXfsh!@{H^Q-^_T30JIcI+bMpY(0u*?ko zAV0^m%;I!G=jgh;oZwMDTtup2X(FbqegwEL-++}dn&f;~d?!)%W;+Zh0kd@MSsSxH z*k`IxmM*&BDr;1Rh<-x2vZ0RH+I(+8En=I0b{qT1-+D3jL2_LLE zn(B%l-)U3CytKyhX_e#G>hqCM6N|iR#aDxnv}>=g%DmgVXKpjAZzLvYM+yicX9Q%2 z2T(QcW94vKG+~fJwA9^yBE?Z2nl`kdAiCizW}5QyltU;~g@SLNsx=9%B#Io~YeDY` z%R*e347Xzz!hnd4y~J$@(6rcQ!F(DM3_HTAh<;Wj+p}aS4 zlU^KG+sBpI7-2utzsftWwF-1LWC5geA0HypfCQQWS!-}a{mQT}In!|ow?o2Au6RtY zHYB(Rm+}S{J2t2++Un;%$rJ;%@LLN}?K@h1inWUuf;Y?pE?8y3cA;gz6_4?eP@75 zImd6Dn#K_+kTqOfMgVL&*1$)$_jT4N{4Pf>WisPMw#hI53rGT*+Zn;hB|p&<1e`T6 z$$n6q8WnmX>CY1(PmeP}+yZt81Ycbd_fcp+tc5L}xnkn>r?~`_%}P|4Zht;p2yXf7lCi`-`}ZVEY?NRDAtZl3nt8MasqeD zGmKkusKR8hEWRbe&-}}R!TqYl6l^Zgvk@v$S&|&Du&Iaxnw(_6c>%I*O@d`gG@me6 zm8!rT;D5T_w0xAI>mr-$EH*HSVV*J6#D zV()P0ZN#a~30bC=947T0$GSd3bta?TlGRhL;Ofww4z)D`KDn(wSe=i=sVi|-{1Qzw z(#O?j;r{hQu+hlZKmdKvljLp;Cfj(qipv?ODLl`ivV;mG3%b5JK7UynvFal$5_gNm zi+j4p8iG+kwKwphPualINpDe1(Kpi=LWp1S*Tjd<)Yq#9g9VC8Hd-O``&e%dA-2^C zvvB!5=SP%rt2m(m@Y)%F_7~)M5jXCCycH*BM-u~^|GF%QzThch&Oa^-M~aFws4AcX z$8yPpHG2L9{qlQ!!3x(DyhO?2Db{=O*E`~7&G zetWL}2K29;-d1P2>=BXeuf43{5tC5^Z5E& z-<@gH4R;tXP?pOG zUqBYKW{2~_NJv?F+czZC?8wMAc=-%L_2L}nV)aizgoHX`FO8O}h%W!Wkf+bm(Q}rj zw0GxtB?=Yp$+Dw{)z+fX2LPXet5vQ>jR+>7fo&bQ$DCEX$3Cf$lJCj{sxY&Ozr9mM zr)3^VZ9AsMJG{<_44LZ@ue%83Sc^nQ{_3;tYs!0b9Snk z3Ytt2C&2iVhN!)^<54Wa zN0ropaM74N$ityX_(SrVOXS-%Itd~Z(l9B>X>b)J5ckJWxHFOUDLTk7nmHV31Dhl2 zGe7dms=|?01z(gr3tfpLC}SUMX)70w!3F+W#0v7+y@B|cljP9fwy^9QjI$4!_=T}e zDI)4XiK8T<1+FX9Lj%Au9e>*K`vBVwG%0aHhD1t(gah#}^w0ukJ}@(Q^HT)xs{&yM%XT+uYwjdxfChSKE5wXQJH&FEwSJ-gxXKQEX*0^X4;F4f z`~%d&gPu=Xg9va6nF+h3H$NqQz<7?{Y8+KH6hY&}wIg^pheXIF7kaN`3F-N5SGET2 z$0}$QVC*@=^bNSO%GWpTNu+SIp8wrX-a`Nt91WcTp+keI@rL^6xZ*iwD!m5?7Fq=5o z%WWU?+u?Z#tPlvXC5IP4Nv&Mzpg5*V(MWBiB;re2f`sFCINs3IFKc2;E{yaOesmWr zMG8$B7y}r^&MEw?P>NLkVB|=%=(%?fGYqI3F(U_7dCYbg`eH4vP+$l>@Hnc^;Xc@< zB*@xmulri33b)u8r-BMc-s^^f8y?KfkHXwgJMe0Lb=$uwY)l27p@reDP4UbV^VJDa zn}>>)Jj_a)mLEVui|6%QvQHY1aBq({NU_zD8v+<$1ZD)%&)IepI}SEsnYZ%WWk)fY zk6MQ zw3;9hLaD{B>nIS*Vf<_+nUd%67fZ<|XqeSCdEgp~;Vi@~19wlQ zrT}y^O`GJhs8uErctton_EBi=$-$GVK2QcE`3CpJmP~vf>P#`%8exR0T}-?rp$A4* zI^%rmru8ztWArPf3{8syMw&vhTfug@?bQ7GhS-=^+{hrJAxrtt$P#hDDO_+ko$xwa z*_VwNBW)gAs?(t=lRFNIh46G|@=| zt-!^l2V*fM%QeROnrRpYVDGF1E5HvN*)dzzeal#ICLs~=5YXXYf4HhH&y-Tf*Xe@B z1mJ5{NHX(5F0LzMf5YDPOPw0>GnON9hVMbIgR?PAvo;`7Z(dU!jG|qy@VaJ}0lXA7 z7Jn+2Ib0$JiauN*sG#~byXbR>OMb3Im~FkR%y22`a?D3H_C=}64^s&-hAET#787HQ zz$vvi?MX7Tr*kT*iYrG<{PO+?Y%hXBGN9|Sosrw_k*Eg_>&9Ok!~4qp_{XVsab)#c zliK@A4|b_*?2BYDn8hP^ZqI}q4Os51XOg(#StFUu3=2AgklS9u)5eYcbvKPO+A$y7 zV;R5(dOl0|=2KafWzfOfs3dvjcx8nO9-W92;ml!HrzUwzCA^%Nt0d_?)Tw1UnD|#| zF^hv9#XPY#91i@}V!yq%xS&dG*fZ24{R`$b_ja*{Is5~rjaX6o% zp&+Y6yO&7&?Kcelg1W{;j>GJ>%-WC-6eo11$c7xz$w2#H{uHGs z5k#y0d(spYIS&IdPw(px@ zc_Td<02!TyN#|OP8H?Lx@y~TxD0920z7(J~)aoGTfM6L=`%O*`caO+?eN0eV4lnA4H73wOqECS+5X=XhZeDPG4vykQ%SuwJ=&}TBhB-{ z1!UerHH-_BX_zjFE9Avum`lYJvvv`NpxS59?;8IJ?FOb#0bS?Cjy@CHiT#TbG1Q zvpLWU+(X>W;%Q68+1Z0jt{iIdW+1ESg=`OJrw-MBJb*K3A>UD)MLgeL@n|?App1@C zl5}&g`l7mgFc8nEnbJrQCXl1a6epA+kn~<0+T{VAH68A@V}%vS;Xa8E?ET#HRczID z!JO$--htR{#|fM7Q6-xQG|pe(%EnimeIMzd|QXJ^4#UBs>DQ)X6&Ht@gMA9Jc7SBL%v?T)G5)(4i%cxcS z#d<8Ane6C;^V-qJyI!f?6tD5@NW+!N(GTuiJlCO~a zmc#=LqXU_E@5GkaNCRbJoO&%MC9if=O>OfFf>Fu_(&VN#9%|0M%NyZ2&lJaoS6~}T zAinmN48^eYY!E4@*xRW?NaPU7pd3JcHCnasgMa5*sBpR1kg?djB`++c_&B>v;I+{- z`K@K6nGz{kiLwT2>v;Y1-9LYcg+>2)w$l8>R2!x=Td9ARn9eP+8H|IOb%y+tO}~j7 zT2p6WGq*&YS!Lmym%63z*TwWx9wvJr&?@_%HB9 zRA8_mD0SVrC*8S}Os2(6wz#%fhY#T;<8ZhCcGp%C{3@rQrr@kp+St|0-^i3u|=A- zs>o3U)764j@l0Ees7k3xsYgKPgPEZ{-pkdA6=Q3vywMFe_P-;`U%DXqYnwuK6r1eh z82KV8{)TSO=FfI#t~;A^DjM?6&_XsE`jn7ND5XN~Ec?hr>BKZ<(OQG+7ln9LH^3vMKUT)wMPo7wwicTc>NA6ALLU^+*)Ebjxk@hm z%vqA0Q9S&V2r$c;WEC@+EWI1u8cnWCK$MGDyFr5^IZiQL=%zAJt+9(O@M)9D)0~7# za(H!}zkZ+IlCPcMD{KK^J(^axpwF|+=-el+;&sy(1;p#UHSv6_YmLjq5(JA%n~a-n zI2Z73sH+>2t&WE8M#GpstThs$pY=G2ixlENJ*1$qmY~ns8?Byi0=}(;)+~ixH>;zfV7iy!bui5oFCJfV{`D0Z4+N8W-*yeCKt+8#sbynjuQ*lQ=G~Q z;4MQ?R&Z%bi~mv@PV|o>Ju%;Woq*C#edDhABbc6N$q)f;V}cyR)G<9KzD2imufVh{ z#(yeMFR#2h3q3_yAyVg~X7S2D)p{paQHvDu{Xn9V!F0N3X~~gUMy}QO>HdN!x5bqA zUptv0=*LcGWlG@-0xbqKfAM`)oD9eQvA8v#t>O7_czGhDN{#{Q*+jq}M?sqlQlhl& zLFd=@@sr=^{?t}l$8Gy#-g*>T#~F-WGezG*fS9trdyX1R1goTE{BPrHa!e#%KqS>F z_&M0};Vvv67dP={8TSx*=!y`n; zU9{Ca2yVtaI^170%CS-Fm;#jIKf?2`s};{O7>NG{)_q{%mhT^nGw9v?bg6VuheEi+ zLxAGQcoB0QkV+Q;XxN_D*NQ4mgO|PLkq$qc-tl~ci-RKuOPpWoQ?8*D>|<=g`&OP9 zMW)$OaSHxr?3~Y8j@*%nPu=tFo+aDGeCVNJ*2A}n7TPqw%0A*=3cfg!Hd$4`!0=Rc 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 XL5*9m<$*+vW<+iNYX+FE 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 delta 328973 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

    OD~+z`KF)T^%MY! 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�m1Zz6t zTZ>;gEQC2jqJgk{5orGYLg;%1emiv$c+20>(9h*Xu-p@405&likiX+seB|)5VY&eZa4d;#c#Rz}2`|h$mnse3MYb-Y)^#{8*q3j)NVsrdIp`onNMJS7)~F<~UaFrcO5wFy2RuTSq_ z8Tf-y!o*yD5xGAMh#C0NM}HW~;L?dIL7AXUGGiA0t+oENu7F5GiHt#L26@D6k}UvM zpCR?x5ekpNZOcLAd2BAdZ;*XsWU^TJ0Zf1XD4dT`Nvt?1{>T&&k4~Ii7LAG@?DWT@ z!@6MNis1qDk4!8YjY{m0#o&@P!(k9j3W;*i*&h$*58riT!&!zfA_`_l z)(i)K5|K~xS76 z{Q2iFsQB?NftW>dupC&r#MR7Uap)u+b2&`HETDi#v?G+mW$=hTh)xH$M(7Yn#5W54 z1w^?t_$3!%7|>ElItC@d?wUZ$WcAJh1eV@q2gG#z*-~L9Op+@=xiDP>0f81A36Yk= zAWlCOg@_`g5}1D=X5r6S_GgSE;%D5#Fb0E0Fjk=D5S=L%g-s@5`l%=z#m~I^_Xo6G zE|0{7jj{+#s3@1gCXJX%#Xs%Tze604=xC@^i1md2=yWRoq#39E6IgLXd}k-rA<&Yg zrouFk@rbGe@xXxy;{jv%#d0AS52aEe*a`yy2J4tCH5-4fKv+On$0VV-u*!t-fH9ZA z7;21H`oK&7+54G?t<`65B@fCm~C#-qZ+B7c1VPms@owb96oIV@uCN@akS zNrnmaH6jzh!=FzPQXK<06KQ!6uSkpmk?2~f40soSG}Z7t42dz5N%8>I**AqOYHm<(dr2GatcPNWsi^!fUSEfAIH`+=B7 zX3U}zH%kCu5fclbWe|6GI3Am5Tkz(_=yXWJ!S@js29=F+iHik-0)s{90$8#Cu4chv z#_@=I04kfwAx9J@m#-`#B>*BRq_EkL^9fHRyy!tCrW{l@o8%9vpnGEa3AB(m{OwPm z1VH3(3HnuL(7Ff%b*d1BSaoLi80`jB0p@=$WZ|%mBg3{dLjzVV)KaB3XEZ{NrBNOJQ`FldN*nPlW=gH1jc~KByLL~BZBoT+#y61$V7x;fCmei2;*{v zX<`0>m_}ku1-%f7A(JLLVtgFL3;|&LXD|EP2f*k=M+`6~Y(j-41R%M11nDgPa3`Td z4r%%!Uebt02(gj4W28fL>)VL`Nx}gL&z};QFj3|J9kNIcn+c1A80DF;btCmhCB{{# zZb7n0mJrlQ2p_m5kd_z|!Z*5eEYPk&Fka2_XrG$V19g0R{;Hu|rs~q!B}I zO|TiDWs<4_Ao8Cyq%R2vL^l2&osf>9P)aPe(3!ATCE?MjL>CNrG+|2zLuWz)L=c(> zKqh`fCd?R|HJJ%}fDXCD4k7-c#4;4XAhRLzV9+>BViL||kn&l6KqmGOV}Kci zf(}U~VCjF<*_VXFmg>VU$i@njMVfx_jsWAw|Gp>&`vDFq?}gl-4)+(ap}Ox7fRg40}MN{2eyo`f(Z6WW8;-!0)GyQ68#bl z&MQc!!vSAPG#z|nOIQ~W&S9SoJo>u~0J4d`g~oxrm((G6VxsdyQIgp~1s>ETJP?3! z`yZ|fTn5w|NLdy-K%xY-XHqN!7%4cyTnQ}neb zgon>R>{$jvgu^rf6Da4AvO7A&9)hvLPbtty-kHv25Zwsiv3Nww#D9n3Z${OdC_%1H z%2Q#oNTb8EMZ(I35+6BKz_DYmq5pLmfC&3|!ieF7hUhr)w3k@B0~r6+Jt6x5yCfMa z1L{FSeh%gzh&kku(BPznC=888+AKi{p19uW3>t)65-mBOWkAWCN184uOcK^R6e}U9 z6FY=dnhb;E4iX+5un}PlC<6;%f47W~CJ|!_R60q;e}J(`SsMd(&Lm-=Xecz*_)Ig2 z$1$*FgcO%pC<7Rq==Gpx2R@iM5*9g!0Y5|9+rSQkRP|;+X@o=EGBTiEMTiHGG(g-V zG6v^EQWNC3WIS>y3ChQR5-(<7M#X@-1#!AqR8sVYY9STA+=AvI>O6+2OH>p*7>yU* z@E=>Tiwur}JFo!$owc@)wi(xIGSkM2Zf(t+O0&lO8*MU5WmB!Jrf?aPX)J4ViT{s+ zKW=FqHPqD6#Qy;1%NTzE delta 55009 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 diff --git a/stackwalk/doc/stackwalk.pdf b/stackwalk/doc/stackwalk.pdf index 374b2ef421afe260f406a05aeca1acd9ed0da4c8..86b0d59c7576d86c374a1cf64d0d3417ae46e5bc 100644 GIT binary patch delta 14257 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 delta 14208 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

  • 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 z z=gC;-&B_$)y!V7xpoh!xj+%~l;tRAqd@t2u>}H2=4sWKm@WbINaaWxa-h=)3x^RFh z=vK9r&r`ih8TQy0*mHOv{hDpYzCDG0h5g9GQt1zPz778;tB0vi`6c$w>hK-mS11Yb z$U=lV@fJNnE9sAj+Y~WG<3pG6fpDYf#vAH5%?dvncCaW~7QO~M@6)u)sABKwrA&1f z=I&-?2`_=a`IO9xA-z)FDSj#btaRh5H3qYBjQnT}`{axP&JOeMVt+I8BLPyCAph=@ zf})Hvv7eFMWKfSl&q=U+GPA4MRg~(redIgqyUg~1Z^l_4RU>UX12V3}73YfcfUq$N zopFkxGnz`LF{_7A{zUi$`#w$&(U>dC4)e#zPUi5CX0Di6Mw(VrW|E&NCT6^@NpVq){QZSZSY=Pcb1UY}Lr(?mKeT@wEuw?rPX^tdGMyKdl(As=ok6%v z!SD~Y3?%HSAZZgpK8|L_=#*$4HD(h!X2mR@J7^SXG2nqjLFm$xR%?_JBm0(|mX;D1 zwNm+B%1Vl3ahuY|YG>byd~4%ez9qW_dRjYE_fQ<=z>3O}_JHL7%3N z*eoqQDyBDcX@y00Dq40bX!)V#Rm(dTC0h39DT9bfNl7!y&S+85(dLz+*E;tRIa5x; z+skYXi|c<&)ib2WYz>@ExX`&B6)9y!MU!-g^1kSW4<(+vMtqnXn#R}TOqxJdn){x( zN8|WcqHmAmQTLhS=sujbFcr*uVzQbI%+Q-S_bS=o!jorxKATU@hLhv4`>=&9DJM6F zm)mGUlEJ`}5>qlcUw`l7Z4a^1kG{C$GFRHP4WU(@=}YcneLrUvEPQQ2{d=K%p8v(Z zzDFN`4`boOJl%&%EjwQ+FilYf8jph$3D{K4QE*`7BX42oO=@}M@10-^6UviQlH-$X zWGt_!h%Yb89m~hww|MJAp`#yvapw$|y=lF=sGw=d-JvhM5_&PjuJts$%dUR@6@TCE z2lTi17Uc@%dt{-VT3RtL7EY7XtQ3<|bsCB-t7w(Q(2fY;W-*J5BA24TEx6+3;)N^! zM+g&AW-;r4#X{{WQ@;bD{1_cnhgdk)8SvceDLb>cu#8@W+X|_56Ax4CA+*!ua z)vnJo!?jCSn~g?`Cq8jpRZ~Un(ygJrg;`sh6RhS$bJh59jXiBk2c&m%STAqEnOjh` z=HzN`#-fUiDr5S;_Xy%P*38=3HrCIMF#`^>W&5dDnY%y+= z&z|Nf_sW{@!XCH^Zzl_RwK1d_EJ8DDRpn-_y1dQIcAEE@xp`BxT<^AzR%4mSzKtvK zT)1yhv8HcV&+2q+u_o&k;S+o^W~iXqnwiv>9N0e@lLKnyB9U{rjeXRDmFmzEouWjv zi*C^`hJ`^KW>4^!lptF*a9m%lAIO0Es(rVrW4#+}&&dr2$3Z?hl+?`LRqy=kJoPcT zCr%5$Bc4*1kq!5$LxB#HGsp}9RZWu2YE28WSS{Y1Mmbsz*K*o(`g4YJl$WG3goUnd!oi zkQ3{%_-uAQ3XKz~hTtnsRinWYVX?8ef-%)>isk|r;*ViIRf~^_iPhrDOJX<1Zj0@YRbuTahj=zSF&bR2Z-x!4 z)~AndoLn%K^x?@f>_e|tU%IOoCV0ljB_=1QB)Q5b^Kuyg+5b~)nk&I~Wr(*=OpY>o z(mb`w4<0^!>zav~+~eUH<8I`yZ!d6WI^;YoL?8E}kC|+l_GM$Lr7|UT%q3;18i-wz z*v#bQe521e)%Y!=L33WAEHGV>vLN+p)7rST@ef(P9&>-(T+bNeAN9)a63$ar*SkZr-a!tft66WS71 zC2UMk5`xUACCJ};NF%4_>~)HEXTOs>?T6W?SZ7wIX^CyPvTWpA`4L<~kMloq6Sq4K z;d*y|KA-T7%;<$Pu&iuyVVyj?a5Y}ss|O77HyxhZYGy~wN6nlTu5R_7kXx8OGVzs_ z+%{tJ15V<&HTnRriM;?SS`EnTQ}`qxBB4sf4*($ z(r@e!otkJHCqE>cgH=8c<5|k4AEc=8a3H$UERSiv=*k*%LsX-sDN8wOX8HLO^R=?} zvZH0gWgkZwsf^W_H@a^e`&jnD>_cN;7<=4(-1FDexqHMoVZOJS-$ae0}(7eTE89`PzXtU<$9cIfYk<9!p&C-l9;M?>uz(@}Iqgiy2 zZG*h1w}@{m>M!C&kne9ZZbaXM{B12tD`Wj-LuDLiGB)`sE#XK4Pq2@d8_qlD2S^{C zlk&v|asnq>Y(3tSYpPE!JSmS^`W{pmDd);Xc?>(0}XYQPG zQ~QIVA)-s3sP1@7tji~RusL(wTgvG|MFZHw2J+!x4v%aZL6s5b?YA= zsM~s5s#V!=&p8PX+uQ$NoO4bl*?hw9@%??jzjLw(u*L>GCJeZcF&m7KwOM(<+IZGz z<8f96b*G7Qn@k+XuqLC80}&qbPs4x3D#8jM)_DUonmMD9Gq5%r`!t-4^M!+pbgS7c zFz{jKNd_?k@C#jnEi}CZI3MHHpuh-5-2_d3`z1Nl*-Smuj1veiKM;xDXlcx2=Fuz; ziNjsZjz$MfnBH8L#r29T1wp`w)`i(fXBYIu9dXP_U;$5%IoiK__~&TlcXpQ(@XS5s z2jQX~X5-nr(Idn22!36MI);%%Vq7}5DSQv0_Y?)QvSV;8kl~~wJ*GYq$MCN>j^j{|&yS-xPLMDAMbxK2 zg}jMwj_P8ch(v$v7`zXjrWQNZj$vMGC)S~%eF}pPUgLU70~(_~L784Imo;E>0rH>% zG&uR*gmmu4mS=YrS{) z*k&$mG%#_0+HYi{^Dvdg*wG(N!emmwWr zzM8=rw#HwvJAMkdL|4?MxpdcdSD(w|@@Fnml(U#{o~m*b3Kba8u~plLy097HMOz-W z8f7D*CdBwr8&u8CP%s=sMu*BLRdXC8geYGJ6gyreEXnI&&>6iB#B6u~=Q#=i4GJ01 zV`og~ah-4!N70#RC_tmfeZk@w{Fxn_e*EZ?#P)x=>$MwieeJFV&wd{Ye_JyAnsd^` z!sMA-Hm^_4G%Qy6)*t=bmW6}+e{%Ov<{pBfet1QB*6`)M*UtaL`21rJJn>Z&XTj8S zrHPEeGyzq0-z|@$>1D&7G_wld5m(fXh5)Ja$q|gchuk#Et zu$WQas|Oh5W*EdWyg{E-GQ02KSwy}Mz zfqe#j0Blve6E$^;!u1(aL9^mew!%+)?dxBt2CsRAVTEy%VUv-q1}?6UUD%G8fn)lr zU>avi{X2TI+}r{0E8o?rO)G>9QOyB=kKuZ1@_UP2~Gi1;NQe8~HF@~5ev76#aU?zHt|+iCmh)am++i8rU3KqDMg zZ@8QTwm^!dgXp7N+-RsHlZy|HGh#n&D-`tyrZrX>eW~$^^t&0C-GYHqGU69eHHCP8yjjv zHP%VwyNqP2R!g|$k@na2KK6^HPwa1;`u2h6m(J*hBi87v7A@*2jcB;G?R&Q@-I$z& zp4ikkW7Bg7yQc11via&oo!egRUa)-5fj5?}Z@p>ts@CG-eEGwPyXW8b(At?-G~SFc z=vz1w_TZTCffTgqg>|X73~$EXO0kRCZo_(Rt$DR=4d3lr9leXY-DNRz+cIc0XGlp( zN-{8El?5ilF}M&&P(Pe%!<7vqlWxwd%T&yqL72G5Zon9I_hFw8@Df3w02H1APSF{4 zGR^^b14g5ap6SUjdS-s6FEf~7Gmv1If?uXvp0gl}Km83pGgKio!xhwTse+S88)S|O zMm1LaRU;=jhb<|p!DKuc;g#z^NFcI_!>gz@jJ1;k4>7ZPDI^g`(VE~RU5t?xBpMi$9G>f`_9?p=He!Y4|Em7TAHE(D3V?6SK@dp?`Il2GL4ZGf>5K<3Av%pvM`?y{ny=EWAWcyDpX1O0^SM zn;$ox%*_6Z#?Fl!c8#yB#*@l)Px%R~tq@2LdX5hn-8$ubRNE2aKixCe?3fW#_So zeU_O@8ox}69ML(~qmORFQlkf;Hazr!6JQW4c%#u^KuCn}1cVyYVIO1w6k!z0^|@vf z%Q6g@%T?M(&6Kr$-i~P*U4oYO&TR8=^XKifc}$um*Ul!&)-N&I|m=U<3Hv}Rbum>Ut zIRSAX-$K&j^%Jk>^CTz4p`ky13iFl!#Pz)|yddIhgeL1UXBPxsw1mx(HpS=>Tw=fx zkmaBhGAiUCtXd+|A#GNX&e6ZxKfxX zP7b#!vxS-BboZ?A&BBf1;_xc5hwZg*6?(;9=a%s1$V0+I;!ejy;iJM)@n?af;a7!M z#9xG73BMzp6h9F@5 zZrQUYEQnDt91O-BqTA8ofaJ?r_5t*=?m%HTLg7egHvkpG4ZtJ1jS~gNy81W9cm53@BsQ$w?}n*oBcC8WB+k<$ySTq+fy~0F$+wD0i+lv)$Rs!M>6p#Po*ekAoq1n`o|EJXS;^Cey%t;j!Eejr{)G)GP zBrL#6CxfPo6)}5<|1vi=`nvM;>Hfl4`1?3K+1P&V@abw0$n);f!fEK841B_@2B*JNbo;4yS>Ca4ZWVnl41iLt$5A(=+f_KmiM&glj_f>NDAF^HoDQ zc7`zqwRe(ZJR_L8(=wfgW@G8zOd_;vhz3|!rJUl6Zobeqjjtj+eT}4lh70Prd@-Ju z!q60u{W3BdlL=hr3(2&UEWo^JL;=Rb$pTY^BMMAP&J>_#$Q6JZiWNY(o+%YD(-oVu z&6kwgO4k63SlHFo1-d#f&?P{cKNVtRj4P!={m2H|t&7J?3h5!>`>K~z-wInYIjSOo zwuqR6-*dkWK4Unq4|0bTjn!X3MA9bTu-YyAGbSO5Ij^=&IUk32i$=iA24 zlF{Mt__=r7aCExb5bt7^epjhgrNmRK7d;}FOf4I)TD`~n^)mUOdn62I)GCKnMn5P-D zjj^*RbOke;G2}VXk&v-WFdRWLgvY=DGo?TJpdlS(-~f8}h$FjSgyH}*?#MR&VIJ`V zOkU5s&E()Wg!SUSCmk^2XmKD%K*s@SZjMS&kRlS2Xn07I)$141%A0NPqFv|DyE-ww z?Iabr^Gy4h4_bykJ%b^KFy5D`d!ruNXfvsSq&4YPjk388*gSaP{DwMc@$q$pCBaKM zQWsWkt~fP1^0=L}tL!tf@hG9P&II91#B(FrUqvEgKX|0~?e(jM9@z9scVtodv!}~X z9^KjxTYh%$wi>7G4pnvagvK;TS|HyM&qy} zPI@3rT=CIt^wDheQFHq+S+R*Y8;$g)F+gq_cf}S|eL!+?n2wmec4a@OPPv$JjptJ= z7zhgN%L}ozQ<)3lh{6sY4jA`#Id^0hktkWZ!j7kby9bl})c@Zzn zNO*%J1JanfjCp?F^W~NAY?$#8tS|rjXLFXTBbDXM(hbpCb!++AUzgv1_BYoB;Y8?z zet3C^#Ci>`2Zyo63$Q_N(MvZ5R|g-`_DcJ-r?tTnH^bjy>@aQMHkf;iJ*I8kHnTYq zkwZ#MjmTLg&gsM;oMN{}%ra*prc}rslY&shD4T+!j9?t|k5B>Z&gMX!NE)2z*SJ*F zW^q964#^({gCWkmkK>H{T1eLum_$>niNWvnf!;>nYgKMvZ8lPu$3MC>urG=k&AT!q zU)xsdz_O1i0g<{&q+SuJtHhX^psq^Ln+fWw#IEAtQP@k#G;tI470#LVp)>8LhOxWa zhni`3Tl^GPbUc-5X~$5Bi5;P`;?So+{A(6g=jx6_J9H={0}75fZFeeU_n|;{Uq%*~ z3b0*tAju`Xg8N|2id504s&>2cn(5^?#Pp~SmM_-Ej!Uon`V&pdMty!ELDNmt3 zeS-lFe-zKHD5n<&KX!e2pXw9!g-qvd;j~(Qb4i;=ARbk)N6E>@I#_cc zogaW5j&OK$rxm#oz~89L{2L4Y;D@Y*;q`VVH}&^R|n!rkQUP@ zO+2lpQc2|Xaj9&2AILzE(Xbfoz#4G7(HJqoRug=VipnE;4%n$D?bK;@>PdSn9HO2K z(VHRa$;Yf`fwjFFqcaaKp{m zX`f74RxY((sg`HlsQ8_ds*Z@RWtLXflp3~-8m*@y>geUcP2rfV5{I%bC1NZ3X!AErhQ8;Oy_ zF^8kgx!s8bXR8wt?A+iy=VYBM@rDxv=&8dLKnKv@bgQMgEeVBWB#AH)`b-ze+ayKu zd~$N>`mI%8VL-%rmd{dGQLmk%f|htmJYT7*C|QhVO(LhJQ<+pviZR+S5fK!}Xc&!% z4pY`r2lzN1#Hf8VFsF=l(5l+&suG_tbGkK3OIViXD4`ytkYO)I3B|5dG6$g(CB;K@ zsK0d?Tq=SPS~)Z)Oov$~Tki!}C&)I~)Xeu3^Hw_Pws zeHWwo5*s-8kxmmPMqd~Uj1#ev4B@L5UwM4xfDMmke6`@K8EZ`I7?4Qh#-Lo#f0YH?8(%>Z4HECB+Z)n3ygd@(X#9|RS zsKkm9Ij6)XMC7qb3`Jy%5_d&pS&8GqQK!U95qXRf#}ro}p9eX$ds;V^nrve4%S!tz*LIl^v+@@iG7Q2i0O8?C}PkkvGF zIR$SF1htwr{ET*O(m%YFJ~d+a=_*9vXV3&}L`>w~gqs#ufWaq@yZ-Eb7f}NKu)OdR z%vf^C%Lrx^Fj-ndPPl{T^<@gJ!U_!?MNgOf$^ysr4O~P0vXkRV%PJY zKx_Wabl9lWr0O^Dl&sJGfUb#!u+BA{#1^^??bip^*`Kwer2uXKE73apDy_S;w&6L; zF`l~xKqosPht1W1rlT8B589${M?3XH{9*gC!m-PK%fDIAJFSqhBO@}@-vxT>cY%Gd z&;F}=&I-tJ8iOrj4)ZlYg?V#}xz&6(c&Ydn_;XP(Tm4oImQX<-ueVKj96pM6>;0(T zvVZ*R;CJ8z{0(}8`2>6dKZAd@d}jMIFL?{zVzFK;PJ=ta5BMGR_Z7|6eE}se#KO(t z3730-M?-cEFe%CFmnEabWs-7gbPADBAAXSzM9p>5)?0qKS=Jkkyh%2ailD^u5jm~I zn#YZin++^08w6S*A`v;I#77sK%<_N0k5nY>>AKB;;1=yW$&yDp#b3~Z({ z*neIIpQizs0CbVV3A9Ovt4oVmSq?Xg7yncqU<g3Lk%JT0 z!!zst_srpSO$Aq}Tuaj>H~j1+X*52UuZ>9Vl`u0_uBnf}Ki6Kdc&hgZ`m8Lhn~jNS zN|KUA_{;K?Z!njbR6!yA`tkzTQYd~q9rndB6Y{o9bRWf8m%-fgDV%jtuwR!&Ai^k! zLOnJU-H2ABtIGlD%(Exfu&wKwTab`AKXsB4|T?-8r%PwU>`$eKy;T&hq&?783S5CDP zQI@5LIWb4@F@M*F@Fc6{fb#hUc89X!>kkSuR1cL~iiUwcSKN2Kp2b|CD=hH$)s9`mea||4lpDite zi=|ug-O~N=!ThVz+tNqy6N%>~EXf7n*tnoa~#Jp95$6X5?@7t?|Dky{Nq*y`jA?y|39T9kXae4k)o4MG;)n zIVE1{p(zwW2&Dwj4J1E+en}$mF;>gFHOZ&tr98~z&+ZHO{XS&oH~=&)mFBc><2vTg z=VH;Q(x>cKNZlAzjLI&(9@axd-hvl}sNf*ouMxDMU|*6de-%+~WYO$s%$Ko4tI1s{ z_GFLf!tnq+OLQS!to^teb>a-B#{%TM=(e@M${;pMlA}=)osEE#8hr!jP8{(y`ZRZA z<)9M1X2W*SuF$;vW>yk13E?Hx>yoD-GjaHgthQ<8w1ySC+dk!5*aJU>r(jQhCRXrj zTYmVsHZ$%W{wurk?5g#V8dWVuyO>pT(xH_4^*bzmcy{ZBC$@fl7p`;X-aq#-Ru5A_ z3O=t-+3JMOZ4e^8wX_XEX9&R*s&kEUt#Lho-bLq-$rXz^MZ(5n3Snb0hWIt^CVq`O zoeqdl%o%e#oiUuDKhlNNK4>wUA(8`})67tR*qqlo98pmdb&(M&x=itSe!&HCc z1#PT|yE3%%*;3LoFiL(E#9#(xTyF9f9!1e&@OTU}SIShWT!<0jV4)n=pI-2z^I40r z9OvzYo(jH!*B{UWG!33#e3utteHXp@qt z0__YAs^T{oQ2g(sjJ6MC*ujh;5d%+>SW2ATC?{KSV39x?J!W)hv|;L56JtLgDqnA5 zFF*UU3xV_Ggj$ywAgVjp(39~pIG~TX-?_)M*Roe+SHo^oFWhWmFXQ+$U_5D~S!yP~ zJp}N zcVE!dEj^VumVQTmC-`>4=ue5cbh1%xOpQ)!xjCtuQXRRTob@FD1HnviO7KnpJF;O< z8orWv%lCHTt<=f%CkbOvkB8Enoj_>}Mr4x`$3W{*;vf{QtqG-D;;nHMkDEL-X|LCV zI1}dt0WqKj^gu_z5SW~+_AWsV>bd@?e|-4$9N z?Yru7190^rg|t(?!K14A)_xV)Q%F|!6q005q0(HTI|$@(VWYEBK}laTk?{p3HJ!}( zk_DIu;vwa)DL_@mTK8gKbMmxqT?}LRiH~Mu;pk}W!U%v=vx98q_(T_$>+M9J{UgHC z-2rcPCpqQ4xF=wOj|G!g6^Eb3_1P`s`V9Z8|39|B^NSH(<4V_r7T9WYIF4tsvF3;? z??M;PWf@$P)8{iNt*22s&@A#%9tnJeNBrc}|CB+e$i7WG&ZFiQ@{I**cHNwes==hy zX0aioq$c8O92p~?SRD+R12}mEJR}|Xq2dnL;lGt^!;_iw+r4!#?!*H<;d%a$XAL=3 zUOmKOAS^VQNTjOYJ0ZE|2Jk|vRgRY@nL8H^-M_W`Qu)J0+o!GVgHI0gG`4ra=)Q{a`{OVXM;M?Tta_9myBtFV-=W6F;s)QpA^Alwi!ztR~e- zU>014mL=A~b!d5Hd3055jk*=~Mjxnq0zRQWm3*e|T*70FZi06wHl-d+?1qn_#}iN1 zJy&;9`%~SyI^GGqFo2wCoMj`La!uNz#7%ii4Tpk3=!wXJ5(8>l23TC%mAIF5I^sI2 zRTGIAf^ICV6Z=pUnQAh-X*1kMKCVeLwVCFdnCS3I&m1w__Q} zIqA0gtjf0fgw_&Jo>WjPCPhd&A~rz1p`+nM1Jh9CXl8TN4jjz@NY(9HJG zn;x3ko?WE{N2xseMwe7(2$7Jy1gr(B`V1u5QokyBIs-k zNL2}xrKh+@XcEc$x)I@cM6HYG3vfgj54l)v0mKtpw7vkr`N+EMHrQ3!PonizrN^+b z4*Kk%yD?34lA9Jxy!`Bl*rdK0f{ExRSbyO(p~NJ{_*7N+a7%aO7piaJ3Gb|H2?g?hi`9Mh}I$q%d5T#5iNUHt{+I2 z*WEeGhJFC|Y~1j$i}V+I&i#QkV4N6*X6kZEBGsFrden3GsPL1 z8QD+-Mvz>Hl;nnK(lr0H!0h_Dg}KGKrMV4rM%o#xHRH0%nYcCDG&-X-bve6STM`eL z9?0+1_T-PJpRai-d%WqhCim6cC>bn6@{{nF5Wx+wx{Imvr3Xg@<>rjs!ahp_@mk6_|yvbzcOaI6SnglwwAxGv@$&pFV$4j6Sj z>3G+{I0jJfQ;~h)tVq7^fL{=KI0v80{V8`2mo|M;NzeTfKVU#En$vK>V{^~IiJ%cq zq?_UdGTXDA7%aQakgq9p4RvlZ?^>sIxME0O#5iq1dZd8Vs&D0U82p|v5QnOy0l zwbon!8G#fv7amL+erTz)6@b-Nn@x$h#0mCHjq1c@j>{WK%vV~_bU1%95KD%xcG53c zXkEnLC@%bO#=Zo+jp|%<&dg{Qt)tPt&qx|cwyedmWJ`_{jbmrQNr*$7#7=PHLfGNP zHjv9w8dFHq0Jm|WP)L`gEqnV)NK9~`Ep8jO7Po0{%cFgl68dr}E%j}BZ{RBhJNNu& zwUekj8&s=-k z7u(v?a}VFQ>cs!L_U4K&sG6}vl-+$`%g(inTUOq7`E_4fyYDU0RErkSFYf)~(4CtW zT;3G@@eTL%-TSZQK&$|ezZlC#2Z?O-SG|1`+C*=PY>HlkuA#4qToV-vYE50EK4|)K z=yB7dA)ZE&s26nlxCqoU!TS?bjFudNI!RCIE)iuZ-Dj`K4t%;^>M01Sr89a^5DA?V z2}u(PofG3eZ!8-H`e=tEsHha(8a)tYqtDS9%6sO|x&^49m(V{iKKo&1+o0j>J3R;l zFNz7Qr3@!HWO0=64bGmFI_l0Ncrui3DdX?_rgw;_114i6y$b$w(E1D?LdtLvokxd= zA%;)5*l##e7FX!{d3+cb5xDLBv|Bb~$0X5!8?7uEB0w%C(j`A)Rq08LF2MM1Y#1sw}1LQ$XvtlsHPw;Om5;X@oT|ANwI7>LO)?XH!jA{s6p zC>|`HD6++vLLR0<9;QMbrV^Lsoi4Q9g~wsh~lOi_{39EIMa{<_OYFartI{WmR*G7A8c;*dS+o?2R zIFPYc_Fcd(TAnaFxEO7Ch9`J>n=m3hv0)c<_&p!y+idLrSH#V)^R39EwL5PGU@`mN#h#$jF9nUye2F`szr53J+7MShV3wAR~552=xy{e zUfu>%4B0Us=Y^OZY}&O!Y4*hzUj$Pvv1o^MH)TR0%Hfeh4!eMNj`^aY*yNery3@;Z zioo+&8ggT4z{GI?z-6xwk^y55EM`$O&xs%TknaygukIc9p7OHZcZ(j~)9X3tIpr}a zo*~b$XUxNTCh7N%DCz?$ME+soF&H>Kcyf^P*DVetY9Dw9ZvCY5KL`66=_lttM54i( z%_xw3(d?J24qdLYU`3Fsg5auRvGI)~uBtiXg3&jgc2wuJ-T}y1@o+r8JqZLvD2;&; z!pD6G)$>)#rthxM$_;aAZH`S#feRMXjaw>tG=TI%`%;tDv`Vw7&6j=j8TN~t+_8j7 z)5Lso!POuCJL9||7b#mXQ26yRkh-82mnzKOCgA#!)+M1`n$N(DwYd9 z;sDz(J|=Q0E-N%yGS-YM6Kn`IX41{ATs2rKF6X-Wm6jEuKCYkd7Y5Az*8X6Bv9I|m zZX18C<;vidp=(-pusgUN{0{R?mRqg225$=87QRWjv9OE1N4P8e`NHRmdz$a%AF|x% zy3hYm@WIfRGWQq0RD4``Qhd_#WbpCO6X7Q#j};E{hlOX&lfjAN%f%0c4=o=@K2&K+vU!ilRzlZCx5xe|$6m%?CR`~pE5%i@6`7RK$| z;o|>{jOQAO>OMgXuq*DlpCgg1R#qudNn^g;K6krfJ1^;xn^6y?b=? zf|Sc93mhJ5XxTX%qu={<(U%eI1gjlbpMDBsb&YANa}+1b`$HI~C%E>uj0VUprJO32 zXH$U+ouUH*Cr~x~A>rk~W~7hLBDi$36WIb{svX@#{j+M4V~|;8cT@|KyDD|+S-q3# z1i;uEOO$p{H#u*K4`*-5?TbH@coaP< z3%jy=3T#()z&fBZVj__6F0OU140feC*_}tp{AKDR>LYo!j)8GD*r_)-Q+e7+sd+Y} z!L0}dxu5{IB9yA6>K@e>U#vH96Xto)%DhrQIaMi0aiSPM>#h_IZQca;w4cEZbd2NRVT%g1&UWI6^NS( z1_B&s60WSFT9!gs#Z*ucU5tj%Fgl2)&Y9;=lk*@wD z1=J8PEM~B-0}}RC>bC6m!cZsil_ISB5G-?Cp1!I=H-gtRA=$u6{;uw_Rug_pHIKiE z72ay9=!NmABi?E};|0!m;*hrrm06Eih_i+U?}0_G<^;JKSLA91%=3-{t2R2{CdJfA(=?%kJrk2af^RTpts02`EK>yoVq!Ew{K6H3zz~NO%*-7 zC!-X5izbr^&m!ZYS(Q>ylFy`*87*HdE<<{8E$ZhtMf)?o#p}82`Rg;+Hx3ua&=_|o ze`jW_ajdw%@muIy^nv2B$gd+Oipnl-H@`c>Af65(Lm`Z%lu(SyE69b=06;%&tXVA zI|Ul*+&xPQJ?<3U9WAU`ghI&N5ovA3ye7ZlQ?s*k-rnniWLQ&*p(UP6VW<;*z90hvgI;C~xq$)6FVR*8 zkJ2zR#;{||I71&`5VPCF9Ym;?9-?W?gv3eId|3VECgPwloPiMDg(rWZQH}|mz_oga zu2DNjC53xbdT4G1nw-gjl$N0!4Ap9)(G~3S z75=RBeuq&$0iQ@MtE~Ldn`~lkSsz%WFE}&9>|vgw7Ep_r3+fqMN{vKa)pUS9Pl(TJ zg2e)MY8cfhYl}gbWO{vz7k0txzat8F3jnAGz_Nwx+fwC8%jbwwM-lNM`4%e5HZ&DW zR$as=wd#=wES-3hb@I%w^eF6PwX!??$WKQ7WDmcjMfr{nc1!rK7Fu4{iex2L9jiSq9x*d=R=$n8t>tsn z-Ilw{TtxP^OSQ2YD~4B@R&h&}rSVnmdTmccFxz>BieG?MnlG?iP+r;A)qcUEjg~7c zyTm)qcUl~M-aEW>thTjA4+$+)sUzQzD?N`zSSw}4gk7v!GnT5ActqOE5|$5X5E6&1 zj6#|nR@U0#2N!FDrMkwy)xX`(6#P5=wEr`h6u^v&9eM|ir#%d%G;(Ep-zJ%5x|6l! zr*bGaq){z4tF=_ZH~wS%1i1Ar&qHN(N`ouftCSYg#6=Kcj zV~;)<#LxwmrlgsX+6=@hWt~+6o(l$jIK)^HrVd83Ydz0(d3j+tVRE%qS}Qas3TA=k z)VLC-xw56IP|k=eOvx@s%oaxR#6nXwOjU%Eg32X}9G1e!9>sF7( zMo7=W)CW@`G%`v72d~M5_hl*2Q74-5O!L5QCDI(RSKAaja8jT~3P^nx%z+h4)rY@f zfcBsTYp<4STLxM)Zq2wAaVwtnde46b@I1Bo+6%x;4YNJx@ww0Dg+lC;hs4xFl)cAr z0sw0zdDHare@V73+InlW;irGzxUQz9=t4>>9Nd4)g$u*7+2@d~o{r(mo7>Tso7Qx1 zsI0p4I%nXsS9djc-?SmQ=kj>GsXf1-l-n@g5L=SnHTUWr3*Ee}qw+xaeQ2;F&@@zC zu@z(fnUBt#WR9A?KzXSo`lW&SPe)CF!4lxI$!(?lBy_=V1@jpox)s0-hDZnS+zR{K zV1KLC@1s~+bb-w6bn7DC&F!H=nrKl6Xr9=rYj0)^V>Q9kH?vdHOBiXf=v|j!F`J|q zd@9AR%=Rg5`usce+qij_3KR=wZ}sG z%~A?I%pKvL;r|rFG`!0;*s7#%WOlHhV|KHTGT#>XYfj@=}tD z&i<0-m}%UE8NwJ=IT+J>Rxd^QlUA!_>$MHr#%=5vUL3SBlnq>-MckdT9k=l|jQ!7c zlx;)Wk5<<6njmJ>h}WAP95t-?qcx|mN@_k4)W`%B#=@r*CaR#I*&n6?ev36M;I$a5 zDkxwHg{cS^QtAodbz9->w_|`OvEicw1L#~`3JhC@J2|bjIGx^et|SgE+_mpte)-M2 zzuo)D28ZGgH`2`rlDA9U~&NkxPQa9+(J@Ye83HKNkn#JpOmdp8Z_Jgb1Ux;TZKH_}yZYF5rgdB&-yiA^ z^H-R5n8v6vbpk70$CVS*znjE1v>a{luMclc4Ecw`JN%>JyW}sp#+~E-N72LdQ;Eaq zhv;Sg<-i|>li@!pr;(qdd*qGs-LbosvBaqa?^MwD&YYkW{EcCPK}9Gaz(oufL+Y4H zQ>vsYBs_Rn9X~JH>y&C!FOR(CK#rHan#e~$I(Jv0(JOKlPtu~k7PF!?*1cBRT98Ow z;1D%TjZ+7yDe43z!T?P@d42GXAl(~8`-3PriLAPOibE79aYj)?6W0~*I!b@ha1lYC z+~DZQ?8xBB5dv1(Y;9&{gplr&avjCY>mrv%u8%PHMG#cB!njeXR8WPK4uFILVk4NK zBtKZSP91SoO_DSp+Nqou+KIq)H-f;9OqWYk%Yyl05cSe*gpgs{#`I`!-0{_S5t`Wj z-R7o+QKu!5SiEh~+HdT+dN1YXWxD1 zBx}MHDn{k#m37!k6-Zoo1Lr3|B^UrkfQ?cjUP7?E7KNDf0iG0M(pSjdc=T_&VXybY z5lZ+uNFxA74aqn$nV1V)x@f1@yWEt9A6!!tLnIEMTm}3^bqV85EMH6!;Dp41`n|nK z#z#?#g<;^(@Nfj_k)a43iCOSzEM7vxyetqb{0rUCDy+kSmo#hvWx0XuLngwsMyp5jhdeeHLFZ%$`ui%kVXfrQ2Z!kZ|KGt}kz)uxUWobpB6!kd_?H0@h zmv$&?lr75T=4+K(l>O9x?jl- zfDc5qj^Zg}@+cAdNJ;0&WH6Owg|wCu8Wbwa;zfqn6x3*HQs#3$A?L6H5Dvi~;H(Fe zv&I>WSjLRFe2y|2?AT{Yl%3$Btiv$i4W; z4pMF^!rWGe=#1dS{LTs~(UhGu^(-+@QKt}u+|U#yK?&wFQ-oGRM|VPmB1Kt3nv;j@ zLK;FdCg5nEP*=Pk&rY6sog9HXKY13gfo--}2w?yTn&c>fGis24HD8W$fIO2g) z5(g<}K5Ci#2;+)IR%8-DSmG7_AkR?z5D$g1SpHu2o9rQ$flKjtYJiC;0B5&57RB>~ zE}kt0dzdY5ux5yd?DkmnlPo+teH^&>;IYBM>;j`+3I=;(h?lqe2LnUYko$GU6i~ug zObb`Ndbk=RDd=52B_ReZB1S+gQzFCb8uO(P7ZCehTfAF+oBW%DJYqzS7X_=ya{;%9 zzK7dwy-V5^`4;_c|1+*%(Z6y0Rys}p7vqwL_#t5!&u)+SL;e-VDIRk=-gYO=h=3;? z#*>~_aT&c_Todb~`@~D=QF@PSPv9Zf!{Wo{N#Pmsp!sF`5A+G^X|r26&SN$5I8Tp2 z3-=BJXb$ome;ezjie3-=RF_z^8J^aH8ld+Vk&4j8BFWTD}vPyry|i~lyXuk)RsmMej)2%Q0_g}dSk5QqTSft- zvZGG?h_I}^-GgOqs2&1Q3nQaMeWfZD$N}i;pWxu#(<1{!IUts)QDP(D@zpGes#VWb zZTJf%rw?VoKmZNUh(jS`Eo5w~ubGWCv#}&JyM_=P@GkpLc&r}_7hV2z`%fu z^VRdd4Gty)2h-G)5sUC!v~An&O}lb2&rcqFarOZr8Q?=tzT2RVkqhw70AE{V@1G$4YAhyx5nM6M=3;|<+Hu#t@8_1_Zt z+HTJ^&9k64VSz6{J#9q3hV;dED-U@dN-^C`w{=Be7qiQ1+Q*_oZl?;b7ThoF7r!oj z-FYx4N*tzBTN}4#>9Am*hzj?{(L|J=WCT5yi0+TR5T&Eeq~=4}Uab5U8yjRNC-7zo z1NbDm=QXmx7vs8Q}*L_&K_ubj^P--9%N$xwOu&bTz=SnFPm2dV8rBxC zn|-q(vm|inQ2#R{SM|4-qP~`%SS*#-!+&O0%|1F7Z%QUJ-IvgtR&?z7!HwOyO0=wA z=W;b)@%oY#PzzV3~X&yw#lfvi@1w+xz9zL#+&zlQz>k8h5OtsYWi(U39m? z*4ox=-rja&YIrkLIJ?7lr+;txuElpO-MjL0Ywq{m?|*2`Bzx2};hXTkT6%Tm)aK)x zPi#K5ITTbpEmGOt8ry7oOz3H?g(xr6s`iAaK-anVh>I?lTNK7LBx_(Fk})6B;BmOE zHE4B7;O@L{h9vkm(&$gbLOwMrTQ9COdjk%8roKg^{dLie*GPNz$Qbq?tNXn0*IWL`{M+ zXHbb?RD%8S&X`L~{9JuYr7@ovJv{>f1Tdn#rQwm$d3$u-9DT0f7RI<+R&H!xnkrAal<+aAt2CXlQ!V9BeYGrw~LM=fxg<52)g{j`$>M(UtwogIb z{$*jbKD{xFHf)Tvhw$#9h19C%9tExJDYxo$7t~o?%yxv)g@v_YYF)!xg<9(C3L7=? z<|E+hi%-7NsgV@R1LP+OZzF`Y>E^tIVYDpCU~4+{v|Nvan~!fJN!g&MbBRP1jU0u}7I7m5_PF!c@Ors#)AWHmhJKW_Gn|QWWdFHx?2+!}O)<3?9{$;) z!R=Rn^`jr|T4`~X`K_gF6?uBLb(eZqU9z-g?r()+`?l{-e7mKz?`?Ep!+isvKc<^F z(HAtExD~@=N8G8Z+o|v@V-jt{7mZwc@5TkKe!sRvyfoGvOKhQc@3`gb8<&jUvVYT( zk8f}3*NVx-J6DvvUKTTb%7%&4e_?H|mEK$Djgg8Dh%1?$X2J-~{v@pXNwAwAtUQ1d zez3<84bN`}AoZt!TgG4@rIyO+98y`Um0qusbEr8#oFfO$6Bxyv4~WSsH;-eu^Jm>b zm@+wE4q+{<(~McIjK3QGX7D#nl^`&rOzc?YRx0g`G_hdCDilB$Bst_5DC_zl5n82V zFD;OcWsQ+(tRNmcPdDr@$$*k&vcy+Rm+(p9l+Lu7uwOG_xn{za&2>u`8LHd9{FOGO zl3|q$t7KTkvpGem4etEs1Z=>akDrBYxm=~K&b0~CuJ@-w=)$uwtYgHx09NusMQ<#d zD??arc4&^&SY^Dz9;{4Nj#rp0hk7eRm0=jtD@YOi4N>PLoG0T{Wtn)HO!5 zdi!TPFB}fJ?B=3Ax7edEFf+04V)NBKp6ar>_C*P|-w_LX3U(x$zA$^qElW3CtUo#T zy^V@L4EYDrg{b?1ErrsWx$u^JESYqfD;tP59Ho+&5kyFd z3L61;n@TJhDoG?zU4BNy9E8wv5z^R*V-U2!x~uSKM__N!=AWndxbypoI=Y>hN4M9X zA=svXImEX{-LCG$Y&gCh<1oC+f=IGNYljnXan6OM!PhZSpB|Ln9IRVN3{T87MhQ$a zvrriQEGF0#f&(g9!g(fEuB>-DJB^MWXlvuv>tO0Sz|n9~ic-`#?}F)lpoif|QA{Rm z1RrcPfW3|21I*082R|S_!5=*Gtbszw#CbSi=$QDozd2o-Hk=i8R0xbG(NJi56}R#(**q>Hu}U0=UBrK=J8EU-8mrY7uqFL^w(2K-qt^D)xF7ZU(U5=GKkh%^ zKjk<14yrL z=rfnjEkk=vdok2DpksA9Z^^ib66A`(^E*8O1e$c};CW&mJm1h=27DT@ZH8eR*52pH zA-MBratQAH8#yEfhlp@UjN%&70I$}J4#vDpgE#aui7L!YgVj!YeYy^o+3Y-EW?#a( z%aN}J5f?yNxYM<^vMqZElRrJ%n;p+SZht&-Aj>IuWh~1`c;tAN2@09C(wUBCx&tsJ zZoMlgHU>gUgO&GABD-#rD9Xy?D?9ePkP8f79gW6g)|Z!=eAed+;^%8XEiwJUOz|=q zi;XMDp&)pZ!6}7N6k;8mJo7%*7{NAps4@Es6`nasXsde=vLt{Q9LB3pLDTSkUM??!dVqp}uhd|0f^ZE;B6Ig-y2Y@-x zh2?Ge2e`>(J36u$JjPx*u(`ik4ThYbQvG@FIq2C-HaBKF=9G^wfA8dyL}G!B->7Z; zB7M)7vnqigL^&ynwPL#0#=KC6pKOq@{{UGUq1H|#|IY}!w%Py!ys*Tw!Mg-TprdCE zA)z&$kDPvRAW_I<|Ksw?-TDgk6XsAUvcbnens9F+h09wHdh1H;8tm? zb8GBcX}fcK>?^eRUUVi#kBPV2Ut(Tz{E_~nW5)RxS*ST{{#vY})T+xIqvjhOLV<3S z6irDLsufg`c#pImT_p7>Y(mu?!f6XSJ=#^rTSZpc1#KBpd z4wo%xjX0wA7`KjD&#p5KNPW&e7Z-3uBGK47dOkX>(CQ~JjU>jLF5`RjX)ChcigClt z1=3b4zI0u>Ax1$p4?ag&2cenJaoqVkq2u{{wQ^3bAz}^4Gt-y>optzOcB8NVZ^pg_ zzKyHQcg~C+^N=(%dd)+xk)@F|k}S!VWJk6ejq`rkjr&L%w{_#TDSbk0m%ba~Wogpz zXuQw`O1U`8UMSsONSde9P@012Ef+#_cT1t%Tgtt^P+A&8w!dt*&{(+=apOpPi92vyQ;EXhP!gjCXru5_`#8tqy^6bTOM zoun4?Yk<^Z5F3^N=?8#BfgWN$U`vxcD+n^%O%T!yIAadTuAgum>wuE4C^E~HT$3*H ztP7lS{n|y2xlW)t9Z8y&fvm=Apa!80kt`O8f>79x7qi-j3ShD@RUiwaOKLOV{)6#v ze$1kROrVtk5M5p_OrS^r$b&XAz9{AoN*B?cxRo9j;Fw5 zSAMkr-FI(lD)FxV)pN(4CGqp5+c2n73M=f_`N;dQzE5mM90LhtL1 zpFb2Yde~$V1bk8%+}b!byhH}cq{vC}E2w4Dt3zS}X`0I*!s4N(34p(A;VTKk3yiP) zE(dTn{c~7n0IV~B3&HH>T=?&>h2d&JC>H`+cq)A6!mkeF*>U^xP&v>j@-g8v%`Z3YLo?fT$b{}6$|vZ zTvG57;9tjcMo6a|osv#SXC+F)&azb%RGK}t-U^ToxVLrRi_bjHn}>Xib#ECOI7}0g`T4^D-9QrP^DWa)BWi7%?>@|QVyS$>*!w9I%`$yEOf+- zqqA1^ukOd^^w`8WGd*~0Tx|mAcsGm!ynIeV~!O% z(2YaRbt7&RUJKS8Mi=hJMld?Ho5b(q$XDGWzJ`deAtFMHbq%f5od5j3bqy_x=SF8P z{Ln1_z-s;k`fCkn3yABIYE#saKV??P;qoPHB`i3t%|3W}cy-QccV4}5lT+?k zEnVGdCESW| zD_wZ|uqrDuG~TVh;gA`wI8P1#AxKR^5g$g@cFql^hM`fd8BuwLJb$RI+lY3+ipjMN z7}3@1+C(ENLA&};B4 zpBxy74Gs;GlY>)(Brzxql7on<>h}8kk`U7Yll1owmyO(=>n(a9J0$#TSZ@s z%!vN#`2Qdtz*=lmV!>i>+3ame7w^^+siZ3&1|Gi6qc67EC(tS*>{LfAWn{Ad1;f2L zmSC^C(g~g2e!;QI^8H8 z01DvPX8GGpCdnr|ooe17wHcHDGR5HEYHzmz6W1rj!h$bw@TSq$EUy63D2os6UGXBNMM1to%tQ1T-r)aRB20T4R zPt&i^HX1qJLPj}~%*Ko%V-&@&oiwJ5{RTxCfW;voJxi2pZ0QM7?mXg_2dwT;=PZ2N5v+ZmM5rEa>Wp^3A=3qZVJU>9dC$#7#936%) zMpWto5wGq^k$O1A>W-Ai`!ym0R1E|fSd*Qw=5q@g2vKks;3SPu>~Pn#nOlFD2@GWo zN*!3f*%a>~?{PfHKInPSdw=jA`JOO6GTcn1#)Jj27J^#r?0CvW`3?W?JMU)#0sq4Sg9_{_II@yGl6 z>tB2L<;Jh}{@~naM-lh-kBxQIb5PdOM2&1~%9_!O`SzV`78PhZ0L_T_6hfm6AJ)M> z4b$y4G`G>hYgq4U3oKlX%H+H@k3)UVO1WZk5PlSNPuH-+iTz^?fweFJpmahF3z6F# zR=AhYa!&{^LB(3Ugxz+G=)7?LFcQR07Re;0sIhEs4{RNlTOZbuKFt~fu=ncsW(b2d z4W5;8c+vz=Jg_kwY7J@t=I9ERW&{iDpHofxPYy}-C)i#jtuW?SMI9V%wABWsf^+EL0F~iZ1X{Il}-@p z_=a?pSV4Mo8Ol}=x&Uek=|pW(WKU;DjGbc1QFfBu$5QOO8i`$aAx#@XwAINtKy*)w z;%SeM_8>wpHfC`2O^eHm)FJY~N(&xX%7Zdi^jWD2idCnZ)+;Gjs-#z)of;^*;jYYd zX`q8EXn&Tf0M8>r5v25TU?DLjmcw)lz?6fF<|OQv!bD4Dnm~sHYHIbK4WGV#{L!(0 zTGy57lxpi6n$n&21%yOY)davfW#n}$oWXGi0owk3KtU;dF}|2%%V>_zhwD;n!;1eE0nkpr(bWm!#ORhbF| zaoiqgN=KWvvs()`fA12RVT;jzQ7nF!{y)oMk$jf-~aaquzurJB(p3=k!=| z14X93*mypHCDsy}6QL|pp`k32!%!B)9o_4T7nf@eSEExy}5LIvgE}Uz^>M+a}zk-W1=KeOMS*cSOhIJ93YxpUZuf|DyWU z=ojN(&VDWTt>8D+XTsmk9SeRBw&0h!Gr13QS*`tU{qD>j-81r8lKE(iN~i`vKP#a}WT(^N35AGQ%!9c`F;@>czj|>4$*;g7ftbI)c+=XlEC=8n-W`T#gIRkx>GK%YjpaSMEvq~kFI^> ze**sxYNM&1>ffff*2nh#2z-b zT`mPbyN%hwkPN(l?0_xBic-WDENbJQu%e71j{uTaRKa|!SS)KS@^A{Xm~S<*fFVQX zHfX-_on$9(k|zI2o72pKEm;slS`OQbI}_=&)}M-|R}d_h75$n3Y%)r2 z6Iz5@9Kdt{MU0P+qoPI8FWx%1ei>(v+8U z8OuxAMCgnJc&-%Sxl+J~R66ZK$J24XrG9uckapr&%^glU&BtxtoEXGcaL1}ef579)t7jYI_EzLT$>6kfGP(go@0jPq&Q zmJLR|1v{DTa9Wp9yzA}YPWwZ4(ynKnE23a)^y5)7s(U$rTKJx+B5C3Ia;HjruoaW` zq9UCxcQ!}NS*x5yyx9@73A3{!bzv5-x@xY3F_^rPC%xW+$<^{1t|t43UDu|b6dq67 zStpxejnVR0d9v)_%QHYTcR_XeWA~3ev&mWg=ZV*nujk*gy_I+?`A(km*7GCzkF{^l z?*V(rJ=A0XW#OC*?{42yaHF_kEXBASVK)DA+m8}-mnf3jRA$C}ukd0^L;g6N)0E1swih5#3nw zCtd)&h>G+F#5AM)CO3w19*^-;JjKs|E>lUXN+CuAIzOETqj*Uzh1S=S>F0n(bOPralBx)x#G52p2&|v~4kRzNKdlmd ziuDhj?+fpXA7*SL!(al3>e_57(_osMrlz^CxTgYB>Qrbd{6yQA64UK2ysUj3uMF92 za>Yb3`I-Ea$tUynkzoXy#f+xZn2b^bCR-!n7P1JrDxSw@YXx{Hk2j{~5~AL^M?*Ul zBrjCMg;GmewC03WxKQ92UoGE^ta89>U5od^ukgaJ@YeF07k%ce$@B0uzD5ad_&siP zfwQL94Zp_?&w-mP;_c6u=w12;tTlTmG}%IeOlcvxDauA9mRpOalIg`^$;hdA>b~n& zZPH>}KL6wA@45P}ctCQ;{zxwv?|mukJ(l!U{vh(Rn`Tw;}2<0UU57n?H53I5*oI!`^7E!n>%S z6v^Tb;(cIIJ%naGF`Q~u6olvS^u!nkI6eddxBJ0bKfqsSLQ#a@&4qv+8wYmmOtIrp z(C)L`M-JRlJpTDwGkiW@B)rI(g4Y4m=TD7{oDfb5vm-4|1AMHZV}u(vpx;&70=AH3 zJ@SP3gz`e*h2V_xw&I+QfZZzC;M(Bc;@aZ=H`(rx19DoXf&p1kDS&qV&|W|VO3l_% zC6WXVR~0on_)6eSjInOq)5dr|4&7SlR`M{(Ppb)70eJ6aU ze82WNe52uKcDGD}W|01ob0dftc@C|Voj+~O zc<}Z$saw#dO}0!=kE}a5%_BP^c@O7A%>2X1^rTs$_(l$~$1MndrbW%LGP1mp zTa2Twaav0jD4OLoPWB{q30~E@B-g~mtThLQXT>xX&xolQVyP_lt9WTTrD4g_9M-Hr z%8O?4&?(*)O9)l4?0LQE)MCFs+zHshfaT>}QG2e&NxmpR^ zaA z5604-#_!wjeR$>Ics|^{2J{ctb01w_yOw%<{%6y8HPrVfmkob*5(M<454}*ID4!JHw|ti^?#ow5Q$>$%$a%-jtIqzKD7>+ zWkNK=w8i1)I6rp&`h5-&+kc|hLE_ zt>7}(VUT)6A7ynMO>Pu60Y!V4-*q$f*i9yto@Ds5pho&(?eI-id+l5 zN1nt4W5G+9wf4C`kYHl(UahK4oT z>9E^uG=yY6FN95mLsd9=2EgHI3kw7`$xgFJ*jHIQyPXLkAr?$WaW8$0{weIe+Zp8^ z6$M7n2nM#7_g0uD2_16?I;*HS>Z%gV31}|OfESJkZD6v^x*PB;R371dl{iwYijd2p zd`L)NsPpn$D6ENmPMt&Lggmzp)I^v=+I81o5!cQNmNni&1X%Q~cy@*6N~Ggc6_63Z0X%Lg(NpcPN0C2=;~3M&M_! zNi^410lA7l5pEne8pnc}nAk}@uBWs_so@~qOClbI=XBjBMpvExJ!S7I3Ji^G;|r(l zhhT5XQzx6fB^8f~9x{)dd>(>H$+Rt_#~i!^iFv(VEL!odTEVVbPQ4TyJy&3MWEh(i zcrRnO0&VT(6k{VY_~H-bL7uor2Re6824pzv>iK+oJYHyT`lWGjt&uvSg5oc;=s5VU zhMx7}Fd*T2HJFA5rl_a2!j{7A%vj+a{hiDQ`Ue>oI^lq?iqCsF6syDw1!HShL{Va) zgix@tsYoiHs--qcPf1V7Po-#1?@o57HxL70(7Bdgom`b3%nTZjIwyrm@pJm4nMaMu z!dHaH(aHL8;h26b^FrZe{pHN-`swP|1gxx!IRO59Zz=z&kEutR>0+AvDu!p-$wzwq)%+w^xkq6EkVz#G?^mDMA z(-2Ov8j%5$nX@QoA{_hSM>Bh!*r7UPfJu}!Q7|;aH1-=Oj8lfw7;RrbO><~QSyAWa zPeY?;yxF(mAr&5gZ_B4u2&K^0N?NU2%qRr0T0u#y`kZBFEkw6OTq(Mx4(P>4{^}Te zD8il<<_HJRMLsfsvm_l(p>!+AFhL8Jd`M43P_~tY!jFox2c(*giU5A~Y~W(FE=zMX zgKptKdzRX0DU#-Ekf1C*;s%p&7@qxMMNS9%z@ar!KYi*&f4T?C$?xfmY@Gu@a6htWmKnZ~Vs$R*nqcqY-s*IQdkXxuUA98qUKi@(l2koYtCV`y zavOvV;;QJ{)Ier^#q8OnY|@8%?s4wmb_hGf9l;&a-#e#;Y4Iufcq;0#^8zpO`IrzB zV|jx$q+$;%^lW6V?HcN7aS@ZS-484QOVAIww+M=bR7GZOL;?MVXdx1*6$(AImO?8Q zo6!Q1Mmu5c(Qo>j6zrQ)Fqp1Xsx0Snm1UGZOi5L$m2y@0?g*&^VQFM|bhWcb_?oWq2m+v(drs7~c`GrR8@}PjN07fFrJ+rP$3*lwlr;yzh67%! z5G@c9a@PcS14Ottd`*N~-VC5rJ4jCit-^~2#{lw%oHc!cS{EItWlH{<0XLBj zA~q(xSg>Z8BHRMCPPD;qme9Au&AW)E`5*uO+(!Z~c>^n^mTSaH%hp6RPTvBD6C$0o zb5R_@?rwy9LSUZ}PjJEh^=sNvpsORXp8?=KTXrMv)x-WZvMmLk>`meYQ}u>R`J z&l8~w9}vogvxEv&KPxmzVb3sVji4v@_Xg>!6oOm3{?`78gJc-HmsV(%$@$e3lk_Il zRBj3A@>WBuy|*#9v9~K9QEv|2mcO5VfPFx@PyKl4{`_usxAJA;%gmS5FXoODrz*d3 zBp^!3uHUWQ%))ZAOWm!KwA)m`(sGrNik7QNG#?pCMDiC|ni6-dB zK?XgrwdrD_7U3(Bq$&tMg!ZuDP4+CBJ{@EKz*6jXlsIw=LowTFv@{};dyPj+9Huo= z+p{GPiurn;%q!)}(}+lhNMs`ugQrKvPtTtlL2(1-o8+;<`O~>(veQf5SBxN2($BpMi6X&K--EHz3=#8(8sfUErBOdwcxNlcJMu%Ym$(kr}1&nXY|T z^bT~F;Y%+AMl$n{1o5O}nQ(Pupf}&S?p_rF+~RT|>lXekeeNY?8;v z-(b6vf75n~cQ&Om11Kp-@ubJ@T5ksr*};%~)K1z*@xbMg+~`|uLv~;n_Hgc(%r$AvE{;a}~8UtAU|4w`=>X+{{?@RWgX!>;L;mux88nQS}!`{59K{7geW@cxyH}fU0jF3BW3k ztA8F)6=%z%;#CmGp^_8b@c@Y9-00Nx-1%RSqm5T@?DK_e83#qoe+68A`+7;>fYSJF zlFBNH&UFp_{Huw)b}PzsHwS)5dr6+4h=>)tktGP#-U{6Ko6CjwiQ-^0a3k&g_y0xf z;D_r7l2}gNN?m2YlL!*+#3$k7CpWrItW-Lcbt zr%~A2n{a#h%krg_AK$q3+o@E~^-IGZkIB(ee=`cw zO%j02QUdl8+`X8ddS7`tT!ZP zmd0|m6?bgzwcnXrT1{6qo_8{R?d5Q4;_7>EG*Me$gl&Bfw{?RVVHBuw?E>Q`j<`)f zZl%44mtxW+V(o+MLE$g7a(-m)qUvluB-BP$kb-)Hu8S*Ths@ngPI|4I7kAH z`Yx3w2=Wg|o)3VxY|oKBqzASR3XYYg6yGvv!jR9LA0DQjvfuWno9tghzg~e)@iO~k zgbDU7I4D5qfZ+%t|Gb-U^j6vlR%2tl#G_?_$U%YUY_a#3x8s$e_L&QBnMpj;fI|z} z?aTTJ37;Wh#;1fQBP2t&7K=GhT#EmLy}+>YE}ntc^=18+L_E33=frc}#lA%WP&SSg z$13EyqS^K7;-|ZwEfpPU^lqqt$_%x_boc7*L|_O4j8cZOp^3}(jFBN6 zT8w4bj-p-QleTI5KB(!{v1P9;BbS*{GPOZBu=>dTuNQP1{jc%?=bvqjKk zKU9F-D1=rE3R`B>_{l=HJ1hDL>^xu_*fAE*S4SF4ZVLNZy8Xd7T}(Ky zWgD*Ks-@39d&^7PH+^<_d#tTgi|gTR`4*o_J?@zA*;a>8Fc-ZQ{AR?*i}U~OE=?B0 z$>iXt$g9^MJ$Y|!INerATu}`0S60^?LVP6&%2*xBSc<5C&&`0&M=VJ@EM;Yx@SsUD z(E*USc`Ac&6y(8sg}H@7UV6ZhMRL??^*JuVtG?l*v&|M28ov@lUUwJ(QPeY zb!>!{pJRD*x8%+3hBxOg$Xj!P+aiI3wkV#)uW-eoE^==d80!LUwEIw$-r1HiqW_Pv zFM)ESI@7INrKMC_OHxTCl~h`)N>XbpNu{Nw?v~Wu>c#Eu_CjMD+wBeS0c?y}Z1#XL z#1NBZAQO^6a^^5(LLd+pV}>k4KVas$osEOvLdbhFOeV>sA@knJMnj{Of@B{qt88OoOxm6?i~*$nCh@v9TMDZSjrx*MZJ>4LX5Ycy=FKD!P0yX-!S?2 z-#;`l@zLnU3J*jPxTx}G{0Gpl`=*=kP5xjb!pX2YM_hru1@R(dCz=Ca;l7gnrhH0% zOa8TNIBL7m`x)CYua5Nv;uz4`BV^LTzLac=X6z+r(_+py0=3l{V9$gycV&o-W_F)| zV*I+UW@kdoT@1k>{cZQ<^2-e_Qr`bQi+U2ikGc!Me~Vos7wzozNRMBv#=E9f{|V=B z*wvuSR?6e?B>Sf-L!UYhu3kSyQ5LJmOGEQpZe4Rsol90{2cU5!$^KMs{LuP+&xpy) zu0FwLCCPd!H+my9z(_x9a}p5GVjd7)Y;v1z4qn;#LGHAGxG_v0AC^dXp z3*GXuYX5%eST)vr(Exo+R#LRm`1!n}Gh*$#53@iU74It)iU-+e+2655m|e}{O}N>{ zKFsRa?#O($J2Ic`j?CAdl6?N+(ipZ0fr(oO-8|E>8aJWyd2e_08tUr2&}mj{^gF8;kF-Yv?a>G}@Ck$KZ}nd~sGfNCj}4`V)c&<@ zD|lUB#mrcyX}=SmAg(p}EY?3n{`u!!hXj*nmqvTPf*FYE1>_4aceU1Kn$1k6+0a+f z4*fx|^E8maQ{ZRNhO@6hEB!JCi0{H69~hQ$7Gnq2mbU^K&MR008^cy%>#?oa9_#>iGj=ETR`cq;*Q}nI*}UPF+j{#C9!{jU?Gz`+ zEo7^y!$|lIgvI`}D5m>~4S{0L?QpPx>4}>T9on&bbm)$w<-&FQou0Mpa6_%W4t}Fs zHuChus2jtG) zakg{+B{yGoKcs+Lh?a^Q4)x_fVTzj)nvN%_+KrPqy~i_6j_|Nr9e5pU;;#oQOs z<_}6<$&2VntrXzr+e$vK;A_#g?MEl@doJADekNBe6hx3O7W3dubWz=mwtql(e-RxK zkHAe1meg~KlK%xPfJfoMI`qHY3OC@jf?R5k!=t~*<%)Q?dy{H}2fsp({r6(7n1u%r zNof9xJD`ROVbe`(fNus{yb&{lAc69C%@9Qw&9u%QjAJ6hM4;sab`q>2w~`0Qk4YUV zL)CyZ*aGyve?FJOwr-ha8&kjcL;Oh>CUWY||Gl)cA(J8McE*e$%hBr zW|KwH6hw-7^T1?S^Wo<7h8TED z0&hjYhA>zk*b~6t!BgFoN|N1fn)3pio{$4PJ#36A67MjYt33m_*nh1CKf z2tB?|>VT)rZtN8C0oIsrKRJtY}hUcg~Hw z{ea_65eqL^?3@*4Jm%m(_|EP3-f+D41`1ZuJ87%kA^i;Bi-s>Il<@sMgBg~S>w-!q z8X4A`ZX}3zL~CrU+Wua(5zvbw86GI(+w(QvBq9wx1eMGUklJZ%TQkB!U&a{I6FOb& zA1%fl4QSe*H5z?ke-61-KF?`F!6L*5O%nk_PaUpHL4qpJBg4~}Zx_zY78>od1w>m# z)|R4nRu>BLJW46fLj0g~lrd7O6O}rF2#MV0cwMh_>1|~2&0}|Eqnp}E`MT?NN$G0D z66sql&)k#>8NIRc%I%HS2gf4STTb77vRuN?M|-yK*es?dniYR~x=&a?VWxZQ4JBNj z*_j0o?aP!A9#SU)4?`S=&=afmNb-AX(L&rp~Z>wVc`GEznz>Ycgb1*_2v zD2R~fttJ5L^=RQJwNBHI_3+I0b1uKfsT}b5k&A`KmYvK+wbBB zC)5e>67k{rFCAC6g0F8UKKsk|9Vp5#s)vb{#D9Zt!G8Qx^+9-M!^giOp40Ee4JcxS zd>B?gMZ5&jV8Mo(fie6z{wV%3uEW2idkT^n5b$fWP-Ziwdlj+(U>4$o=Lj5n7Y#+D z_`Kpo$`jIg9(68bKpaFMM2vA4@sgU{2fn7(O;g+IvT!h0K?R8!ZUl|9dB!QxPs`8)eyV8VcCeeKi-C+GiivU zZ)x>mwDL53VvY8M=Oa`O!|ShT*S*^H9q{@Q{Up53YUPXQ0n1US1#Z=@``g0*FVD09e6Ne}8iHW2j zXOIBE6Yru)rQXnz>IxEwSrq&% zS23Dj1*MtMy2~w-=*UGS6nEBjnyfH&LLbfQI!{HAimDh4x?3|>Hse;tXJNtt&hGCG z=E{Ek(@%S|5pUMZR$pUpqDqWza+Q=&nV%<+|j_@4G(_D}TKCCQRl z*}(U#kgvUF=VaCsuY`5Mfqdv+z0r8on_acHdjF5$FCoRCD*T*BGyh;W+8H~!K^19om$8HeUt=@3ex^<(a z+*M)juwnI7e^0ETacMd+KwT?s*@E4C_3qtdhf53dkV_hyI_%N-q+H4I)a~mh+R0NB>Z~+VBY(okvbHJVSY6IZn7^Q&~r}`)V!G z3M9!Sjt+o-I&3G6?Wc#=W+0Cp*|mfC%q1M(@}1*rT=9Bx%Z7y|W^Z`7Nh;#-h*K12iX~AoVy#>Y%(P}&I}dN!y>s)Gg1Ber zmQ5?`ebb1wq0Ix6R8YF^x@?cj;{m#Csiat>EVgrIB)7*Y8n6y?8w-j89mv9EEC)yu z&vfJv@!BzWMp-Ca;56hi3i@TF*E{RVc6bbfb5va75R|k!p>b}B?a-EW7<^ITkI1cl zlnncQqSYM?hCGD|r$1nkoNSLENGYzv8p`epaMSCq6bwD3s`s-z9qUi2kwkyorS7$e zLuJ)c9FnXTGukfpt-pB+v6}b-h?7pQJDlds)vdRWtOgMaxx|y+4I|~M+)6WqEy%6- zXkC3p9I+Wtv57%^U;EL`~8s|0nFcpA#@Mr=TE0Hv3Yn0RGCqKKH`mfEhML;)ZdW)d@|J)s^iD|4}D{IbMJT@ie!)%{lU88FJ?u` z4+hw3t;7(|oZo%pw{NIAgM!l;_F8d^k4@3leOKX6Z`f6^wx3Q;R-=oev*O62U+JmVuTaKNQB06S4@ic8up*P`YQYJ>`gaS^S4VqJ;PES z<0vBw3IDv`gghE`PLmaR!J%nKME|)t<&Wq@#|18+5jdKlDCja0ls{X=DW9Y}AuE(W z#aM8OZX}-hv-I8VpQJ(SY;Ud1q)JEcs!!59EA`>M+nLtOQbn4?f}=gWAPrZx`zt$9=olg zK2b7}49}ZD;j1DrMn{`O@ci>x#RuaWf?}L>lE3p#Z^Yr|>_!n>1Fk_9$OAVI66c_Y zI*6^sw!L`&6!5QQUL^`x1&b1erZ`c7U&GAcTG0T5FwURJNo!ZFst=7wfKO9{b;-ip zU@V5ZY!}cUqysb_XawbZb5IyMqM~)vgO0+ivMd~n6nI@Hvf=gG-bM%n>Wg02!T3j~ zP0Z@?EXI|n=&3eC22-S724CI!nQeU$bD=fra^x$$=|DJ{q`2PktwV?GwV*McE2aZn zs$9z2*tpxfGEtkU`047WuHy1`(I*cj@p!(Kb_+qdzrW(@o6LH3I>N@rN@H1hEFaX{ zT^2p=f)R$9O%3MqV{*W*BZ%`~HyEVaxWG)Vtl&7(^(#JpUxz~+Hn4+DVS@}Rt}z$B zM+Wsq0}F-2AOeH-!3#@k3_4ChiZZLxARP_?`1P8le50|h3aWVsr|){DI9k1BgF4Tqumo? zxWTarapmnB3qo~b^{Qy?wi+u0yf%Rh$iuTor*^*b(3NXXyt;2{SCr+QlwL>EcAbDf z;!38|9xlZ@8aF+)Z|g(5hGO=F!o(A4pW9Iz8Lf#E$4(!({`HeXJ!MIY<{p z4=+eGZ>Nf~6yUMtAOrHkd)ipY*@dMH#bVfiaI`$^2O1T09T36Gxa*O3A0Bli$I1h@ z9J#fjZb|osEDoU@12sxa$=<-s?3R`C@QqJwu_qD|MVwo8&$nh{JNE8MLebWVwy+Yz zk7RnoX5svGgi%k}V~uUcHtc=!a2*f?fT$=znc4&EUBs?wmSd7=w>xQCMC)RNMIefq zvXaP{STQ3yMJLNkF*~pWl9E`KOz<&^l#~mV)s{u+AfXEgAh+in-MT|C6c8c`awqEc zLP$XG8nHaC(4B&2hcpZrm(zqOP@+CJJQe-P-_@Ey9rA3*$WZlVg30u(EzFGd`^CPt zDF^Fo^eZXi+^ek0%NUr+vE6`a1)*fk;VOaYN zwy_zv*=UC&gM|V7NOCGH@uXLjY?uu*nk28o>)?%2iqD{APB6^#on+2Jr>aX8KC@Wk z`GQtmSl6YhR+d-wqI^$;7>?`Q$#afkz41s~N8tH9>jRwA1Bf|JX zZY0B~cai)+N&S4PUvjADVO;1JMNeiJn&rfB&M$PO{maXwy(WX+ET|^Is158TkkA7R z3yLDwWC6<#nh~mMweol8A&Is>+7ak#_m4mc-J8{j3&jX~N#c zwy<2(VWsI#XJH$`Fq#v7naJz>0#jdqcw*NVwq&Hn+N(At#CkF5fKkh{oGiFDyng7u zbC0Z<{M=8Dl@BN`)?p@{9;*SD@Nbo_p3KhN_t!IP@7c9N_E=~a33MX^IHaB>(x3l- zxyltMUf8kghmUS{GbXbEw==8>=|UDtJF+Bw*x_cM!Q&BwCbwP0g2D7aA)YRYeY}{) zBs(ACWquWZl7E~xG`a^r;`KZ)l?o;UZ!AJAyexX%ao!^#Z>*C$Kt35F%=HTh5AQ9C zz+Ah#hlnV3cz${AFTz}o45kym3>)}?GWcJmdYH0A2MTJKE2TL#Xbd;1s;|-r8I63S z7yL`P88+d}2l1h-Ul3fWQKkJqOCvqBC>jENB@k-&49O5IetD<|mk^W$!IK@y{t8hg z4mS&sDjb$*S~xo+8leVqSkW|33omduk1gddk-dBu)+BQIn`-p|3u;a74VrXZwFKTM zRXLq0*ei=nvYx<)!~JqlK=v%$el1Z?GU&GhAHR=pgTF0f$)<$~#W91JiDMaFhQIxy z-yc2eK<1_(YrlTBeb(_FYDMV$p4(tRdh{aSbD8s5is0LdRliPWHoK}rD+F(~Aeh}j z7tK2DB+Z!^mcmVuMhX0kc!AFkiRu%Pp}_$zH~^!c zXH*t@3Xxt;?BRMvBN&zoe7*%M+oXI>vppj6bhHa8=&*G_RnR7TSOzI5jMxv4>op&( zfLyj&sA6g5I0@Z0-R*N2vNOn2LrG?x(Fl!;mfa{L_{G5=Q9>OCf^Jf`qzkjzQhm+t z!J}Zfv1_{KQT;JqZ*kkySM{Ocx*A1{)mZ#qs@~%Qv^gAP+yu=-c6 zskoUC#h{I}IXpDjr2bgwPqU&Jko!XTFyEi!1;HE{P}C0rMui2*ZgZLlp^Hc2JCMRr ztkk4kwA1Mq!;C+w7yV(3k3d?zQhejxI4Ul1RT49J}Jc2UUx|A22- z!2YJWcOwVx1K?(8Is61O>FE=-ZfkyD;ZC zujNH%+l7w)Eu5X5T?B{%m5$@gESeYtUdiW7_#aU^0)XGk(Ev6==UxKi<^G^i9~kIW z`|~BAPNzN}QJ>d2;?10Tywb<%34ec;IM+_&ZwrCKNTU5u@!>*16eE=tJ^1?buM&aw zw~9@{0uhj{a5&Y!p&Agn>!#}-g7k}HUukYP*>jI#;8yGehF^t&1Pw6SNs9n;1I+j^ z0D}NHKp5lz0f4h7&P8$#AMn|ofON7P@1u`(Xz%b*l#w?@_B)R{@l8%J?gUjQaK?Dd zq!I4z1&u@n=<7G$hKI=M2lAHLGqdfpTB-tGJbSzw^32Y%Z4@4Zi)2H%SZtuBD**xj zvNhVsg9G7mj1k%ub9Atz-e2tx=pwnE9zP^b6)bdgEg7t2&%Z+$+do118)$y>V`+Sk zkn|XZ&I;J?>nhM{Gtd`5(3C6Lu`E8G0M!KO4UdQM3OB~#8(e!`_(tb`C%(?Q8!c$P z%ZP6z_7gaTY&eaH4l%4P7w{d?Ac~3yo_!e$N_KNf(rbaBHWA#yB@XHAtm{ImMT_Hg zm5%xD#y2+Iiiu;Vt~+@8*u=_Xr>-p=I=E+*{5nBPt^HF|`$r_2(7O|@-Qz>sN76nM zXzzXL{^?Z@e(&Hlubo)UJ^MNlGI0Y$ zf(YZdm9Jn%SPj7;hh0wrXG<8H%OcsTE2v zJ}?oL#@xg?!Y(v+jE(OZBZE z#?|w>FywCp8^C_koE)ox@e){(2K!S-Q~0j##0CE9f2zUaq z0CAFlZr?2g9v}il^y|6ja=0TG&OMwXa=AtnJ?s7+1)inA*C=p+x|2Fd5mZHjhW~?? zd!ztij_?>-dsNY|gV556^Sb%=?g!GY_KYj0t_2YgySK!OrHm*yb|A#K%KBWPUiH|G-PCbv`dONdb*MS|A z^ugEepIYrDHUIOvJx_CS%)d;*S!r9KZ*U_%e2L_5<=C3=C-j{9mQ}FFBa?52`L`8pmQ_z zZ)2}v_#N11F?=g_0K>Bwuwx;Vj-ZYA(qJvUgFZwPMY;t|t2}&n0<2DeNCIF9M*>eI zs`7~{n5}}o>dGo!<&4tsjc4GsP!q5UK}ZgL)Ep#!uIK$FtVqWsOMs|mo>-mXHuJ# zR1YI$eeq_k7U7z!w)UlWTv2g29cDXi1e3$F{Sh1CiuLtG`}=C4V14E6Kw)+)X`^i{ z1Nk9CUHc@&dI;Ov>?w3ORi#!dDOcmlwHo?GW`=VbohikH$ zQTllD^U7d?CPXW7?l+Yo(bDdf8X2D``Z5g(f6J3<^!x_CJqhjOZSd`@*!E`WNE&QN z?@i+;Xz+jo9J7FXDA3#MFJOk;U;#J^;XP4Tdf%~IK7e0JFias^hXqmC;p|}2$Q%y z+_z~sIyu&0oE|gOq_rIMj=B7BLOt4dq^CNTu)Xp!_-4mFVA3Obb-lGRG*XqUTsq8^ zE0rL4GF*;(G@prr_19@0@x9H_3I`0Fhl_E9m#mObNDL$?azQsoQd}?+2?jYoO_LPs zC;e28^}AX4hc=ww9E`AT1E6T$)%7SBGs6u?50trs`bP^b(2yoA8LXXzafNn93o0}c z#k3)IE*DZdu`YGc!~&XM^jJ1)GpqlVvXQz}3^<~4OkmXiEva8-BoVnq0&w}=ac}!2 zoDL*Htl7s30^fIKx$P!Km0nJVqAdT%?;D_diPf|pR9mt1@x6ymT|HS?xVmB6fjVLDp!c!CyOr?@kfi`Xc4R^g5Dz7ryNlpP>4PS z+!O*KrC2iS!}o^)nr9BTge~FTCWe{B-g>>43YE+{cd=|9$RufKtWub>L#_+$&)R@I zq)iI)V&k(@bG5b4vcv8j+MOMcb?~K859LO?$U=Pe9j~=E62mfa*N$Q-2myKT`jXr2c@7NpT+}HevBN-2&hK z9{Ayo=4ervaKwl>5r9@Q z3OO+a$mXMoM6O;hdcBx!)Yi(47x-dsJj@rPloH~L{D{@ovRQ1cD7CA2WARv#n1Qsn zfg(Jc9lBclaUu1HV|u$ z+veu94c);yz5Kd;>9XB!r(r~)wT);z1Q%H5tt_z&iGb17jkUY2B2b4g7aEo;6++|Y z@7*!prLzTndmpkgR-?`1qrilJVEoF$ZD+G%)f}sqjgg4Y;d%T7<#kzU)^Ae(nk^5{ zlpmY(7W!IA6lR+}ZjugUV_$j074W*vcBfef1i`Ir7^M-I1xe$ z$K-Z;6JGUA;K`I={74ZfB&+4sFaJ^)EbyY}OpYjTg0Bf#&WvbM(dN592V>Rs&FsA< zU^0><<~IYA8LR`q3@{*4W;aEdA+Z>gp`b`0QIylXXdutPe@H=SJ?EC8iiS0vS5OBp z5b5S7I^Dbk7x9z!Ch(anchxvcEOvf3{x|CB>5U3&5d*}z^E)H8>8$zz@t9LyQwJ8* zUrNi`>F>j1)=y(7jqpESoWk5q6TqYp$ut3U?mxt!F-n!tcoX~^_<;Tq%nRd7rO753 z5VxPR<8jEeyJInhy&L)k+G1fFo=@rZSY!VD?0hFy?1YNl7!gHPI^^~&ixH6vr2GHu zeFt1qSKIi_VuTeoGB0}ta+9zTB|v~6B$$MyD260J5E4uRNUK$FwraJGYMnT%b&s~z z+16UOw$)Z!R~>ELtG2GH-#O}BoP(o^m$x_5#SWvkyLh{MQEZu* z9mNjtypaM}{%z3N&)~%o3g;>BFzYCf13w7jci%muKl6#CIL+bvn4Rb2L7ydPNrMEJtfs%WM5%Va{wNL*-~sFZ-Iz6`1u1^0eEm3fOq{keDe(n z$fo((hj|MR{eirtf;Rb{l&Mki{wyXZ>lyR4cjSJ-ycF+rsc${K}qxSvP{{@@Md%D@I> zM)_y>wljj;Q!*GSDU1vnt8Z+q3o9dolHrfBTrg0W@q8?T60wa^jxi}Y8$E$UH-Up3 zF+KfrkPjhR$JlhbKq)$ND+D`2{(YYr;D?_1ID5BrBLBtoWrZVdbW--GM4^~LS?-DEUI$LmP*R0InO?Z7Dxvc;4ogt!ZAT+FK{@rYYzyB zq=tvHSTvBgX;gO~%!%RzRZaye$GTL`0fET_o&@xc90>Z4ZKy@95#6;)k94PU`1iTl zEfooAgWLKF`iHyvL`6h;1*XRbFud53;ia97*DD7*5TdHIRHZ03CdAXr)x*^%rgxZa z1TUErOr@abq``pSM4+)ijE|*edSjSVJDZ&t#0Y8k4&pLEc8tW_C~h!;V1cFt0uQ@K z;A2o8kMwoGDcIJSuaj7AjnMfN)762lk7cN#S&ik{J^?~LyMIP_RBlyrx+*`~Kebdp zwe;Ck8p9!ES3`eHRy;8Zf}n-&CMu=}prwuE9r+ z@M;_gu&$#fdZuh0TI3mpR3=|@d^^9yIC`jS1Sc&lq%SwXKRzuGPhy8S z2Jn;8LSpjx{(-zKaCRdSt2`saLS3WceQZ+W!n5!;JKxBJ&|XPw{|vrUP$Vzd+Nb=% zs+5uG8{pl}z;S*|yA$xP01kAja5oI|r}#saxREMhS=@^Jz=XrU$w#Rs+4>Qq$-gM3 zO@!t8e-b~du>!bNZa25e9Q{c>4)qKeEjG_|GS3VK zV~J>Hf6Gia3$LMIG#Sm5nrBiStoR8)Gi7MZVGEUl1)`}hV3u1j`;(aAFPdYR?PJDB ztPE?;?A^b=Q(0nSh9o#BFRU!Ej29D@Q3i@fMS!2bhm%c+i%0)No{OV6Fu|#qnU~ED z4!8C5v8=~1N8wW-wBv$z5uP4(<+GmhEH{Bc+(KVKe-6wy zf0aD^Xu{UU25i5AlliVm$z8t$L*8yehyAXW_x{8=AQJl3DZps`$X2qGy-#AF8e=RHg76XNOM zNbk$fjrDkPe`HWhcz8mPf$r$+K6DVJ5BI5|Ei|-bP~X+hc9aG?x;xv3g)!X&+~F@b z&xs@AeSIa*{D*jYvs}W$+#USiuKf?!b&Maa&5E#I>sw{U*Z6Y-<}mLl<#%#o}vrW8vpWi(m(Z<2ma z7FqFM6}hdYB=nS?(o=fM-zeh$NU7^7J>~yk>5$Ktf6!BUN>Ax2J*B7gl%CR4dP+~} zDLv)yl#)-nN@=g2@_(uX_mrN}Q>@CY(o<#mW&O)0mCY=hU-n(u#j@*VKbQShPA_*X z_bB%-4=ZPvCzSUt=5U^n32z=f5|28jk;8QePf=PG^G`61dNj}*y@Y1M-2X-Y!5 zO_iv6Pu*M-T64X&p!Q&0w#H8Lu)d@I#6M83{r_8r<_#S`^j?F$VRNHHqrP#uHc>lI z`<`~I_H*qC?IrD99j0^E1?u8JxzJO3N>BNJD;S2QQFmeR8&u#I>iMFZ0W|bog@LF= zL*KLKO#ReUr(xyPX{I{e3WkCCP_LNkHdqMFjK>yhvB2121dTA&?XmHUOjF&-DT492 z`8z@>PHs0$bqeO<{>W6PVzwSdraBE{dnB0ZbSoGJ=IAlRRJXxgJsM1PTP)oIV~6>; z{cNh+W7!@fO?4-m86F=4%oIAj>E-ArLv;qIv;35(ZiD&_sBVk;N1?hMs!v6Ad%$QQ zEyPqObx77p9g=lYhh&{@1w-nPtdlw<>!c3JI;lglPU?`XlRAWTrWOAVh_^+k?r7ET zjOy!A9e$;Yv)^u1cL#MhzayybVFmAr@Q`&ctNvbS?s-)ALog)H04tavt9lrMzlrKG zsQv`i<6zw%YKCHG#lM{uEk~<P=uwZ=r)*xF;|^s6|*>$ru~)pa2+}04xsZ zDgYgbLx~MF!4`m49q5Il&45RPMJA{R4U(hb5BaG03TX}p{bqZJ08dam8Z=LfbeoRms}Y16YXmf*rd8+_ zH*sW!#ZkWj^g#VJSuEHk2OKv7E;L}K0cb%EYK>?Pj=mkV6=_rl`V?p$DVG9q34KC^ zcz{w2Me^4CTmJMSWZGZy0X?l2XsrR!#<3`XLxbehS+pCCl_HHAEK(-{S}DL!y0DYD zyD%4HGJr|`zZ@Y<^sgsM{#&Bt_kPf2r5xl5tpHXF^a1Ty1B%8ZQylmwL%6g6mm16> zy-JUC0kJ~slp=VeiFzTDUxoOEn&x7uz@|K`0%;3Jp4*1BLrP<`Sf~bJG@^)w?IxtV zMlfmwh15kgnrqgk5Gw)n1Xi+}N19MEUaBB?^z zpkCp4lgX2Cq!pEkmd1oZX~IQH4?Ph7o#Z;C%{G(=G$8J+ZT?4mX@7_N?`z50qs(^J zBOfv%&XpD)db#u@_22WAZlwb#2`P&a(KF{5J@Udfq&@fx23iz(ia(T;)U=|TR>=s` znO;e$$U2PWCR0R1Zd)v#OX7i$FmL?1jm#O%oHrpi4T#UKxab~(Y@}las;f*E{e6tT z7`IU<*FlccFb*hcl%pVxp(v8o$UX|t2W71V5auzC31`&{c_SKeq5yN75H)fIB4syo z^RHy)znKYf{}*r+nsML(7Qd_qeWb?C_E)1-q`{OyyZrRevb)*8{y4*%tygS`1B2BX zO8OV+F=`XNTI88pQ?#&=+P~~!cT&qL)YFXi5L(2m^_rnUncaZ=)5PN++ZU||-PSo^@n|a@ zK`WCSYP!Y5-^Pcsvcb;T}nA(oFaDRELrKrY^nI0|=$nN?`nxoJ{6%6_UWb zex>~`n=1fT9m+f}-+7WdBlEh^r6cp&)TJluywZJ^0p$zQUezYqU%rYe{=lkwiv|p) z{gx5Ma0B81j$5zM|E?EUuXXug_XHs%ST1Olp>NcMJtEMDgKR1VBc-5~1A22nPb7el znZ_fL#mdl{ln>xa(0WJWkb+k+XjhWC&72I2?zC4Y8rtyg8UVN(j}Du=^!6*)1|*`@Lmi!hxqfrs2r^n5->9dNh(9y6Pk1e zr7c9QE~!XMWg}^zR-q1ZK)ne3%d_ZCie5=xq*mCv>#huqcR`Wz2~4lqNOKa@BCU~) zT5@D7ILbEJQi|kwk!l(8L?MC_AcHSX0OKoBt}Rq z=J67frGKv%sC5C-3FJ#=q5Maf<5%H4f}4QL>(qFWPOCGvHL3AzoxVw@R~R)qZ9Fb$ zXuzeK+B%~Fm#PhFeT!NZk2^W#tE=_uR$S7g*2>|WLPeXd*@!pjYBfq+scUM}!#Oxa zPw?>w_?FDZrHY28Iy_&YRqB*OL2rSsPK)O^s|=8myiQ}l8?5ov==6A&rn*6+R5aiw ziU39jh~fravtFqNZ#BkNg9|3y#?_70YL!Z@!W+n5 zT%|TB^_nIqAflmC8x@)cL%dwms5anYKt-x+RA?bB1#Z+URO&{BekiW1`C~nqJJVjo zAywBlHz@RYRFOuh*FkopOVxS-~idK!b7MIl20N(L9 zTxL{g8`N!p3B3krjg6OTltv&zp+c`xYmGQJmCvitHRFwnHoO^#YJ^Iy(SZ?#0dG?4 z8#P8F%)N7Tu1m8o8fV6tv6DGt%-A+&Y}>YN+cUOp+qP}nI>}n!I{VxE?mPAwcbq@& z==9swRn=A1)%|8F8ll=CWGVztUQeN}`nBp#J#mdIL3@WX45;>(cf1uVGRP_1i z%v%8{C*Q1K?kk}!jznFCrwl3qv^xhVvst&a2$CwE zXW=~zN^O4}kdI1Wqr*y*HD_uE1H-BZ6^mMRW#SJ=ojaq_I)17tZ7--RixHSJ-``*o zVDe{{Ec~ZNLB(Dt3OKhy@+;k+aPmKYFz7pV0qleJ_W8NNK!0O1OP2ubPC7ugST?mPvg~u$_*%< zt>@_h1ZgbC@QXkx7Vz%I;e9u?;Z8sT^OY!)=4O&QiW>{(zJjD>Wq{#kl7`o1a<)z; zJ&zQ^kB~F*lHya@&a-kV=~n`8DQgWeza|@Ob8h4TUX9L$u|66a1t+2B3+01Ya>|j& zEAqZD$&Jc4z>CU?faw9sEVp3vkpMoWe}agL0tR6!bR^b0vV@+beR|ZQyl}p*und7&Sdf|# zUWoe7pJul{dc8tffTrTPHC{Pw!eSg+Edb|{LO?+v>ED948AV=U&2B#^V|Rx~KxBSU z#%%S;h!l|sCHV?L>SbaN^^fphyNLv2fy2vqD`|L(+E{xx0$mUz98_9sJ6Fk(#BL#w zQj(ETB0=zE2&bwm#o!|xY$^h43W3=lu0^>fE==m zY{srgfXbKJ1W*J(g(AF{Z5G9s=VTpRtMn5Q=$ZwfOo?DT9*C^_XON zBZa1vQjjpjZ-57xUd{U4MqaYvk;I*+m~N~ehocBU;~>iZyfH}dWGzy7WI8)6K0kTV z;m2YCC}cnkw#z9rgPH+203W$jDPw}N(3TLY)FA(u;pNF$B&!g`KrA(Klg04(@BStP z;E*Fu`oSaI$zB!J3nU-zSo00Q`wStuGBgn@D-(V*rfX=v^GXXbn=cTBd{&tW*WWhUqEx+yn zbW^@8S=N{$B$tA)L&?fAm)As)i2DJToS!^_OxQ69IQK7|ydbJSa$NlaC~Bs)q&4$L*uu+y>m!QJ7ecvRO!a%2kS967b3KlpYZ^Tt7Ga=!Ptbq{s_@&|l0 z5ipzneaLt|i-5k6X5|mV=4g=IEd^d3EM2fy{mpRE_{4%-z668EVG9i5y)y9V+<56j z=^~}Eiyt1Vpy|afyoW;?Yw?htajS0$=;!20@Cfl^t6pWG*wz)emjO_;o-x8%$_IWb z%Xe6-)vh!R0@4H<{9vnU^un=u`mQxT*h{x8vDAc=LDAqHVq)Tfyl*kFja&RAq|qOu zgfZT~=!H}G!3ld+dXT^bPcj>|GBZTZGNmeg4`Ab9ZYHR-Wl-29$vF6JS)Lt`=2A-dc+$?xRwGnK(DiTiDHnR&D|V%M0WHaUzwtp@Id+`B0vHcnisJSU)B zAdj%Ig%gr{qHW_BN-PzOtBXGrleXO(^<|an`tFiRy!7ajCPA4V`qNy=KJRY8$D^z! zl{9${`rq|3W@R>e(+ae};ks5{i|(;`Tf#PPRj-nNv}GOmu*hKq<>X-_xn_O``wk$7 zu_^YD?W(os;cju>W=f}v%7kw`f)U8m%62vw2*i8D>9=4MIq4U;@!K{fiHRi*+&(;&s8Rs94Qs|>v9l`ayUKU; z?@s#c06&J!Pr0?Sarv`R5kUFdo5ZCC9vHtHnVY+#1J=DuQe#3m4q7s=MQi<$o<7z1 zCX8{5aC{>gYrJ65k#IdFgpZOZIzZuy^~c7izOH@y&2;00X!`u*d12zWDUM^`N7$Lh z6;MaKP|r1cH$iY2=D|gfoBc7~kR@ZR!Gs4A#|4jpSMA$ag4?p`!@jd;+JH0>=$C@<%s6&BbpIbfX*3ZQgW1r<$JRa|&1# zoD0<1#xKV$k122m(6}}R)1$h_>XwqWN2y%*2752~AZa0uX-jn`8%Ys}7wytlUXI2` zlCA}2kV~8#$Fl)L)kUALoDG$fW?Yqb^4M=d)X_&a=rzRt*THGZ(M6$B@8;-DZVn4)W%V0qxxl7JSG`3$b}gO)~JS+fbm(FKh` z2YhEv+SF3rQW=r(B*lT%c6XoYi7VkweSL$Dr~P#?L8RolT&x{l(T#3O)UD+(e&+la zB2(psoLqUc$CjSmjedu9^o@rHT7y&+(n-{lp5k+TBw31~lgJD9?uGdJ<;~rK!u!w5 z(pp(?5aJDOODJnCbG=_iFz8GUe!KV`#+V+;&t}u^15MlGny}QqRPBzzF>w!ZGtwIp zFZ%M^$;tXq>9=fKtJbXg#Va+U8?8F2h0RiL%1&;h&7hn-4CoQzfrenKwkn>bUrur1R(?MexvyRAmJ zn?EXttRlB;5oHl|5lxU7`0Z(#B(k=N2M9@!UYP|DjEIQk$%FZExPI_t9VY<5HEFOs z&Y@J;414c7wI?nJ`P(M*@RKG35P}GMr{RG{puUSjz(3Mn>TUMQgD9OeTC@9zW+E|n zl7WUmM1hpaXk~OH0(}59T#NLsDxWP17Z?2TKGoin~M zCDUNFy!{00D)=ket-)xebe33RLo>vTdB-Qghe*1`!T?B_TCrXANbjt|z8!|~LQ zRJ+%A1wxYqn9*Pkh52D6ZQt$1SK0U?Ukx_HqCrOoX0e{e!ON{7Y}8QN(8S3^^|m6^0~zCG_%q-q^AViYX$9@P=1OQ6uWu4vz(Z&)B3hdabY@ zbZj%JbOCKeiWV4?nlo|0H-p7nub+;=x$;SJf2m_wE9DkBzU|xGxmOdP75hmViZUN= zhoxO0+*%vs?UEVQ{KLUan64YwuHCf-JJ*A80`sjYhXZR>*wb^DedFPKS~G*dTRz3c z(!AwjEBnetdO(KeB>UB(Ye1?r@rvX}>y5^AHE?`4-N}N18?HRl%EQ{83*V9YMRH;W z(fF*R$BYc}A{iDPW#0)@4>y=qGU*7DG4sZqjT7S$ zK3suj&2fT=qa0=FA1^U|=xMEC#zH6si(w^5i4OdI)K0kfY^2ifxAJOt>e~I1rl*yf zwy0FEHk-TOmf{uH$r}@0DViLIyML9%kF=pmu!RPYwcfgBpN2 zLhiAo@l1B6$ltpd6L}Ajb^1$y<1nXN)l@NIi?fs3f$>7ucO-C<^?;pfNsaXNaA6n63QV4JM31gD0Xj~CastDsDg0U)wO7Mk};j>&>Xy+km-aX>`| zS|WT#NA}b4&0c+9aQ)?OA&uqpUO4cDl0TLx`2%UA8Yh>hlXJ}H(~~{;AqQcwIJHE+ zvW@0L!_!ZRf9fsQt}D;nqu+TlOns!mshC|%VSi;r4sbY-e7-AQcs0+b!h!y+cG?)i z-1+E1b>mRc!BS!VwS{Y=-QL(uiua-{&-P-Fcc72rnv}x+W%j8GIY07fXj|p<%2#VxZIvd%PYI;MF5B$h-%3o9*Y>{N6TXJh3 z7Hh$<>Guu#HLFyb3$L{%5UvaFN(nX3V~!FZ)w@-yer>G!`)i6mkoBI`{mE_6~wxhhvTErieDLmR0QTRXm1>;9$6EH52di%m+g;f`*RP{XvJXPtR1I7N1vW zgy-k!&x{C;r%oRwN@8AaE>5fDTRTsWF-JVSu?n(W>y zo9KLa1?G+tZbO?s3CiXDva3eL`!NI2X-@FKvEsfpi|vFOMuIhhYZ>dsNDd;L*`4!g zX~y-?blBbO=<~rJXG=}JGCgw<%K8@rNw6txU8w5^bKCd(Vo~m=m5+?U4Sw2aZm+Pk zLE=q=xB&rit68uy&-2C)#U`G|RNn>9svn{4yHgy?X;F2=CxXY6!NW&&_y!!tYO)vjFulig zB{OCbF|4pqUU7LgQvLWj-0!qg=^Y+%UJ`lkVt+jUh-e{7#H3*PD+dQ*=e+MC)t&H0 zXX*ZK&-RT9M5@1HiSuq#MzTNRwfv0c#HzdW+Ys_dG=u`Y|)5SQV%3h5EINr&bwk zch{lTLy#1OjbmVR?{FS$N38p*2HcVL*Pa|q{Ed!UvpgE>5~qtwsfHkw!1d{&9;5g69D$bp|zF#4~mix}h9Xb*n2gDz4VKjR3 z4G&%}GO%1S4Gw&~AS}pC1XrI!id3n}4F;U>QyVxGAjJ0n_ zWNfZub#Il`&N#rPVzsy2+%NieZK%P;VI{eW-o62cs5~_H48Hw&<1(peV|yWCdTzQ| z_l_?Jc}2-^8C70nYVS2Y1boPoY{IsK@4j^`LV^VBKFe64>Uh$zA21pt+TbsG?{6SG09~*Hgbv|)5(FP4A26{6AGXveD`uI@t z4r5wJmEGp*YoyUY;8K|>k{g~$q~gR1o{zS+z}rp8kMui8Zr5-JoRG>RjGqKl;BTV6qvHiyuW>5w%Ir%N z*4-+%dn;R{ZC}zkJ!}jfo@$ajm+UC) z9;!a*YL2Z{cuxm!0ypl~4~H4GHk#Sw$;W(wLzbfsRUF61$@u>0sqE+#zRq>dZnAP#{=v47&8K^%AnokxD zGc_I^9o<*`;?S$&F)-49$^YVhwX{skcns9k|3~#p_p^REq5aF!7sdGLn3figk&)@I z`WH<@gU7(Y_!s}H|F?Jge>6X(%*-tRTl$aYmxV8y@l*aa>Z`KQ)Bi(%`eOX_`nN5{ zPg|c+fAN@A@#sIbzUJ`n?bodTnb*JK{;U5*e~3>P!9)?<<0T=ug|9 z-e{OU-O*70%h#8`zs7xKR~_#^Ee*|oEX`M%|8x1*pil1qh2{8{mA^fFh5SD(#i#yX zTL0gc;dAs?^nZK%O3r^y`xob*wEUC0|7+?0PYI^|^!%^A|KBJ0?-2i=vcLKNfBF1O z=6~5aU&;MzV(jcxg2rZc`ZiR8X4-c8{QA0s+mSKp*TS zsK5KTXxnh)ni$tGJ!@OgsA#+Ad;tIi0x$sqGEyiT8|7qQmxbdtsajZ`)IMo<(M$p4 zripMjhf&4eewk>!H}o1t^=3Ml@V@DYe;z>5-M0WZ1z*S3M^8y|b&L?^!^i;~NHE5ypxDcKz8} z2qqB82k$N_n>qHqm+sXDs4yqkdMaO5=5G=#&Oo;@y;+{dTyCnt2cViyX?WQtm{eUC@JN;I@@mWy?!`@YF= za{jjXHIec6Ru7#rn@TCbFnZlOVclhgiJa_QVgWp0zn8Sp!@X3ycc~_O{o%b4cT>X> zuh<1+Ru0IUt4nI2M)A7qs!=BcPLS}`NCO_)8#H*b2K1PuC25{DVjGuK0N|`V1Np3i z16|S1TQgzcok-h1hJ>!L!xlVe@LQoU+sD~C(V;(rz;%^x?Dafv-2N)Bo-WK6SGZv8 zdBXGxEUBK}W9=wzxLCWO==g6{U~l-?H&koxeV}FbHNE+s{ih%ILSAHk7!>T=PQpI) zg?@sE-liNlnU>>FF6TuL?%B`4e4pB${dvJi|U9La*~3DX$<{UvTQFw2!2DC}6Hm*mFgv6fvy; zU46*tM>NCiA~l*-fD+1*&iAxlvILeyb8~cx8WpMa!j27@9hnwQ7mTpyC;X$xxSG{P zj^D$H@Pbx*`k{g>QpHnb2aq{=qfM(uSwzfFezdANH754v$pVJdvv~z9L(^coZHQrc zwhpNjm&D*)lYWK?d625if z!641gWli4JhA`BD)h;VJaOYZ-7U|<;N+Bc%3r=$$=kHdoDG9oknrF-EQ!vy+*DG6B zWrL?x=5K6j?H}S&4rv+SD|@c1PdVN{d$_9ZhxO zQGL(6Cp@*)4bwS|<1I1d6E76#-%I)_QN_bAY7#C%sr>`=-k*B05`O8j2p?@qAuPjQ zswRlikAg=R348*G$mi-d5cPhsmE#&@OgWQ4Jh3UR=Sq1w`OmSKNLF&TQiy11!Y}Q! z)!W*#aY)?;K|2Ml!OUV5;<;bLy-}FZcJYC$289Cwwg<;5MZb94#zFT-XIY62^YDoc zgt`}|qSI>dZD+~^#SX0NvwG5odz(CYFwBjVM}87ddGuAPV+@?h5=B5(`*jsB^RH}1 zQBJWsWx^)rV>N7VYBfny;MT$}ucoKn2}@RZ14FZyH{hMLB`)BFWP!tJ1j(SoWWuc2(6` z%9Q^NW>*K&k^M+ixUHI*vH`?awLZYK!!+!!_AN|{Bf=i?L{*8a`?#wZ07f&i4$u@o zNI3MfObEGfPTxc`;+qRDhuI-d%L^-h9)`$Ag_+JmDT%&1VRqnTb5E$YIU#mcbE?osu83$1If6Mr@27DKLz zD~HfSyal=8bIDnXuN0}9*8Pk!A6e;AN!IkxB>RXncT?qt)sA}WmMZ$aoGN%5{|SCR zViOph@zNx~w@qoMj|X8ttb9oDE%sG@l`SfAtf9$K?dh4%!X`~Li%V`>sQjkYZ)(MpVOo}*=yJJamB5rjw!c!@-_KUhf1PEUNb(P`f)O^pG8sf1NHpm=9*9@EPE2@Q zLJPR790^p_(q+PM;M=8eu?&!uMnotsLMeSBh|Nwa?(7!$2Z^savkV?)e2E>pP$ree|ZZ5Lry+IpHs?=BlKRB9s~>M&j#pDtqbQ=Q3v zEgat=XfPVI!OTBAo{(Eq(C^+|4d|~hzErf2reK!3%|9>Mq{20CklvHKQqa|gHX*@w zMt?9I?=T#{n9jDC&YqaeMuK}66U2!IoK=H1n%oTHLt}2rtpeuOrsCwwmF=R*Wa-LU z<{7P}+L#^Z8})`%6=6pQ>FdgJsPuL($_X*+c$gKlK+}YYm%+_94>eU4F<|s+Ha=J1 zSzNOS5Nhwz9qv@%$7d3H269@!vObWizq>cY%?9w=8p__Neha&!1tYZLoq;Q6p zunvsg@m2;N(jLOHDacL7!boXm1-UX8GZ&#~0$pxwNX{O!8m5YW=4I?6ZGx3I9s*<6 zl*vLbnll1JRtGhw2iqO4s?S(3j*KR#81Ahq!abC(?3!~>^TeWRko5^w9_vDKHZqI9 zzhPt|Wdg^Y^$;}YY~xV<*m5X&_w}_nzm$G^ksY`rE{JmD{UBmEwb$d^pZ=&H`=zR- zaPkq`e+*H)Ibc4xJI%Gs*i}aGZs2(ax4dpVzuv&1?s);??1x2{cxXA$zd7q#w49Rf zAY}X??HMS+aGcS@>TORxe^4+uPI~PI=j`!v6T3Q&Q*HY)E^_`Pt9L*;O(%jg6*-8) zUcT0?5H#WdQ~3FYM^RqVa&ImEY*X$)l6eL^A*3A)VeVX8m|VP&1gRj?OpNG$hDucF zD8C@n3*W|3+{n5%qdueXMlhhNr%F>itf>bzV3DA6TNtJ9Yg@}N`R^jM(B|(iODY(Fv zq&W3Qn09nZad|yHxYEp1zNxyK@p$-`Jc?o+;kZhJaP#?saSHwO8XeZ@>^1eRq~lXl4G5t zUI!SH4%yNT*-8u9vgora&}kH)S{Pr?VkK<(R;8TB+db;4dh=#1>aCSd zt3gV(6Gt;_q@OEO0xcUr!Z6IO?=>x1BsU!I6C>+`5JVSOu}L{*NZL#h&-1UJ?>wGY(ZFRy<0#J*oPEZ@>LQ*7 zzzg}{rYclrIMHx&%$?$rOl%YJ6IuRk;Obj&uVQF=FKr=~>|q1xp;4a-7M6i;kC{~x zEUc(+bk#T?vZ-kr+`v3b4e3^JS&7wr8FGc7Y<}Yv?FdLaCH&l+MCOF76JY+^?^Z=c z<_$fw-Ds#KJ?Y)=!vO~>Ncuf>I&Q1d!57w4no_?Ug)bmxF5Q%M#1-B zac5X5^8J8bA;58n^h!jeOoUBz6*e)c$Z1&EI<$W+k?pu$6#bY(*Q8AlHUeT5K017) zyR{uMp{UWVV-2jY=Vx`C58Va{i;E8=K zP*h+iE|)gYWr|XGJZxTKZsOz*z(py%H?@0M0S!%~N%5G#Rz8eV*na%LSKm3jB+#~q zcDci~*%lF%IE}+I(5N?z6LEN=7ud&}NZzCax{1IV`)7s;5mwF`poy0su{oWJNPx|7w$&zj!?}X<6IzgV5@<^UoIMAmO?0$PMdUG8F21U@)ruZS||!^&P8O`jujFS4aUG$ z!6im39B!AP(}a3=+wjK4kS-UdsJB_IJ4Dh{vpjPHL^~)`7YFl;>m{GlHyoY}4W9*w zC@~u^te@LV^t6O{)dwNeo{1DU0~O3?a7B{1b(jc5I|KFgAwNC}S8 zj)2PiCc<1xLKcLS*K{_2WNkpz0CC5du3ny2o{PC{peugc{{ zQHctDPTYReK`%9kF82ki)Gc@9L7ey`Dz)G77`ejbr523Y`FfA>ukba;o@<^;>$VtDy7Bv zOs5I$6#Tn8#%D_H8>m^?@Ye4_9|ooQEGA6q0mjeUzxl`$B*LsvZ?h~Hy6w^S)DL$! zN5fMl2U4n51NPtzF4mIbYu#`?0N`}nnUgm@#)qk_89YEgf?cmbDX4UzHT*Yva4S;- zI&`0~3_5+A1cJQ!;B4uFjD)En@Td5Nbb`D`@gaKoAw|9?*o4W$C`*?2TQ;IhOR$Q- zC7kI2C^|4LiJs#H4z($H1Vv*JThNL`=(1=0q>4!#I@u+7!hcF~3JTm|_P#mbr}S6t z+_M&KByTdYKwKDPu;o~Vcf@pzY5^X3TLpQbeBgXQJ(oSFv%u&$#eX7c52D(y*j%_u zc>?sHy4Y1us`(iI;QjXfC#W9l62GW^4NnB)RBh4 z40(Q16=bTNC+pV{!;~nPdNAThcsmV3)xqJ<-$;!7WnSotKy_r*w`s>u89%`@^Kr8{6@Gq;J zOm??4++cNhhAg*SFIR;@Q6V~K&S6L6Al*dGda$Q`h{rrT$t#0;w<2hIBpyL5L*Ea< zJ;b_iNIrO0JJOg>C`UWRjDG5C;j3S=8pvX0apl1UZjgrWg4EhdMw^_gP@+1%2ks{N z#6a8R5kT4Z$I@$OSan34%_De0TOygNiO9XD|#Qn?Na>b(4`R zVo?R@6ZmtKT_YfDFvbLe>4OLl&(1m?{2FX)fbIsEZRPWRz6UrVVuM+(g~!iV$^y?U zFnPB1PQZ_CrCf8cLm+S9Y!|Jb_<>YS^C zK2Q|%6E)z7S9fqY=?P`zl_FH2-jv#5Zq%1i_p|V868$;E%4E* z9B^Znr!nSe056L9QYi=@);3Ck{2&L6Pu};{rpg`Fw&MCWrJzW)fT5sfKk!=49F~En zE9X0erU`ENo;Xcauo{--B%&ymdD5fOI^MN`%}*BEUv&8RKb`x-6rnay-qvQ)W-6?i zw#9#Otv3MvP8LP7%gEGKc}_^?=*0JM#?%}8Vx8p z0*h=ADNd6<5tFj6!WDe~L}=e@&M)^6Qi{Gfonz^5+CHQLKS*4}Zo2oA_s0;CNVU3G zG3iZZoVztIEPoOqlK7y+_F0^#StpGSDFyi{!?5T?umnz2aRWdk?XClYD$|wM2_5+! zS((TM>KBOszOw(YP4iG+etx{Wk)d^phEl4If>Ty(eA6DLvlhcceduAa=j22 z5`Mfr+KdVU%67JJX%@a&zr7V4OTmoh)v>k`=GpHbq{EEP0r(&V5ijNqmdB?Kt7WD2iKC{qWv*k>HgdnJikYTQRw3L~OMX#u;W7PaJW6jsSYp zRn;dcL7b{A*fbo3^)L!HA+q(7lra8jDcdB$`Ef{Qvu)c=KH=dVQxb*(oI8gCwE)}T2Mb826IpMpok5mp4%iM z{8*k?Ar6H74bQ%pDo`+y6f`~fwKwP=CPs~$EfKYVnG4;)iltg>#PfieKEs0VNNK4C zG?65Of8a1hE`9i+b#W}FXkl5k3t0!dCbG1k>!v%a* z7&Iw3N+`n#!+Q>d7#`1rv$fltJL*5b`l`eZ(s&!RUCZm*+L0-uCT+Ly&aqLwe+VK_ z*j&2oV5prrtU1({+^FZAu2O!l>TW9Wd+sunFD1PAQUJ2=XC8cm!Q)X!{vpZ}rhSN) z)oq)>=Y7>|1`?3a$%?sw1*S9j)3MXBGqNGwp|t|v1w;gf1W4nThl7T5hj)kLA}(Rg zh4_VJglvR{;i0!j%&7H9%t+jX+2XPTE2-OlS4jI8-dbEQGE;qn2)3x+GKwSmyknbn zSe%g)r=I=pI50OBbBBM#?t8c7<(ga=ph_ybGQTY$eZ=ILzqJUxzEvYAT~M$fEa_^@ zQwVon-?NBh*b%Tu162Q8+a@;~|5e zJ%2gLzAFwt?m=a^OFs=U?WJ6cKjpt#BC)g4H3`^y2HQa!d=!RmqQ3oU;(C_vq-v#y zW8IB0>IxJJU^-K5t;KrXiqud6G{2;IE1~fgVgb~{&(Xi7N)iFj*(>z~&p|HruEicTbgACh-5h6Q@!r5fYIvAmr2fs2IRKDu~B{{{YQ<023F67wB}s?5(U zt4p**E6b`S@qULBHT`b-eKOanUlg1>ly*(DlugYSvb0mvEl+sRqo7`i+IMFc2%8X zZEysRYEE0ve2u`VNptI_`L8mVUpj$hnxzdnt^4yDfoKvQm$yIdRw@ z`t%pi$@2G%#I+F>hhB$X)ntaanz%O-E2xy2p{-R( z4N!5-k!^G49OO1joAQ8`W8`PS>GHL~Ye!3hm?j0Rv#`}j%fRmP{3z97c9b~xm-(O)ywp)GMxXPaF8Z}r z*n&G<>B(}<;MNEITX`|nT+EWLUNLJ!T&y6?nM&Zut<*(I;`7e9?bKExGbU=|JK;MQ zj@WIU0XA!JdY8M&c8612r<_SPRMSAF`4MHTW$A)keVAA+UB=sL&SKGJT!&n9v=R-* zn)ox>p?N{eTvc?gK2`KcJEEY&k~Dq(7DoeO%oBtA<)pGSjSPY!7!A|hy3>@KY47<^ zGj+qg(9=W$n8BH?IhvJ~VIA_awpmG42L}wP3qqKfw;BY(v^UPHBP|xghv&(@T4tqs z`pU*&idfgBqv<0=P1cG;a&H%#tn&!RrvNbM7%*Bzd|s!^kCT%cT+r^!WwC@80(U!GB$iPFBz|2)U>Zr$g;J$ z{*JNsNW68CgnmY`yxSMu5n#()bLF%jS0)^bs+Jg@xN)yJp?HdNm~yr)I<%{Cz#q>t z6v7BiytS~nONWd}pmLpbnPS_N`M$DWLx(Y$!db5qo*2fSHZxvGuq!Djwjpz8TQJc# zZMZ?ANmYN4H*r3`)G~C6Zu_ooR|Q_POjTbpNemvdNW~i4Rx(TTfRcAjsEOIuQiWZ0 zR-OJk*{}t#cjH4qVCKaV#w55YqDDOqJz)^o(lP!9~kd}Xkh5S3b7CZ*} zPm~JX-yUh1zozsl|4bS)<0p=Wj^(Sz@P#S(^2G4j|H~uG7l)bQE9ieO|4JOgXI!+O zmTCUgGBADOe3(CZp9!F)!K3|5%%@f6PbASN#X|QtmyzbH{gTjAe~taz9!!5r7-+sQ zH=hel^NGo!rTs67`-=R3#yil^GSM^s2jGE)nVI=N10GIYoZV#Q?;o2U%9j3ch))xW z@X2KU3e78x=gj<7uS9`o2TUrO)mTM^+*c3#Q^4r^D))X#PIhLP@dyIEe{xmO=UqoV zhh}8D>I20&BtHqB(q3W|tWuv|+dW_3U)mNN7jDiu9!?MPxB)u7K;f*`YP%GFDR1n9 z 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

    ?kny??)`b{8(c7|TmV@1ZPsH^ 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 literal 854102 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

    BaIg?BcC0^oopy0uv)t;87V=-2%z}^gd|p> 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 delta 95485 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 N@H0%a*vIn${6Azcm;U|E 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